实体完整性是保证关系中的每个元组都是可识别的和唯一的。是指关系数据库中所有的表都必须有主键,而且表中不允许存在如下记录。 参照完整性也称为引用完整性。现实世界中的实体之间往往存在着某种联系,在关系模型中,实体以及实体之间的联系都是用关系来表示的,这样就自然存在着关系与关系之间的引用。 用户定义的完整性也称为域完整性或语义完整性。用户定义的完整性就是针对某一具体应用领域定义的数据约束条件。它反映某一具体应用所涉及的数据必须满足应用语义的要求。
4. 利用表3-11至3-13所给的三个关系,写出实现如下查询的关系代数表达式。
(1)查询“信息管理系”学生的选课情况,列出学号、姓名、课程号和成绩。
∏Sno,Sname,Cno,Grade(σ
Sdept=‘信息管理系’(Student) SC Course)
(2)查询“VB”课程的考试情况,列出学生姓名、所在系和考试成绩。
∏Sname,Sdept,Grade(σ
Cname=‘VB’(Course) SC Student)
(3)查询考试成绩高于90分的学生的姓名、课程名和成绩。
∏Sname,Cno,Grade(σ
Grade>90(SC) Student)
(4)查询至少选修了0821103学生所选的全部课程的学生姓名和所在系。 ∏Sname, Sdept(Student (∏SNO,CNO(SC) ÷ ∏cno(σ
Sno=‘0821103’(SC))))
(5)查询至少选了“C001”和“C002”两门课程的学生姓名、所在系和所选的课程号。
∏Sname,Sdept,Cno(∏Sno(σCno =‘C001’ (SC)) Student SC) ∩
∏Sname,Sdept,Cno(∏Sno(σCno =‘C002’ (SC)) Student SC)
第4章
一、选择题
1. 下列关于SQL语言特点的叙述,错误的是 B
A.使用SQL语言访问数据库,用户只需提出做什么,而无需描述如何实现 B.SQL语言比较复杂,因此在使用上比较难
C.SQL语言可以在数据库管理系统提供的应用程序中执行,也可以在命令行方式下执行
D.使用SQL语言可以完成任何数据库操作
2. 下列所述功能中,不属于SQL语言功能的是 D
A.数据库和表的定义功能 B.数据查询功能 C.数据增、删、改功能 D.提供方便的用户操作界面功能 3. 设某职工表中有用于存放年龄(整数)的列,下列类型中最合适年龄列的是 C A.int B.smallint C.tinyint D.bit 4. 设某列的类型是char(10),存放“数据库”,占用空间的字节数是 A A.10 B.20 C.3 D.6 5. 设某列的类型是nchar(10),存放“数据库”,占用空间的字节数是 B A.10 B.20 C.3 D.6
6
6. 设某列的类型是varchar(10),存放“数据库”,占用空间的字节数是 D A.10 B.20 C.3 D.6 7. 设某列的类型是nvarchar(10),存放“abc”,占用空间的字节数是 D A.10 B.20 C.3 D.6 8. 下列约束中用于限制列的取值范围的约束是 B A.PRIMARY KEY B.CHECK C.DEFAULT D. UNIQUE 9. 下列约束中用于限制列取值不重的约束是 D A.PRIMARY KEY B.CHECK C.DEFAULT D. UNIQUE 10. 下列关于DEFAULT约束的说法,正确的是 C A.一个DEFAULT约束可用于一个表的多个列上 B.DEFAULT约束只能作为表级完整性约束 C.DEFAULT约束只能作为列级完整性约束
D.DEFAULT约束既可作为表级完整性约束也可作为列级完整性约束
二、简答题
1. SQL语言的特点是什么?具有哪些功能? 答:主要特点有:(1)一体化,(2)高度非过程化,(3)简洁,(4)可以多种方式使用。 SQL语言按其功能可分为4大部分:数据定义、数据查询、数据更改和数据控制。
2. tinyint类型定义的数据的取值范围是多少?
答:tinyint类型定义的数据的取值范围是从 0 到 255 之间的整数
3. SmallDatatime类型精确到哪个时间单位?
答:SmallDatatime类型的默认格式为:YYYY-MM-DD hh:mm:00。精确到分钟。
4. 定点小数类型numeric(p,q)中的p和q的含义分别是什么?
答:p为精度,指定可以存储的十进制数字的最大个数。q为小数位数,指定小数点右边可以存储的十进制数字的最大个数。
5. char(n)和nchar(n)中n的取值范围分别是多少?
答:char(n)中的n表示字符串的最大长度,取值范围为1~8000。 nchar(n)中的n表示字符串的最大长度,取值范围为1~4000。
6. 架构的作用是什么?
答:架构(schema,也称为模式)是数据库下的一个逻辑命名空间,可以存放表、视图等数据库对象,它是一个数据库对象的容器。
7. 写出定义如下架构的SQL语句。
(1)定义一个名为“BOOK”的架构。 CREATE SCHEMA BOOK
7
(2)为用户“Teacher”定义一个架构,架构名同用户名。 CREATE SCHEMA AUTHORIZATION Teacher
第5章
一、选择题
1. 当关系R和S进行连接操作时,如果R中的元组不满足连接条件,在连接结果中也会
将这些记录保留下来的操作是 A A.左外连接 B.右外连接 C.内连接 D.自连接
2. 设在某SELECT语句的WHERE子句中,需要对Grade列的空值进行处理。下列关于空
值的操作,错误的是 C A.Grade IS NOT NULL B.Grade IS NULL C.Grade = NULL D.NOT (Grade IS NULL) 3. 下列聚合函数中,不忽略空值的是 D
A.SUM(列名) B.MAX(列名) C.AVG(列名) D.COUNT(*) 4. SELECT … INTO …FROM语句的功能是 A
A. 将查询结果插入到一个新表中 B. 将查询结果插入到一个已建好的表中 C. 合并查询的结果
D. 向已存在的表中添加数据
5. 下列查询查询语句中,错误的是 B
A. SELECT Sno, COUNT(*) FROM SC GROUP BY Sno
B. SELECT Sno FROM SC GROUP BY Sno WHERE COUNT(*) > 3 C. SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) > 3 D. SELECT Sno FROM SC GROUP BY Sno
6. 现要利用Student表查询年龄最小的学生姓名和年龄。下列实现此功能的查询语句中,
正确的是 D
A. SELECT Sname, MIN(Sage) FROM Student
B. SELECT Sname, Sage FROM Student WHERE Sage = MIN(Sage) C. SELECT TOP 1 Sname, Sage FROM Student
D. SELECT TOP 1 Sname, Sage FROM Student ORDER BY Sage
7. 设SC表中记录成绩的列为:Grade,类型为int。若在查询成绩时,希望将成绩按‘优’、
‘良’、‘中’、‘及格’和‘不及格’形式显示,正确的Case表达式是 C A. Case Grade
When 90~100 THEN '优' When 80~89 THEN '良' When 70~79 THEN '中' When 60~69 THEN '及格' Else '不及格' End B. Case
8
When Grade between 90 and 100 THEN Grade = '优' When Grade between 80 and 89 THEN Grade = '良' When Grade between 70 and 79 THEN Grade = '中' When Grade between 60 and 69 THEN Grade = '及格' Else Grade = '不及格' End C. Case
When Grade between 90 and 100 THEN '优' When Grade between 80 and 89 THEN '良' When Grade between 70 and 79 THEN '中' When Grade between 60 and 69 THEN '及格' Else '不及格' End
D. Case Grade
When 90~100 THEN Grade = '优' When 80~89 THEN Grade = '良' When 70~79 THEN Grade = '中' When 60~69 THEN Grade = '及格' Else Grade = '不及格' End
8. 下列SQL语句中,用于更改表数据的语句是 C
A.ALTER B.SELECT C.UPDATE D.INSERT 9. 设有Teachers表,该表的定义如下:
CREATE TABLE Teachers(
Tno CHAR(8) PRIMARY KEY, Tname VARCHAR(10) NOT NULL,
Age TINYINT CHECK(Age BETWEEN 25 AND 65) )
下列插入语句中,不能正确执行的是 D
A.INSERT INTO Teachers VALUES('T100','张三',NULL)
B.INSERT INTO Teachers(Tno,Tname,Age) VALUES('T100','张三',30) C.INSERT INTO Teachers(Tno,Tname) VALUES('T100','张三') D.INSERT INTO TeachersVALUES('T100','张三') 10. 下列删除计算机系学生的修课记录的语句,正确的是 B
A.DELETE FROM SC JOIN Student b ON S.Sno = b.Sno WHERE Sdept = '计算机系'
B.DELETE FROM SC FROM SC JOIN Student b ON SC.Sno = b.Sno WHERE Sdept = '计算机系'
C.DELETE FROM Student WHERE Sdept = '计算机系' D.DELETE FROM SC WHERE Sdept = '计算机系' 11. 下列条件子句中,能够筛选出Col列中以“a”开始的所有数据的是 B
A.Where Col = 'a%'
B.Where Col like 'a%' C.Where Col = 'a_'
9
D.Where Col LIKE 'a_'
二、简答题
1. 在聚合函数中,哪个函数在统计时会忽略NULL? 答:SQL提供的统计函数包括:
COUNT(*):统计表中元组的个数。 COUNT([DISTINCT] <列名>):统计本列的列值个数,DISTINCT选项表示去掉列的重复值后再统计。
SUM(<列名>):计算列值的和值(必须是数值型列)。 AVG(<列名>):计算列值的平均值(必须是数值型列)。 MAX(<列名>):得到列值的最大值。 MIN(<列名>):得到列值的最小值。
上述函数中除COUNT(*)外,其他函数在计算过程中均忽略NULL值。
2. HAVING子句的作用是什么?
答:HAVING子句用于对分组后的统计结果再进行筛选。
3. “%”和“_”通配符的作用分别是什么? 答:_(下划线):匹配任意一个字符。%(百分号):匹配0到多个字符。
4. WHERE Age BETWEEN 20 AND 30子句,查找的Age范围是多少? 答:Age的范围是,大于等于20,小于等于30.
5. WHERE Sdept NOT IN ('CS', 'IS', 'MA'),查找的数据是什么? 答:既不是CS系、也不是IS系,还不是MA系的数据
6. 自连接与普通内连接的主要区别是什么?
答:自连接是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但在逻辑上将其看成是两张表。要让物理上的一张表在逻辑上成为两个表,必须通过为表取别名的方法。
7. 外连接与内连接的主要区别是什么?
答:在内连接操作中,只有满足连接条件的元组才能作为结果输出。而外连接也能输出那些不满足连接条件的元组的信息。
8. 相关子查询与嵌套子查询在执行上的主要区别是什么?
答:相关子查询的执行过程是从外到内,外层每扫描一个元组,内层的查询就执行一次。而嵌套子查询执行过程是从内到外,即,先执行内层查询一次,把结果集放到外层查询中,再执行外层查询一次。
9. “SELECT … INOT 表名 FROM …”语句的作用是什么? 答:这个语句将查询的结果保存到该数据库的一个新表中。
10. 对统计结果的筛选应该使用哪个子句完成?
答:对统计结果的筛选应该使用HAVING子句来完成。
10