数据库系统概论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)        检索同时借阅了总编号为112266449901两本书的借书证号。

7)        查找所有借了书的读者的姓名及所在单位。

8)        找出李某所借图书的所有图书的书名及借书日期。

9)        查询199710月以后借书的读者借书证号、姓名和单位。

10)     找出借阅了FoxPro大全一书的借书证号。

11)     找出与赵正义在同一天借书的读者姓名、所在单位及借书日期 。

12)     查询19977月以后没有借书的读者借书证号、姓名及单位。

练习题3

学会利用导出的方法创建图书管理数据库并完成下面SQL高级查询:

13)     求科学出版社图书的最高单价、最低单价、平均单价。

14)     求信息系当前借阅图书的读者人次数。

15)     求出各个出版社图书的最高价格、最低价格和册数。

16)     分别找出各单位当前借阅图书的读者人数。

17)     找出当前至少借阅了2本图书的读者及所在单位。

18)     分别找出借书人次超过1人次的单位及人次数。

19)      找出藏书中各个出版单位的册数、价值总额。

20)      查询经济系是否还清所有图书。如果还清,显示该系所有读者的姓名、所在单位和职称。

1select 单位,姓名
from 读者
where 姓名 like '%'
2select distinct 书名,出版单位
from 图书
3select distinct *
from 图书
where 出版单位='高等教育出版社'
order by 单价 desc
4select  *
from 图书
where 单价 between 10.00 and 20.00
order by 出版单位,单价
5select  distinct 书名,作者
from 图书
where 书名 like '计算机%'
6select jy1.借书证号
from 借阅 jy1,借阅 jy2
where jy1.总编号='112266' and jy2.总编号='449901' and jy1.借书证号=jy2.借书证号
7select distinct 姓名,单位
from 读者,借阅
where 读者.借书证号=借阅.借书证号
8select 书名,姓名,借书日期
from 借阅,图书,读者
where 借阅.借书证号=读者.借书证号 and 图书.总编号=借阅.总编号 and 读者.姓名 like '%'
9select distinct 读者.借书证号,姓名,单位
from 借阅,读者
where 借阅.借书证号=读者.借书证号 and 借阅.借书日期>=1997-10-1
10select distinct 借阅.借书证号
from 借阅,图书
where 借阅.总编号=图书.总编号 and 图书.书名 like 'FoxPro大全'
11SELECT姓名,单位,借阅日期
FROM 读者,借阅
WHERE 借阅.借书证号=读者.借书证号 AND借阅日期 IN
SELECT 借书日期
FROM 借阅,读者
WHERE  借阅.借书证号=读者.借书证号 AND 姓名=李欣

 

12select 借书证号,姓名,单位;
   from 读者;
   where 借书证号 not in;
         (select 借书证;
          from 借阅;
          where 借书日期>={07/01/97})

 

13select 出版单位,MAX(单价) as最高价,MIN(单价)as最低;,AVG (单价)as平均价;
From 图书;
Where 出版单位=“科学出版社
14SELECT “计算机科学系借书人数:COUNTDISTINCT 借书证号)
FROM 借阅
WHERE 借书证号  IN
SELECT  借书证号
FROM  读者
WHERE 单位=计算机科学系
15SELECT 出版单位,MAX(单价),MIN(单价),AVG(单价)
FROM 图书
GROUP BY 出版单位
17SELECT 姓名,单位
FROM 读者
WHERE 借书证号 IN
SELECT 借书证号
FROM  借阅
GROUP BY  借书证号
HAVING COUNT*>=5

 

18Select 单位,count(*) as 超过1人次;
From 借阅,读者
Where 读者.借书证号=借阅.借书证号;
Group by 单位
Having count(*)>=2
19SELECT 出版单位,册数:COUNT*),总价:SUM(单价)
FROM 图书
GROUP BY 出版单位
ORDER BY SUM(单价)COUNT(*) DESC

 

20Select 姓名,单位,职称;
From 读者;
Where 单位=“经济系” and not exists
       (select *;
        from 读者,借阅;
        where 读者.借书证号=借阅.借书证号 and 单位=“经济系