数据库原理与应用77页第三章习题3.docx

上传人:b****6 文档编号:3644591 上传时间:2022-11-24 格式:DOCX 页数:11 大小:18.96KB
下载 相关 举报
数据库原理与应用77页第三章习题3.docx_第1页
第1页 / 共11页
数据库原理与应用77页第三章习题3.docx_第2页
第2页 / 共11页
数据库原理与应用77页第三章习题3.docx_第3页
第3页 / 共11页
数据库原理与应用77页第三章习题3.docx_第4页
第4页 / 共11页
数据库原理与应用77页第三章习题3.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数据库原理与应用77页第三章习题3.docx

《数据库原理与应用77页第三章习题3.docx》由会员分享,可在线阅读,更多相关《数据库原理与应用77页第三章习题3.docx(11页珍藏版)》请在冰豆网上搜索。

数据库原理与应用77页第三章习题3.docx

数据库原理与应用77页第三章习题3

完成第三章课后第2、3、4题,写相关SQL程序,提交数据库备份文件及SQL程序代码,(如不提交附件)可直接粘贴代码提交

1、设有一图书馆数据库,包括三个表:

图书表、读者表、借阅表。

三个表的结构如表3-3、表3-4和表3-5所示。

完成以下习题。

表3-3 图书表结构

列名

说明

数据类型

约束

图书号

图书唯一的图书号

定长字符串,长度为20

主键

书名

图书的书名

变长字符串,长度为50

空值

作者

图书的编著者名

变长字符串,长度为30

空值

出版社

图书的出版社

变长字符串,长度为30

空值

单价

出版社确定的图书的单价

浮点型,FLOAT

空值

表3-4 读者表结构

列名

说明

数据类型

约束说明

读者号

读者唯一编号

定长字符串,长度为10

主键

姓名

读者姓名

定长字符串,长度为8

非空值

性别

读者性别

定长字符串,长度为2

非空值

办公电话

读者办公电话

定长字符串,长度为8

空值

部门

读者所在部门

变长字符串,长度为30

空值

表3-5 借阅表结构

列名

说明

数据类型

约束说明

读者号

读者的唯一编号

定长字符串,长度为10

外码,引用读者表的主键

图书号

图书的唯一编号

定长字符串,长度为20

外码,引用图书表的主键

借出日期

图书借出的日期

定长字符串,长度为8,为’yymmdd’

非空值

归还日期

图书归还的日期

定长字符串,长度为8,为’yymmdd’

空值

主键为:

(读者号,图书号)

(1)用SQL语句创建图书馆数据库。

C读者表tedatabase图书馆数据库;

(2)用SQL语句创建上述三个表。

use图书馆数据库

Go

c读者表tetable图书表

(图书号char(20)primarykey,

书名varchar(50),

作者varchar(30),

出版社varchar(30),

单价float

);

use图书馆数据库

go

c读者表tetable读者表

(读者号char(10)primarykey,

姓名char(8)notnull,

性别char

(2)notnull,

办公电话char(8),

部门char(30)

);

use图书馆数据库

go

createtable借阅表

(读者号char(10)notnull,

图书号char(20)notnull,

借出日期char(8)notnull,

归还日期char(8),

foreignkey(读者号)references读者表(读者号),

foreignkey(图书号)references图书表(图书号)

);

(3)基于图书馆数据库的三个表,用SQL语言完成以下各项操作:

1)给图书表增加一列“ISBN”,数据类型为CHAR(10)

altertable图书表addISBNCHAR(10);

2)为刚添加的ISBN列增加缺省值约束,约束名为ISBNDEF,缺省值为’7111085949’;

ALTERTABLE图书表

ADDCONSTRAINTISBNDEFDEFAULT'7111085949'FORISBN;

3)为读者表的’办公电话’列,添加一个CHECK约束,要求前五位’88320’,约束名为CHECKDEF。

ALTERTABLE读者表

ADDCONSTRAINTCHECKDEFCHECK(办公电话>='88320000'AND办公电话<='88320999');

4)删除图书表中ISBN列增加缺省值约束;

ALTERTABLE图书表

DROPISBNDEF;

5)删除读者表中“办公电话”列的CHECK约束;

ALTERTABLE读者表

DROPCHECKDEF;

6)删除图书表中新增的列ISBN;

ALTERTABLE图书表

DROPCOLUMNISBN;

(4)基于图书馆数据库的三个表,用SQL语言完成以下数据更新操作:

1)向读者表加入一个新读者,该读者的信息为:

(‘200197’,‘王小平’,‘男’,‘88320732’,’存中楼’)

INSERT

INTO读者表

VALUES('200197','王小平','男','88320732','信息系');

2)向借阅表插入一个借阅记录,表示读者’王小平’借阅了一本书,图书号为’TP316/ZW6’,借出日期为当天的日期,归还日期为空值。

INSERT

INTO图书表(图书号)

VALUES('TP316/ZW6');

INSERT

INTO借阅表

VALUES('200197','TP316/ZW6',convert(CHAR(8),GETDATE(),112),NULL);

3)读者’王小平’在借出上述图书后10归还该书;

UPDATE借阅表

SET归还日期=借出日期+10

WHERE图书号='TP316/ZW6';

4)当读者’王小平’按期归还图书时,删除上述借阅记录;

DELETE

FROM借阅表

WHERE读者号=(select读者号

from读者表

where姓名='王小平')

(5)针对以上三个表,用SQL语言完成以下各项查询:

1)查询全体图书的图书号,书名,作者,出版社,单价。

select图书号,书名,作者,出版社,单价

from图书表;

2)查询全体图书的信息,其中单价打8折,并且将该列设置别名为’打折价’。

select图书号,书名,作者,出版社,单价*0.8打折价

from图书表;

3)显示所有借阅者的读者号,并去掉重复行。

selectdistinct读者号

from借阅表

 

4)查询所有单价在20到30之间的图书信息。

select*

from图书表

where单价between20and30

5)查询所有单价不在20到30之间的图书信息。

select*

from图书表

where单价notbetween20and30

6)查询机械工业出版社、科学出版社、人民邮电出版社的图书信息

select*

from图书表

where出版社in('机械工业出版社','科学出版社','人民邮电出版社')

7)查询既不是机械工业出版社、也不是科学出版社出版的图书信息

select*

from图书表

where出版社notin('机械工业出版社','科学出版社')

8)查找姓名的第二个字符是’建’并且只有两三个字符的读者的读者号、姓名。

select读者号,姓名

from读者表

where姓名in('_建‘,’_建_')

9)查找姓名以’王’开头的所有读者的读者号、姓名。

select读者号,姓名

from读者表

where姓名like'王%'

10)查找姓名以’王’、’张’或’李’开头的所有读者的读者号、姓名。

select读者号,姓名

from读者表

where姓名like('王%','张%','李%')

11)查找姓名不是以’王’、’张’或’李’开头的所有读者的读者号、姓名。

select读者号,姓名

from读者表

where姓名notlike('王%','张%','李%')

12)查询无归还日期的借阅信息。

select*

from借阅表

where归还日期='null'

13)查询有归还日期的借阅信息。

select*

from借阅表

where归还日期!

='null'

14)查询单价在20元以上,30元以下的机械工业出版社出版的图书名,单价。

select书名,单价

from图书表

where(单价between20and30)and出版社='机械工业出版社'

15)查询机械工业出版社或科学出版社出版的图书名,出版社,单价。

select书名,出版社,单价

from图书表

where出版社='机械工业出版社'or出版社='科学出版社'

16)求读者的总人数

selectcount(*)总人数

from读者表

17)求借阅了图书的读者的总人数

selectcount(distinct读者号)借阅总人数

from借阅表

18)求机械工业出版社图书的平均价格、最高价、最低价。

selectAVG(单价)avg,MAX(单价)max,MIN(单价)min

from图书表

where出版社='机械工业出版社'

19)查询借阅图书本数超过2本的读者号、总本数。

并按借阅本数值从大到小排序。

select读者号,COUNT(图书号)总本数

from借阅表

Groupby读者号

havingCOUNT(图书号)>2

orderby(count(图书号))desc

(6)针对以上三个表,用SQL语言完成以下各项多表连接查询、子查询、组合查询

1)查询读者的基本信息以及他/她借阅的情况。

select读者表.*,借阅表.图书号,借阅表.归还日期,借阅表.借出日期

from读者表,借阅表

where读者表.读者号=借阅表.读者号

2)查询读者的读者号、姓名、借阅的图书名、借出日期、归还日期。

select借阅表.图书号,读者表.姓名,图书表.书名,借阅表.归还日期,借阅表.借出日期

from读者表,借阅表,图书表

where读者表.读者号=借阅表.读者号and图书表.图书号=借阅表.图书号

3)查询借阅了机械工业出版社出版,并且书名中包含’数据库’三个字的图书的读者,显示读者号、姓名、书名、出版社,借出日期、归还日期。

select读者表.读者号,读者表.姓名,图书表.书名,借阅表.归还日期,借阅表.借出日期

from读者表,借阅表,图书表

where图书表.书名like'%数据库%'and出版社='机械工业出版社'and读者表.读者号=借阅表.读者号and图书表.图书号=借阅表.图书号

4)查询至少借阅过1本机械工业出版社出版的书的读者的读者号、姓名、书名,借阅本数,并按借阅本数多少降序排列。

select借阅表.读者号,读者表.姓名,书名,COUNT(借阅表.图书号)本数

from图书表,读者表,借阅表

where读者表.读者号=借阅表.读者号and图书表.图书号=借阅表.图书号and

图书表.图书号='机械工业出版社'

Groupby借阅表.读者号,姓名,书名

havingCOUNT(书名)>=1

orderbyCOUNT(借阅表.图书号)desc

5)查询与’王平’的办公电话相同的读者的姓名。

selectr1.姓名

from读者表r1,读者表r2

wherer1.姓名='王平'andr1.办公电话=r2.办公电话

6)查询办公电话为’88320701’的所有读者的借阅情况,要求包括借阅了书籍的读者和没有借阅的读者,显示他们的读者号、姓名、书名、借阅日期。

select读者表.读者号,姓名,书名,借出日期

from图书表,读者表,借阅表

where办公电话='88320701'and读者表.读者号=借阅表.读者号

and图书表.图书号=借阅表.图书号

7)查询所有单价小于平均单价的图书号、书名、出版社

select图书号,书名,出版社

from图书表

where单价<(selectAVG(单价)

from图书表

8)查询’科学出版社’的图书中单价比’机械工业出版社’最高单价还高的的图书书名、单价。

select书名,单价

from图书表

where出版社='科学出版社'and单价>(selectMAX(单价)

rom图书表

where出版社='机械工业出版社')

9)查询'科学出版社'的图书中单价比'机械工业出版社'最低单价高的的图书书名、单价。

select书名,单价

from图书表

where出版社='科学出版社'and单价>(selectMin(单价)

from图书表

where出版社='机械工业出版社')

10)查询已被借阅过并已归还的图书信息。

select*

from图书表

where图书号in(select图书号

from借阅表

where归还日期isnotnull)

11)查询从未被借阅过的图书信息。

select*

from图书表

where图书号notin(select图书号

from借阅表

12)查询正在借阅的图书信息。

select*

from图书表

where图书号in(select图书号

from借阅表

where借出日期notlike'null'and归还日期likenull

13)查询借阅了机械工业出版社出版的书名中含有数'据库书'三个字的图书、或者借阅了科学出版社出版的书名中含有数'据库书'三个字的图书的读者姓名、书名。

select姓名,书名

from图书表,读者表,借阅表

where书名like'%数据库%'and读者表.读者号in(select借阅表.读者号

from借阅表,图书表

where出版社='机械工业出版社'or出版社='科学出版社'

14)查询借阅了机械工业出版社出版的书名中含有数'据库书'三个字的图书并且也借阅了科学出版社出版的书名中含有数'据库书'三个字的图书的读者姓名、书名。

select姓名,书名

from图书表,读者表,借阅表

where书名='%数据库%'and读者表.读者号in(select借阅表.读者号

from借阅表r1,借阅表r2,图书表

wherer1.读者号=r2.读者号and图书表.图书号=借阅表.图书号

and出版社='机械工业出版社'and出版社='科学出版社'

15)查询借阅了机械工业出版社出版的书名中含有数'据库书'三个字的图书但没有借阅了科学出版社出版的书名中含有数'据库书'三个字的图书的读者姓名、书名。

select姓名,书名

from图书表,读者表,借阅表

where书名like'%数据库%'and读者表.读者号in(select借阅表.读者号

from借阅表,图书表

where借阅表.图书号=图书表.图书号

and出版社='机械工业出版社'

and图书表.图书号in(select借阅表.读者号

from借阅表,图书表

where图书表.图书号=借阅表.图书号

and书名like'%数据库%'

and出版社='科学出版社')

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1