20.
触发器是通过事件进行触发而被执行的。T 21.
表中只能有一个聚集索引,但可以有多个非聚集索引。T 22.
DELETE语句只是删除表中的数据,表本身依然存在数据库中。T 23.
恢复是利用冗余数据来重建数据库。T
24. SQL语言具有数据定义、关系规范化、数据控制的功能。F
25. SQL语言具有两种使用方式,分别称为交互式SQL和嵌入式SQL。 T 26. SQL语言中,UPDATE语句可以改变表的结构。 F 27. 关键字DESC可删除查询结果中的重复值。 F 28. 关键字DISTINCT可删除查询结果中的重复值。 T
29. 可以在一个表上创建约束条件。当一个约束条件应用于一个表时,表中的每一行都必须满足约束条件所规定的条件。 T
30. 数据库的约束条件有助于确保数据的引用完整性。 T 31. 数据库的约束条件有助于确保数据的安全性。F
32. 可以通过创建角色即权限组来简化权限管理进程。把一些权限授予一个角色,而这个角色又可以被授予多个用户。T
33. 可以通过创建角色即权限组来简化权限管理进程。把一些权限授予一个角色,而这个角色只能被授予某个用户。 F
三、填空
1.
HAVING子句与WHERE子句很相似,其区别在于:WHERE子句作用的对象是(表和视图),HAVING子句作用的对象是(组)。 2.
检索姓名字段中含有'文'的表达式为: select 姓名 like ( ‘%文%’)。 3.
11
目前最常用的数据库有层次数据库、(网状)数据库和(关系)数据库,其中(关系)数据库是目前应用最广泛的一种数据库。 4.
SQL Server中数据操作语句包括(delete )、(update )、(insert )和select语句。 5.
SQL Server的数据类型可分为(系统 )数据类型和(用户自定义 )数据类型。 6.
事务的ACID属性是指原子性、(一致性)性、(隔离性)性和(持久性)性。 7.
关系数据模型的逻辑结构是(二维表),关系中的列称为(属性),行称为(元组)。 标准答案:二维表、属性、元组 8.
ROUND( )函数的是( 四舍五入)函数。
9.
在安装MS SQL Server时,必须选择一种安全类型。如果在登录时,不需要记录用户名和登录ID,则该安全模式是( Windows认证模式)。 10.
数据定义语言是指用来创建、修改和删除各种对象的语句,是( create)、(update )和(drop )。 11.
关系数据库模型的数据操作主要包括插入、(删除 )、(更新 )和(查询 )数据。 12.
SQL Server聚合函数有最大、最小、求和、平均和计数等,它们分别( max)、(min )、(sum )、avg和count。 13.
( 存储过程)是已经存储在SQL Server服务器中的一组预编译过的Transact-SQL语句。 14.
实体之间的联系类型有三种,分别为( 一对一)、(一对多 )和(多对多 )。 15.
在SQL中,create view、alter view和drop view命令分别为( 建立)、(修改 )和(删除 )视图的命令。 16.
语句 SELECT (7+3)*4-17/(4-(8-6))+99%4 的执行结果是(35 )。 18.
职称 in ('教授', '副教授'') 与 职称 = '教授' or 职称 = '副教授' 等价吗?T
12
19.
规则必须使用一次就必须定义一次。F 20.
SQL Server 2008四个系统数据库是(master )、(model )、(msdb )和tempdb。 21.
(实体完整性)用于保证数据库中数据表的每一个特定实体的记录都是惟一的。 22.
在( Windows)身份验证模式,输入的账号必须是在2000 professional(或NT)已经建立的登录者或组。 23.
游标的操作步骤包括声明、( 打开)、处理(提取、删除或修改)、关闭和(释放 )游标。 24.
Transact-SQL语言有4部分元素组成,分别是:数据定义语言、(数据操作语言 )、(数据控制语言 )和一些附加的语言元素。 25.
(视图 )是由一个或多个数据表(基本表)或视图导出的虚拟表。
26. 用SELECT进行模糊查询时,可以使用like或not like匹配符,但要在条件值中使用(%)或(_)等通配符来配合查询。并且模糊查询只能针对( 字符)类型字段查询。 27.
触发器定义在一个表中,当在表中执行( insert)、(update )或delete操作时被触发自动执行。 28.实体之间的联系可抽象为三类,它们是(一对一 )、(一对多 )、(多对多 )。
29.(事务 )是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。 30.在SQL语言中,为了数据库的安全性,设置了对数据的存取进行控制的语句,对用户授权使用(GRANT )语句,收回所授的权限使用(REVOKE )语句。
31. E-R图一般在数据库设计的( 概念结构设计)阶段使用。
32.( 事务 )是用户定义的一个数据库操作序列,是一个不可分割的工作单位,它具有( 原子性)、(一致性 )、(独立性 )、(持久性 )四个特性。
33.若事务T对数据对象A加了S锁,则其他事务只能对数据A再加( S )锁,不能加( X )锁,直到事务T释放A上的锁。
34.表示实体及其联系的方法为(E-R图),基本图素包括(实体 )、(属性 )和(联系 )。习惯上实体用(矩形 )
13
表示,实体属性用( 椭圆形)表示,联系用(菱形 )表示。
35.在关系A(S,SN,D)和B(D,CN,NM)中,A的主键是S,B的主键是D,则D在S中称为(外键)。
四、 SQL编程练习
1.设有下列表:
STUDENT(NO,NAME,SEX,BIRTHDAY,CLASS)
TEACHER(NO,NAME,SEX,BIRTHDAY,PROF,DEPART) COURSE(CNO,CNAME,TNO) SCORE(NO,CNO,DEGREE)
其中,学生信息表STUDENT由学号(NO)、学生姓名(NAME)、性别(SEX)、出生年月日(BIRTHDAY)、班级(CLASS)组成,记录学生的情况;教师信息表TEACHER由教师号(NO)、教师姓名(NAME)、性别(SEX)、出生年月日(BIRTHDAY)、职称(FROF)、教师所在系(DEPART)组成,记录教师的情况;课程表COURSE由课程号(CNO)、课程名称(CNAME)、任课教师号(TNO)组成,记录所开课程及任课教师情况;成绩表SCORE由学生学号(NO)、课程号(CNO)、成绩(DEGREE)组成,记录学生选课情况及相应的成绩。用SQL语句实现以下操作
1) 显示STUDENT表中每个学生的姓名和出生日期。
SELECT NAME ,BIRTHDAY FROM SYUDENT 2) 显示STUDENT表中所有姓“王”的学生记录。
SELECT * FROM STUDENT WHERE NAME LIKE ‘王%’ 3) 显示成绩表中成绩在60分到80分之间的所有记录。
SELECT * FROM SCORE WHERE DEGREE BETWEEN 60 AND 80 显示“男”教师及其所上的课程。(显示该教师的姓名和所上的课程名) SELECT TEACHER.NAME COURSE.CNAME FROM TEACHER,COURSE
WHERE TEACKER.NO=COURSE.NO AND SEX=’男’ 4) 选出和“李军”同学同性别并同班的学生姓名。
SELECT NAME FROM SYUDENT
WHERE SEX=(SELECT SEX FROM STUDENT WHERE NAME=’李军’)AND CLASS=(SELECT CLASS FROM STUDENT WHERE NAME=’李军’) 6)向STUDENT表中插入一条学生记录。(学号:999,姓名:程功,性别:男,出生年月日:10/01/1995,班级: 95035)
INSERT INTO STUDENT VALUES(‘999’,’程功’,’男’,’10/01/1995’,’95035’)
7)在STUDENT表中将学号为“999”的学生的班号改为“95031”
UPDATE STUDENT SET CLASS=’95031’ WHERE NO=’999’
8)在STUDENT表中删除学号为“999”的学生记录。
DELETE FROM STUDENT WHERE NO=’999’
14
2.对于学生数据库的3个基本表
S(SNO,SNAME,AGE,SEX) SC(SNO,CNO,CNAME)
C(CNO,CNAME,TEACHER)试用SQL语句完成下列查询语句: 1) 检索LIU老师所授课程的课程号和课程名。
SELECT CNO,CNAME FROM C WHERE TEACHER=’LIU’
2) 检索年龄大于23岁的男学生的学号和姓名。
SELECT SNO,SNAME FROM S WHERE AGE>23 AND SEX=’男’
3) 检索学号为S3学生所学课程的课程名与任课教师名。
SELECT CNAME,TEACHER FROM SC,C WHERE SC.CNO=C.CNO AND SNO=’S3’
4) 检索至少选修LIU老师所授课程中一门课的女学生姓名。
SELECT SNAME FROM S,SC,C
WHERE S.SNO=SC.SNO AND SC.CNO=C.CNO AND SEX=’女’ AND TEACHER=’LIU’
5) 检索WANG同学不学的课程的课程名。
SELECT CNAME FROM C WHERE NOT EXISTS (SELECT * FROM S,SC
WHERE S.SNO=SC.SNO AND SC.CNO=C.CNO AND 6) 检索至少选修两门课的学生学号。
SELECT DISTINCT X.SNO FROM SC X,SC Y WHERE X.SNO=Y.SNO AND X.CNO!=Y.CNO 7) 检索全部学生都选修的课程的课程号与课程名。
8)检索选修课程包含LIU老师所授课程的学生学号。
15
SNAME=’WANG’)