《SQL数据库基础与应用》复习题
一、单项选择题
1. 触发器可以创建在( A )中。
A. 表 B. 过程
C. 数据库 D. 函数
2. 删除表的语句是(A )。
A.DROP B.ALTER
C.UPDATE D.DELETE
3. 以下触发器是当对[表1]进行( D )操作时触发。
Create Trigger abc on 表1
For insert , update , delete
As ……
A.只是修改 B.只是插入
C.只是删除 D.修改、插入、删除
4. 4. 规则对象在使用上与( A)约束类似。
A.CHECK B.PRIMARY KEY
C.FOREIGN KEY D.UNIQU
5. 主索引可确保字段中输入值的(C )性。
A.多样 B.重复
C.唯一 D.若干
6. 关于视图下列哪一个说法是错误的(B )。
A.视图是一种虚拟表 B.视图中也保存有数据
C.视图也可由视图派生出来 D.视图是保存在SELECT查询
7. SQL Server安装程序创建4个系统数据库,下列哪个不是(C )系统数据库。
A.master B.model
C.pub D.msdb
8. 在SQL中,建立表用的命令是 ( B )。
A.CREATE SCHEMA B.CREATE TABLE
C.CREATE VIEW D.CREATE INDEX
9. SQL语言中,删除表中数据的命令是( A )。
A. DELETE B. DROP
C. CLEAR D. REMOVE
10. SQL语言中,条件“年龄BETWEEN 20 AND 30”表示年龄在20至30之间,且( A )。
A.包括20岁和30岁 B.不包括20岁和30岁
C.包括20岁但不包括30岁 D.包括30岁但不包括20岁
11. SQL Server 2000中表查询的命令是( B )。
A. USE B.SELECT C.UPDATE D.DROP
12. 用于求系统日期的函数是( B )。
A.YEAR() B.GETDATE() C.COUNT() D.SUM()
二、判断题
1. .SQL Server 2000局部变量名字必须以_________开头,而全局变量名字必须以_________开头。@、@@
2. 在SQL Server 2000中,数据库对象包括______、______、触发器、过程、列、索引、约束、规则、默认和用户自定义的数据类型等。表、视图
3. _______是由一个或多个数据表(基本表)或视图导出的虚拟表。视图
触发器定义在一个表中,当在表中执行________、________或delete操作时被触发自动执行。insert、update
4. 数据库管理系统的安全性通常包括两个方面,一是指数据________的安全性,二是指数据_______的安全性。访问、运行
5. 建立和使用________的目的是为了保证数据的完整性。约束
二、判断题
1. 创建唯一性索引的列可以有一些重复的值?N
2. ‘李逵‘>‘李鬼‘ 比较运算的结果为真吗?Y
3. SQL Server不允许字段名为汉字?N
4. SQL Server 2000不具有数据的导入与导出功能。N
5. 创建存储过程必须在企业管理器中进行。n
6. 触发器主要是通过表操作事件进行触发而被执行的。Y
7. 主键字段允许为空。N
8. SQL Server 自动为primary key约束的列建立一个索引。Y
9. SQL Server的数据库可以转换成Access数据库。Y)
10. 删除表时,表中的触发器被同时删除。Y
四、简答题
1. 什么是事务?
事务(Transaction)可以看成是由对数据库若干操作组成的一个单元,这些操作要么都完成,要么都取消(如果在操作执行过程中不能完成其中任一操作)。在SQL Server 2000中,事务是由一条或者多条Transact-SQL语句组成的一个工作单元,这些语句要么都正常执行,要么如果有其中任意一条语句执行失败被取消的话,这些语句的执行都被取消。SQL利用事务机制保证数据修改的一致性,并且在系统出错时确保数据的可恢复性。
2. 流程控制语句包括哪些语句,他们各自的作用是什么?
1. IF…ELSE是条件判断语句
2. BEGIN …END能将多个SQL语句组合成一个语句块,并视为一个单元处理
3. CASE多情况语句,将其中一个符合条件的结果表达式返回
4. WHILE…COUNTINUE…BREAK设置循环语句,COUNTINUE可以终止本次循环,开始下一次循环,BREAK中断循环,跳出循环外
5. GOTO可以使程序跳到指定的标有标识符的位置处继续执行
6. WAITFOR暂时停止执行SQL语句、语句块或者存储过程
7. RETURN无条件的终止一个查询、存储过程或批处理
3. 什么是数据库备份和恢复?
备份是指将当前的数据库系统、数据文件或日志文件复制到一个专门的备份服务器、活动磁盘或者其他能长期存储数据的介质上,作为副本。数据库备份记录了在进行备份这一操作时数据库中所有数据的状态。一旦数据库因意外而遭损坏,这些备份文件可用来恢复数据库。
4. 自定义函数与存储过程的区别是什么?
定义函数在被调用的位置上返回数据值,存储过程既不能在被调用的位置上返回数据,也不能被引用在语句当中。
五、设计题(共30分)
现有关系数据库如下:
数据库名:学生成绩数据库
学生表(班级编号,学号,姓名,性别,民族,身份证号,出生日期)
课程表(课程号,课程名)
成绩表(ID,学号,课号,分数)
用SQL语言实现下列功能的sql语句代码:
1. 在[学生成绩数据库]的[学生表]中查询年龄为20岁或22岁的学生。(5分)
2. 在[学生成绩数据库]中查询每个学生的班级编号、学号、姓名、平均分,结果按平均分降序排列,均分相同者按班级排列。(5分)
3. 创建一个视图[教学成绩表视图]显示学生的学号、姓名、课程名、分数。(5分)
4. 把张晶的民族改为“汉”、出生日期改为“1980-12-24”
班级编号 |
学号 |
姓名 |
性别 |
民族 |
身份证号 |
出生日期 |
050201 |
050201001 |
王莉欣 |
女 |
汉 |
53010219790625224 |
1979-06-25 |
050202 |
050202001 |
张晶 |
男 |
NULL |
01020319801224121 |
NULL |
1. 在学生成绩数据库的学生表中查询年龄为20岁或22岁的学生
use 教学成绩管理数据库
select 姓名, 性别, 年龄=datediff(year,出生日期,getdate())
from 学生表
where (datediff(year,出生日期,getdate())=20) or (datediff(year,出生日期,getdate())=22)
2. 在学生成绩数据库中查询每个学生的班级编号、学号、姓名、平均分,结果按平均分降序排列,均分相同者按班级排列
use 教学成绩管理数据库
select 班级编号,a.学号,a.姓名, avg(分数) 平均分
from 学生表 as a join成绩表 as b
on a.学号 = b.学号
group by 班级编号, a.学号,a.姓名
order by avg(分数) desc, 班级编号 asc
3. 创建一个视图“教学成绩表视图” 显示学生的学号、姓名、课程名、分数。
CREATE VIEW [教学成绩表视图]
AS
SELECT 学号, 姓名, 课程名, 分数
FROM 学生表, 成绩表
WHERE 学生表.学号=成绩表.学号