SQL SERVER练习题及答案
《SQL SERVER练习题及答案》由会员分享,可在线阅读,更多相关《SQL SERVER练习题及答案(4页珍藏版)》请在装配图网上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除题目1:问题描述:为管理岗位业务培训信息,建立3个表:S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄C (C#,CN ) C#,CN 分别代表课程编号、课程名称SC ( S#,C#,G )
2、0; S#,C#,G 分别代表学号、所选修的课程编号、学习成绩 1. 使用标准SQL嵌套语句查询选修课程名称为税收基础的学员学号和姓名 -实现代码:SELECT SN,SD FROM SWHERE S# IN( SELECT S# FROM C,SC WHERE C.C#=SC.C#
3、60; AND CN=N'税收基础')2. 使用标准SQL嵌套语句查询选修课程编号为C2的学员姓名和所属单位-实现代码:SELECT S.SN,S.SD FROM S,SCWHERE S.S#=SC.S# AND SC.C#='C2'3. 使用标准SQL嵌套语句查询不选修课程编号为C5的学员姓名和所属单位-实现代码:SELECT SN,SD FROM SWHERE S# NOT
4、;IN( SELECT S# FROM SC WHERE C#='C5')4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位-实现代码:SELECT SN,SD FROM SWHERE S# IN( SELECT S# FROM SC
5、60; RIGHT JOIN C ON SC.C#=C.C# GROUP BY S# HAVING COUNT(*)=COUNT(S#)5. 查询选修了课程的学员人数-实现代码:SELECT 学员人数=COUNT(DISTINCT S#) FROM SC6. 查询选修课程超过5门的学员学号和所属单位-实现代码:SELECT SN,SD FR
6、OM SWHERE S# IN( SELECT S# FROM SC GROUP BY S# HAVING COUNT(DISTINCT C#)>5)题目2问题描述:本题用到下面三个关系表:CARD 借书卡。 CNO 卡号,NAME
7、; 姓名,CLASS 班级BOOKS 图书。 BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY 库存册数 BORROW 借书记录。 CNO 借书卡号,BNO 书号,RDATE 还书日期备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。要求实现如下15个处理: 1
8、;写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束。 2 找出借书超过5本的读者,输出借书卡号及所借图书册数。 3 查询借阅了"水浒"一书的读者,输出姓名及班级。 4 查询过期未还图书,输出借阅者(卡号)、书号及还书日期。 5 查询书名包括"网络"关键词的图书,输出书号、书名、作者。 6 查询现有图书中价格最高的图书,输出书名及作者。 7
9、查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出。 8 将"C01"班同学所借图书的还期都延长一周。 9 从BOOKS表中删除当前无人借阅的图书记录。 10如果经常按书名查询图书信息,请建立合适的索引。 11在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_
10、SAVE表结构同BORROW表)。 12建立一个视图,显示"力01"班学生的借书信息(只要求显示姓名和书名)。 13查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出。 14假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句。 15对CARD表做如下修改: a. 将NAME最大列宽增加到10个字符(假定原为6个字符)。
11、 b. 为该表增加1列NAME(系名),可变长,最大20个字符。1. 写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束-实现代码:CREATE TABLE BORROW( CNO int FOREIGN KEY REFERENCES CARD(CNO), BNO int FOREIGN KEY REFERENCES
12、BOOKS(BNO), RDATE datetime, PRIMARY KEY(CNO,BNO) 2. 找出借书超过5本的读者,输出借书卡号及所借图书册数-实现代码:SELECT CNO,借图书册数=COUNT(*)FROM BORROWGROUP BY CNOHAVING COUNT(*)>53. 查询借阅了"水浒"一书的读者,输出姓名及班级-实现代码:SELECT * FROM
13、0;CARD cWHERE EXISTS( SELECT * FROM BORROW a,BOOKS b WHERE a.BNO=b.BNO AND b.BNAME=N'水浒' AND a.C
14、NO=c.CNO) 4. 查询过期未还图书,输出借阅者(卡号)、书号及还书日期-实现代码:SELECT * FROM BORROW WHERE RDATE<GETDATE() 5. 查询书名包括"网络"关键词的图书,输出书号、书名、作者-实现代码:SELECT BNO,BNAME,AUTHOR FROM BOOKSWHERE BNAME LIKE N'%网络%' 6. 查询现有图书中价格最高的图书,输出书名及作者-实现代码:SELECT
15、0;BNO,BNAME,AUTHOR FROM BOOKSWHERE PRICE=( SELECT MAX(PRICE) FROM BOOKS) 7. 查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出-实现代码:SELECT a.CNOFROM BORROW a,BOOKS bWHERE a.BNO=b.BNO AND b.BNAME=
16、N'计算方法' AND NOT EXISTS( SELECT * FROM BORROW aa,BOOKS bb WHERE aa.BNO=bb.BNO
17、; AND bb.BNAME=N'计算方法习题集' AND aa.CNO=a.CNO)ORDER BY a.CNO DESC 8. 将"C01"班同学所借图书的还期都延长一周-实现代码:UPDATE b SET RDATE=DATEADD(Day,7,b.RDATE)FROM CARD a,BORR
18、OW bWHERE a.CNO=b.CNO AND a.CLASS=N'C01' 9. 从BOOKS表中删除当前无人借阅的图书记录-实现代码:DELETE A FROM BOOKS aWHERE NOT EXISTS( SELECT * FROM BORROW WHERE BNO=a.BNO) 10. 如果经常按书
19、名查询图书信息,请建立合适的索引-实现代码:CREATE CLUSTERED INDEX IDX_BOOKS_BNAME ON BOOKS(BNAME)11. 在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)-实现代码:CREATE TRIGGER TR_SAVE ON BORROWFOR INSERT,UPDATEASIF
20、ROWCOUNT>0INSERT BORROW_SAVE SELECT i.*FROM INSERTED i,BOOKS bWHERE i.BNO=b.BNO AND b.BNAME=N'数据库技术及应用' 12. 建立一个视图,显示"力01"班学生的借书信息(只要求显示姓名和书名)-实现代码:CREATE VIEW V_VIEWASSELECT a.NAME,b.BNAMEFROM BO
21、RROW ab,CARD a,BOOKS bWHERE ab.CNO=a.CNO AND ab.BNO=b.BNO AND a.CLASS=N'力01'13. 查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出-实现代码:SELECT a.CNOFROM BORROW a,BOOKS bWHERE
22、a.BNO=b.BNO AND b.BNAME IN(N'计算方法',N'组合数学')GROUP BY a.CNOHAVING COUNT(*)=2ORDER BY a.CNO DESC 14. 假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句-实现代码:ALTER TABLE BOOKS ADD PRIMARY KEY(BNO) 15.1 将NAME最大列宽增加到10个字符(假定原为6个字符)-实现代码:ALTER TABLE CARD ALTER COLUMN NAME varchar(10) 15.2 为该表增加1列NAME(系名),可变长,最大20个字符-实现代码:ALTER TABLE CARD ADD 系名 varchar(20)【精品文档】第 4 页
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。