数据库系统原理与设计课后习题答案.docx
- 文档编号:990340
- 上传时间:2022-10-15
- 格式:DOCX
- 页数:13
- 大小:367.61KB
数据库系统原理与设计课后习题答案.docx
《数据库系统原理与设计课后习题答案.docx》由会员分享,可在线阅读,更多相关《数据库系统原理与设计课后习题答案.docx(13页珍藏版)》请在冰豆网上搜索。
数据库系统原理与设计课后习题答案
数据库系统原理与设计课后习题答案
SETNOCOUNTON
SETDATEFORMATYMD
USEmaster
GO
--创建数据库BookDB
IFEXISTS(SELECT*FROMsysdatabasesWHEREname='BookDB')
DROPDATABASEBookDB
GO
CREATEDATABASEBookDB
GO
USEBookDB
GO
--创建图书分类表BookClass
CREATETABLEBookClass(
classNochar(3)PRIMARYKEY,/*分类号*/
classNamechar(20)NOTNULL/*分类名称*/
)
GO
--创建图书表Book
CREATETABLEBook(
bookNochar(10)PRIMARYKEY,/*图书编号*/
classNochar(3)NOTNULL/*分类号*/
FOREIGNKEYREFERENCESBookClass,
bookNamevarchar(40)NOTNULL,/*图书名称*/
authorNamechar(8)NOTNULL,/*作者姓名*/
publishingNamevarchar(20)NOTNULL,/*出版社名称*/
publishingNochar(17)NOTNULL,/*出版号*/
pricenumeric(7,2)NOTNULL,/*单价*/
publishingDatedatetimeNOTNULL,/*出版时间*/
shopDatedatetimeNOTNULL,/*入库时间*/
shopNumintNOTNULL/*入库数量*/
)
GO
--创建读者表Reader
CREATETABLEReader(
readerNochar(8)PRIMARYKEY,/*读者编号*/
readerNamechar(8)NOTNULL,/*姓名*/
sexchar
(2)NOTNULL,/*性别*/
identitycardchar(18)NOTNULL,/*身份证号*/
workUnitvarchar(50)NULL/*工作单位*/
)
GO
--创建借阅表Borrow
CREATETABLEBorrow(
readerNochar(8)NOTNULL,/*读者编号*/
bookNochar(10)NOTNULL,/*图书编号*/
borrowDatedatetimeNOTNULL,/*借阅日期*/
shouldDatedatetimeNOTNULL,/*应归还日期*/
returnDatedatetimeNULL,/*归还日期*/
FOREIGNKEY(readerNo)REFERENCESReader,
FOREIGNKEY(bookNo)REFERENCESBook,
PRIMARYKEY(readerNo,bookNo,borrowDate)
)
GO
查询1991年出生的读者姓名、工作单位和身份证号。
SELECTreaderName,workUnit,identitycard
FROMReader
WHERECONVERT(int,SUBSTRING(identitycard,7,4))=1991
查询在信息管理学院工作的读者编号、姓名和性别。
SELECTreaderNo,readerName,sex=CASEsexWHEN'M'THEN'男'WHEN'F'THEN'女'END
FROMReader
WHEREworkUnit='信息管理学院'
查询图书名中含有“数据库”的图书的详细信息。
SELECT*
FROMBook
WHEREbookNameLIKE'%数据库%'
查询吴文君老师编写的单价不低于40元的每种图书的图书编号、入库数量。
SELECTbookNo,shopNum
FROMBook
WHEREauthorName='吴文君'
ANDprice>=40
查询在2005——2008年之间入库的图书编号、出版时间、入库时间和图书名称,并按入库时间排序输出。
SELECTbookNo,bookName,publishingDate,shopDate
FROMBook
WHEREYEAR(shopDate)BETWEEN2005AND2008
ORDERBYshopDate
查询借阅了001~000029图书编号的读者编号、图书编号、借书日期。
SELECTreaderNo,bookNo,borrowDate
FROMBorrow
WHERECONVERT(int,bookNo)BETWEEN1AND29
查询没有借阅图书编号以001开头的读者编号和姓名。
SELECTreaderNo,readerName
FROMReader
WHEREreaderNoNOTIN(
SELECTreaderNo
FROMBorrow
WHEREbookNoLIKE'001%'
)
查询读者马永强借阅的图书编号、图书名称、借书日期和归还日期。
SELECT,bookName,borrowDate,returnDate
FROMBook,Borrow
WHERE=
ANDreaderNoIN(
SELECTreaderNo
FROMReader
WHEREreaderName='马永强'
)
查询会计学院没有归还图书的读者编号、读者姓名、图书名称、借书日期和应归还日期。
SELECT,readerName,bookName,borrowDate,shouldDate
FROMReader,Borrow,Book
WHERE=
AND=
ANDworkUnit='会计学院'ANDreturnDateISNULL
查询借阅了清华大学出版社出版的图书的读者编号、读者姓名、图书名称、借书日期和归还日期。
SELECT,readerName,bookName,borrowDate,returnDate
FROMReader,Borrow,Book
WHERE=
AND=
ANDpublishingName='清华大学出版社'
查询借书时间在2007——2008年之间的读者编号、姓名、图书编号、图书名称。
SELECT,readerName,,bookName
FROMReader,Borrow,Book
WHERE=
AND=
ANDYEAR(borrowDate)BETWEEN2007AND2008
查询在2005-2008年之间没有归还图书的读者编号、读者姓名、读者工作单位。
SELECTreaderNo,readerName,workUnit
FROMReader
WHEREreaderNOIN(
SELECTreaderNo
FROMBorrow
WHEREYEAR(borrowDate)BETWEEN2005AND2008
ANDreturnDateISNULL
)
查询没有借书的读者姓名(分别使用IN子查询和存在量词子查询表达)。
--useIN
SELECTreaderName
FROMReader
WHEREreaderNoNOTIN(
SELECTreaderNo
FROMBorrow
WHEREreturnDateISNULL
)
--useEXISTS
SELECTreaderName
FROMReader
WHERENOTEXISTS(
SELECT*
FROMBorrow
WHERE=
ANDreturnDateISNULL
)
查询既借阅了“离散数学”图书又借阅了“数据库系统概念”两本书的读者编号、读者姓名、借书日期和图书名称。
SELECT,readerName,borrowDate,bookName
FROMReader,Borrow,Book
WHERE=
AND=
ANDIN(
SELECTreaderNo
FROMBorrow
WHEREbookNoIN(
SELECTbookNo
FROMBook
WHEREbookName='离散数学'
)
)ANDIN(
SELECTreaderNo
FROMBorrow
WHEREbookNoIN(
SELECTbookNo
FROMBook
WHEREbookName='数据库系统概念'
)
)
查询没有借阅图书的读者编号、读者姓名和工作单位(分别使用IN子查询和存在量词子查询表达)。
--与重复
查询没有借阅“经济管理”类图书的读者编号、读者姓名和出生日期(分别使用IN子查询和存在量词子查询表达)。
--useIN
SELECTreaderNo,readerName,SUBSTRING(identitycard,7,8)ASbirthday
FROMReader
WHEREreaderNoNOTIN(
SELECTreaderNo
FROMBorrow
WHEREbookNoIN(
SELECTbookNo
FROMBook
WHEREclassNoIN(
SELECTclassNo
FROMBookClass
WHEREclassName='经济管理'
)
)
)
--useEXISTS
SELECTreaderNo,readerName,SUBSTRING(identitycard,7,8)ASbirthday
FROMReader
WHERENOTEXISTS(
SELECT*
FROMBorrow,Book
WHERE=
AND=
ANDclassNo=(
SELECTclassNo
FROMBookClass
WHEREclassName='经济管理'
)
)
查询至少与读者“马永强”所借的图书一样的读者编号、读者姓名和工作单位。
SELECTreaderNo,readerName,workUnit
FROMReaderr
WHERENOTEXISTS(
SELECT*
FROMBorrowb1
WHEREreaderNoIN(
SELECTreaderNo
FROMReader
WHEREreaderName='马永强'
)ANDreturnDateISNULL
ANDNOTEXISTS(
SELECT*
FROMBorrowb2
WHERE=
ANDreaderNo=
ANDreturnDateISNULL
)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 原理 设计 课后 习题 答案