数据库复习题(4)

2019-04-22 17:17

LOG ON

( NAME='学生选课_Log', FILENAME='E:\\ data\\学生选课_Log.LDF', SIZE=5, MAXSIZE=200, FILEGROWTH=5) (2) CREATE TABLE dbo.学生( 学号 char(4), 姓名 char(8), 性别 char(2), 年龄 int,

所在系 char (20),

PRIMARY KEY(学号) )

课程和选课表略

(3) ALTER TABLE dbo.学生 ADD

CONSTRAINT S1 PRIMARY KEY CLUSTERED; 课程和选课表的索引略

(4) ALTER TABLE dbo.学生 ADD

CONSTRAINT S2 DEFAULT('男') FOR 性别,

CONSTRAINT S3 CHECK(性别='男' or 性别='女') 2.略 3.略

第6章 SQL Server 2000 的数据查询 一、 单选题

1. SQL Server提供了4种通配符,?、%、[]、和^。若要表示一个4位的字符串,该字符串以T开头,后四位是1到5的数字,正确的表示方法是( )。 A.'T????' B.'T%' C.'T[1-5][1-5][1-5][1-5]' D.'T[12345][12345][12345][12345]' 2. 在Transact-SQL中,查询时将student表的bh列标题命名为“编号”的正确操作是( )。 A.SELECT bh 编号 B. SELECT 编号 bh FROM student FROM student

C.SELECT bh=编号 D. SELECT bh AS 编号 FROM student FROM student

第3题到第6题基于这样的3个表即学生表S、课程表C和学生选课表SC,它们的结构如下:

S(S#,SN,SEX,AGE,DEPT) C(C#,CN)

SC(S#,C#,GRADE)

其中:S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,CN为课程名,GRADE成绩

3. 查询所有比“王华”年龄大的学生姓名、年龄和性别。正确的SELECT语句是( )。 A. SELECT SN,AGE,SEX FROM S

WHERE AGE>(SELECT AGE FROM S WHERE SN='王华') B. SELECT SN,AGE,SEX FROM S WHERE AGE>ANY

( SELECT AGE FROM S WHERE SN='王华') C. SELECT SN,AGE,SEX FROM S

WHERE AGE>ALL

( SELECT AGE FROM S WHERE SN='王华') D. SELECT SN,AGE,SEX FROM S WHERE AGE>SOME

( SELECT AGE FROM S WHERE SN='王华') 4. 查询选修了课程号为“C2”的学生中成绩最高的学生的学号,正确的SELECT语句是( )。 A. SELECT S# FROM SC WHERE C#='C2' AND GRADE>=ALL ( SELECT GRADE FROM SC WHERE C#='C2') B. SELECT S# FROM SC WHERE C#='C2' AND GRADE IN

( SELECT MAX(GRADE) FROM SC WHERE C#='C2') C. SELECT S# FROM SC WHERE C#='C2' AND GRADE=

( SELECT MAX(GRADE) FROM SC WHERE C#='C2') D. SELECT S# FROM SC WHERE C#='C2' AND GRADE>=ANY ( SELECT GRADE FROM SC WHERE C#='C2') 5. 查询至少选修了两门课程的学生的姓名,正确的SELECT语句是( )。 A. SELECT S.SN FROM S JOIN SC ON S.S#=SC.S# GROUP BY S.S# HAVING COUNT(*)>=2 B. SELECT S.SN FROM S WHERE EXISTS

( SELECT S# FROM SC GROUP BY S#

HAVING COUNT(*)>2)

C. SELECT S.SN FROM S JOIN SC S1 ON S.S#=SC.S# JOIN SC S2 ON S1.S#=S2.S# WHERE S1.C#!=S2.C#

D. SELECT S.SN FROM S WHERE S# IN ( SELECT S# FROM SC GROUP BY S#

HAVING COUNT(*)>2)

6. 查询所有没有被学生选过的课程的名称,正确的SELECT语句是( )。

A. SELECT C.CN FROM C JOIN SC ON SC.C#=C.C# WHERE C.C# IS NULL

B. SELECT C.CN FROM C LEFT JOIN SC ON SC.C#=C.C# WHERE SC.C# IS NULL C. SELECT C.CN FROM SC LEFT JOIN C ON SC.C#=C.C# WHERE SC.C# IS NULL D. SELECT C.CN FROM SC RIGHT JOIN C ON SC.C#=C.C# WHERE SC.C# IS NULL

二、填空题

1. SQL Server 2000 使用了( ) 关键字,用于查询时只显示前面几行数据。

2. Transact-SQL提供了连接操作符( ) ,用于从两张或多张数据表的连接中获取数据。 3. Transact-SQL允许用户使用SELECT语句查询得到的结果记录来创建一个新数据表,创建新表使用 子句。

4. 在SELECT语句中若要使用WITH TIES选项,要则一定使用 子句。

5. 外连接包括左外连接、右外连接和全外连接。使用 外连接返回的查询结果集不仅包含符合连接条件的所有数据行,还包含相应表中的不符合连接条件的左表的数据行。使用 外连接返回的查询结果集不仅包含符合连接条件的所有数据行,还包含相应表中的不符合连接条件的右表的数据行。

三、 简答题

1. 如果想在一个查询中连接多个表(假设是N个),共需要几个连接条件? 2. 简述多重查询的实现过程。

3. 在SQL Server 2000查询分析器中书写命令对MyDB数据库完成以下操作: (1) 查询借阅了作者为“张大海”的图书的读者编号和图书编号。

(2) 查询所借的书名中包含“C语言”这三个中文字的读者的读者编号和借阅日期。 (3) 查询借阅日期与至少一位读者借阅日期相同的所有读者编号和姓名。

(4) 查询所有研究生借阅图书的情况,包括姓名、已借数量、所借书名、借期还期。 (5) 查询“蓝天出版社”出版的图书借阅情况,包括读者编号、借期、还期。用连接查询和子查询两种方法实现。

(6) 查询没有借阅“青山出版社”图书的读者编号。 第6章答案 一、多选题

1.CD 2.AD 3.AC 4.ABC 5.ACD 6.BD 二、填空题

1.TOP 2.JOIN 3.INTO 4.ORDER BY 5.左 右 四、简答题 1. 略 2. 略

3. (1)SELECT 读者编号,图书编号 FROM borrowinf JOIN books ON borrowinf.图书编号=books.编号 WHERE 作者=‘张大海’

(2)SELECT 读者编号,借期 FROM borrowinf JOIN books ON borrowinf.图书编号=books.编号

WHERE 书名 LIKE ‘%C语言%’

(3)SELECT 读者编号,姓名 FROM readers JOIN

borrowinf b1 ON b1.读者编号=readers.编号 JOIN borrowinf b2 ON b2.借期=b1.借期

WHERE b1.读者编号<>b2.读者编号

(4)SELECT 姓名,已借数量,书名,借期,还期 FROM readers JOIN borrowinf ON borrowinf.读者编号=readers.编号JOIN books ON borrowinf.图书编号=books.编号JOIN readertype ON readers.读者类型=readertype.类型编号 WHERE readertype.类型名称=‘研究生’

(5)SELECT 读者编号,借期,还期 FROM borrowinf JOIN Books ON borrowinf.图书编号=books.编号 WHERE books.出版社=‘蓝天出版社’

SELECT 读者编号,借期,还期 FROM borrowinf WHERE 图书编号 IN

( SELECT 编号 FROM books WHERE 出版社=‘蓝天出版社’) (6)SELECT 编号 FROM readers WHERE NOT EXISTS ( SELECT * FROM borrowinf JOIN

books ON borrowinf.图书编号=books.编号 JOIN

readers ON readers.编号=borrowinf.读者编号 WHERE 出版社=‘青山出版社’) 第7章 SQL Server2000 Transact-SQL编程和应用 一、 多选题

1. 下列有关批的叙述中正确的是( )。 A.批是一起提交处理的一组语句 B.通常用GO来表示一个批的结束

C.不能在一个批中引用其它批定义的变量

D.批可长可短,在批中可以执行任何T-SQL语句 2. 下列有关脚本的叙述中正确的是( )。 A.一个脚本可以包含一个或多个批 B.一个脚本就是一个多批处理文件

C.可以将脚本以文件的形式保存在存储器中

D.在企业管理器中创建一个视图的操作将自动地记录在脚本文件中 3. 下列有关变量赋值的叙述中正确的是( )。 A.使用SET语句可以给全局变量和局部变量赋值 B.一条SET语句只能给一个局部变量 C.SELECT语句可以给多个局部变量赋值

D.使用SELECT语句给局部变量赋值时,若SELECT语句的返回结果有多个值时, 该局部变量的值为NULL

4. 下列有关全局变量的叙述中正确的是( )。 A.全局变量是以@@开头的变量

B.用户不能定义全局变量,但可以使用全局变量的值 C.用户不能定义与系统全局变量同名的局部变量

D.全局变量是服务器级的变量,所以该服务器下的所有的数据库对象均可以使用 5. 下列有关用户自定义函数的叙述中正确的是( )。

A.自定义函数可以带多个输入参数,但只能返回一个值或一个表 B.自定义函数的函数体若包含多条语句则必须使用BEGIN?END语句 C.自定义函数中若要返回表,必须使用RETURNS TABLE子句 D.一个自定义函数只有一条RETURN语句 6. 下列有关存储过程的叙述中正确的是( )。 A.SQL Server中定义的过程被称为存储过程

B.存储过程可以带多个输入参数,也可以带多个输出参数 C.可以用EXECUTE(或EXEC)来执行存储过程 D.使用存储过程可以减少网络流量

7. 下列有关触发器的叙述中正确的是( )。 A.触发器是一种特殊的存储过程

B.在一个表上可以定义多个触发器,但触发器不能在视图上定义 C.触发器允许嵌套执行

D.触发器在CHECK约束之前执行

8. 下列有关临时表DELETED和INSERTED的叙述中正确的是( )。 A. DELETED表和INSERTED表的结构与触发器表相同 B.触发器表与INSERTED表的记录相同

C.触发器表与DELETED表没有共同的记录。

D.UPDATE操作需要使用DELETED和INSERTED两个表 二、 填空题 1. Transact-SQL中的变量分为局部变量与全局变量,局部变量用 开头,全局变量用 开头。 2. Transact-SQL提供了 运算符,将两个字符数据连接起来。

3. 定义在 数据库中的自定义的数据类型,将出现在所有以后新建的数据库中。定义在 数据库中的自定义数据类型,只会出现在定义它的数据库中。 4. 在WHILE循环体内可以使用BREAK和CONTINUE语句,其中 语句用于终止循环的执行, 语句用于将循环返回到WHILE开始处,重新判断条件,以决定是否重新执行新的一次循环。

5. 在Transact-SQL中,若循环体内包含多条语句时,必须用 语句括起来。

6. 在Transact-SQL中,可以使用嵌套的IF?ELSE语句来实现多分支选择,也可以使用 语句来实现多分支选择。

7. 在定义存储过程时,若有输入参数则应放在关键字AS的 说明,若有局部变量则应放在关键字AS的 定义。

8. 在存储过程中,若在参数的后面加上 ,则表明此参数为输出参数,执行该存储过程必须声明变量来接受返回值并且在变量后必须使用关键字 。

9. 在自定义函数中,语句returns int表示该函数的返回值是一个整型数据, 表示该函数的返回值是一个表。 三、 简答题

1. 存储过程、触发器及用户自定义函数各有特点,总结并讨论各适用于何处? 2. 使用存储过程有哪些好处?

3. 在数据库MyDB中完成以下操作:

(1) 定义一个数据类型:名称为“Tel_No”,类型为CHAR(10)。在readers表中增加一列“读者电话”,将“读者电话”的数据类型定义为“Tel_No”。

(2) 创建一个视图v1,该视图用来查询教师的借阅情况,要求包含:教师姓名,书名,借期,还期。

(3) 自定义一个函数fun1,该函数的返回值为表books中最便宜的书价。

(4) 自定义一个函数fun2,以图书的名称为参数,返回该书的价格。并使用该函数查看《计算机文化基础》的价格。

(5) 自定义一个函数fun3,以读者的编号为参数,返回该读者所借的书的名称及借期还期。

(6) 创建一个存储过程pro1,该存储过程用来查找表Books中最便宜的书价。

(7) 创建一个存储过程pro2,用来查询书的价格,该存储过程带一输入参数和一输出参数,输入参数用来输入图书的名称,输出参数用来返回该书的价格。

(8) 创建一个存储过程pro3,用来查询指定读者的借阅情况,该存储过程带一输入参数,用来输入读者的编号,执行该存储过程可以查询到该读者的姓名及所借的书的名称和借期还期。

(9) 在books表中建立UPDATE 触发器tr1,若更新了books表中的图书编号,则相应更新borrowinf表的图书编号。 (10) 在readers表中建立DELETE触发器tr2,当删除readers表中的记录时,若borrowinf表中有相应的借阅记录,则不允许删除该记录。

(11) 在borrowinf表中建立INSERT触发器tr3,若某位读者当天借的书已超过5本,则不允许再借了。 第七章答案


数据库复习题(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国铜镍合金行业市场调查研究报告(目录) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: