数据库系统概论SQL上机练习题
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
练习题
1
:
现有图书管理数据库的三个关系模式:
图书(总编号,分类号,书名,作者,出版单位,单价)
读者
(借书证号,单位,姓名,性别,职称,地址)
借阅
(借书证号,总编号,借书日期)
1.
利用
SQL Server 2000
创建图书管理库和图书、读者和借阅三个基本表的表结构:
2.
利用
SQL Server 2000
在三个表中分别插入以下所给元组:
图书
:
总编号
|
分类号
|
书名
|
作者
|
出版单位
|
单价
|
445501
|
TP3/12
|
数据库导论
|
王强
|
科学出版社
|
17.90
|
445502
|
TP3/12
|
数据库导论
|
王强
|
科学出版社
|
17.90
|
445503
|
TP3/12
|
数据库导论
|
王强
|
科学出版社
|
17.90
|
332211
|
TP5/10
|
计算机基础
|
李伟
|
高等教育出版社
|
18.00
|
112266
|
TP3/12
|
FoxBASE
|
张三
|
电子工业出版社
|
23.60
|
665544
|
TS7/21
|
高等数学
|
刘明
|
高等教育出版社
|
20.00
|
114455
|
TR9/12
|
线性代数
|
孙业
|
北京大学出版社
|
20.80
|
113388
|
TR7/90
|
大学英语
|
胡玲
|
清华大学出版社
|
12.50
|
446601
|
TP4/13
|
数据库基础
|
马凌云
|
人民邮电出版社
|
22.50
|
446602
|
TP4/13
|
数据库基础
|
马凌云
|
人民邮电出版社
|
22.50
|
446603
|
TP4/13
|
数据库基础
|
马凌云
|
人民邮电出版社
|
22.50
|
449901
|
TP4/14
|
FoxPro
大全
|
周虹
|
科学出版社
|
32.70
|
449902
|
TP4/14
|
FoxPro
大全
|
周虹
|
科学出版社
|
32.70
|
118801
|
TP4/15
|
计算机网络
|
黄力钧
|
高等教育出版社
|
21.80
|
118802
|
TP4/15
|
计算机网络
|
黄力钧
|
高等教育出版社
|
21.80
|
读者:
借书证号
|
单位
|
姓名
|
性别
|
职称
|
地址
|
111
|
信息系
|
王维利
|
女
|
教授
|
1
号楼
424
|
112
|
财会系
|
李
立
|
男
|
副教授
|
2
号楼
316
|
113
|
经济系
|
张
三
|
男
|
讲师
|
3
号楼
105
|
114
|
信息系
|
周华发
|
男
|
讲师
|
1
号楼
316
|
115
|
信息系
|
赵正义
|
男
|
工程师
|
1
号楼
224
|
116
|
信息系
|
李
明
|
男
|
副教授
|
1
号楼
318
|
117
|
计算机系
|
李小峰
|
男
|
助教
|
1
号楼
214
|
118
|
计算机系
|
许鹏飞
|
男
|
助工
|
1
号楼
216
|
119
|
计算机系
|
刘大龙
|
男
|
教授
|
1
号楼
318
|
120
|
国际贸易
|
李
雪
|
男
|
副教授
|
4
号楼
506
|
121
|
国际贸易
|
李
爽
|
女
|
讲师
|
4
号楼
510
|
122
|
国际贸易
|
王
纯
|
女
|
讲师
|
4
号楼
512
|
123
|
财会系
|
沈小霞
|
女
|
助教
|
2
号楼
202
|
124
|
财会系
|
朱
海
|
男
|
讲师
|
2
号楼
210
|
125
|
财会系
|
马英明
|
男
|
副教授
|
2
号楼
212
|
借阅:
借书证号
|
总编号
|
借书日期
|
112
|
445501
|
<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />
1997-3-19
|
125
|
332211
|
1997-2-12
|
111
|
445503
|
1997-8-21
|
112
|
112266
|
1997-3-14
|
114
|
665544
|
1997-10-21
|
120
|
114455
|
1997-11-2
|
120
|
118801
|
1997-10-18
|
119
|
446603
|
1997-12-12
|
112
|
449901
|
1997-10-23
|
115
|
449902
|
1997-8-21
|
118
|
118801
|
1997-9-10
|
练习题2:
学会利用导入的方法创建上面的数据库并用SQL完成如下查询:
1)
找出姓李的读者姓名和所在单位。
2)
列出图书库中所有藏书的书名及出版单位。
3)
查找高等教育出版社的 所有图书及单价,结果按单价降序排序。
4)
查找价格介于10元和20元之间的图书种类,结果按出版单位和单价升序排序。
5)
查找书名以计算机打头的所有图书和作者。
6)
检索同时借阅了总编号为112266和449901两本书的借书证号。
7)
查找所有借了书的读者的姓名及所在单位。
8)
找出李某所借图书的所有图书的书名及借书日期。
9)
查询1997年10月以后借书的读者借书证号、姓名和单位。
10)
找出借阅了FoxPro大全一书的借书证号。
11)
找出与赵正义在同一天借书的读者姓名、所在单位及借书日期 。
12)
查询1997年7月以后没有借书的读者借书证号、姓名及单位。
练习题3:
学会利用导出的方法创建图书管理数据库并完成下面SQL高级查询:
13)
求科学出版社图书的最高单价、最低单价、平均单价。
14)
求信息系当前借阅图书的读者人次数。
15)
求出各个出版社图书的最高价格、最低价格和册数。
16)
分别找出各单位当前借阅图书的读者人数。
17)
找出当前至少借阅了2本图书的读者及所在单位。
18)
分别找出借书人次超过1人次的单位及人次数。
19)
找出藏书中各个出版单位的册数、价值总额。
20)
查询经济系是否还清所有图书。如果还清,显示该系所有读者的姓名、所在单位和职称。
1、select 单位,姓名
from 读者
where 姓名 like '李%'
2、select distinct 书名,出版单位
from 图书
3、select distinct *
from 图书
where 出版单位='高等教育出版社'
order by 单价 desc
4、select *
from 图书
where 单价 between 10.00 and 20.00
order by 出版单位,单价
5、select distinct 书名,作者
from 图书
where 书名 like '计算机%'
6、select jy1.借书证号
from 借阅 jy1,借阅 jy2
where jy1.总编号='112266' and jy2.总编号='449901' and jy1.借书证号=jy2.借书证号
7、select distinct 姓名,单位
from 读者,借阅
where 读者.借书证号=借阅.借书证号
8、select 书名,姓名,借书日期
from 借阅,图书,读者
where 借阅.借书证号=读者.借书证号 and 图书.总编号=借阅.总编号 and 读者.姓名 like '李%'
9、select distinct 读者.借书证号,姓名,单位
from 借阅,读者
where 借阅.借书证号=读者.借书证号 and 借阅.借书日期>=1997-10-1
10、select distinct 借阅.借书证号
from 借阅,图书
where 借阅.总编号=图书.总编号 and 图书.书名 like 'FoxPro大全'
11、SELECT姓名,单位,借阅日期
FROM 读者,借阅
WHERE 借阅.借书证号=读者.借书证号 AND借阅日期 IN
( SELECT 借书日期
FROM 借阅,读者
WHERE 借阅.借书证号=读者.借书证号 AND 姓名=“李欣”)
12、select 借书证号,姓名,单位;
from 读者;
where 借书证号 not in;
(select 借书证;
from 借阅;
where 借书日期>={07/01/97})
13、select 出版单位,MAX(单价) as最高价,MIN(单价)as最低;价,AVG (单价)as平均价;
From 图书;
Where 出版单位=“科学出版社”
14、SELECT “计算机科学系借书人数:”,COUNT(DISTINCT 借书证号)
FROM 借阅
WHERE 借书证号 IN
(SELECT 借书证号
FROM 读者
WHERE 单位=“计算机科学系”)
15、SELECT 出版单位,MAX(单价),MIN(单价),AVG(单价)
FROM 图书
GROUP BY 出版单位
17、SELECT 姓名,单位
FROM 读者
WHERE 借书证号 IN
(SELECT 借书证号
FROM 借阅
GROUP BY 借书证号
HAVING COUNT(*)>=5)
18、Select 单位,count(*) as 超过1人次;
From 借阅,读者
Where 读者.借书证号=借阅.借书证号;
Group by 单位
Having count(*)>=2
19、SELECT 出版单位,“册数:”,COUNT(*),“总价:”,SUM(单价)
FROM 图书
GROUP BY 出版单位
ORDER BY SUM(单价),COUNT(*) DESC
20、Select 姓名,单位,职称;
From 读者;
Where 单位=“经济系” and not exists
(select *;
from 读者,借阅;
where 读者.借书证号=借阅.借书证号 and 单位=“经济系”)
转载于:https://blog.51cto.com/pipicool032/78402