数据库系统原理与设计第2版 万常选版 第3章 SQL课后答案Word下载.docx

上传人:b****6 文档编号:17621079 上传时间:2022-12-07 格式:DOCX 页数:8 大小:19.48KB
下载 相关 举报
数据库系统原理与设计第2版 万常选版 第3章 SQL课后答案Word下载.docx_第1页
第1页 / 共8页
数据库系统原理与设计第2版 万常选版 第3章 SQL课后答案Word下载.docx_第2页
第2页 / 共8页
数据库系统原理与设计第2版 万常选版 第3章 SQL课后答案Word下载.docx_第3页
第3页 / 共8页
数据库系统原理与设计第2版 万常选版 第3章 SQL课后答案Word下载.docx_第4页
第4页 / 共8页
数据库系统原理与设计第2版 万常选版 第3章 SQL课后答案Word下载.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

数据库系统原理与设计第2版 万常选版 第3章 SQL课后答案Word下载.docx

《数据库系统原理与设计第2版 万常选版 第3章 SQL课后答案Word下载.docx》由会员分享,可在线阅读,更多相关《数据库系统原理与设计第2版 万常选版 第3章 SQL课后答案Word下载.docx(8页珍藏版)》请在冰豆网上搜索。

数据库系统原理与设计第2版 万常选版 第3章 SQL课后答案Word下载.docx

  FOREIGNKEYREFERENCESBookClass,bookNamevarchar(40)NOTNULL,/*图书名称*/authorNamechar(8)NOTNULL,/*作者姓名*/publishingNamevarchar(20)NOTNULL,/*出版社名称*/publishingNochar(17)NOTNULL,/*出版号*/pricenumeric(7,2)NOTNULL,/*单价*/publishingDatedatetimeNOTNULL,/*出版时间*/shopDatedatetimeNOTNULL,/*入库时间*/shopNumintNOTNULL/*入库数量*/)GO

  创建读者表ReaderCREATETABLEReader(

  readerNochar(8)PRIMARYKEY,/*读者编号*/readerNamechar(8)NOTNULL,/*读者姓名*/sexchar

(2)NOTNULL,/*性别*/identitycardchar(18)NOTNULL,/*身份证号*/workUnitvarchar(50)NULL/*工作单位*/)GO

  创建借阅表BorrowCREATETABLEBorrow(

  readerNochar(8)NOTNULL,/*读者编号*/bookNochar(10)NOTNULL,/*图书编号*/borrowDatedatetimeNOTNULL,/*借阅日期*/

  shouldDatedatetimeNOTNULL,/*应归还日期*/returnDatedatetimeNULL,/*归还日期*/FOREIGNKEY(readerNo)REFERENCESReader,FOREIGNKEY(bookNo)REFERENCESBook,PRIMARYKEY(readerNo,bookNo,borrowDate))GO

  查询1991年出生的读者姓名、工作单位和身份证号。

SELECTreaderName,workUnit,identitycardFROMReader

  WHERECONVERT(int,SUBSTRING(identitycard,7,4))=1991

  查询在信息管理学院工作的读者编号、姓名和性别。

  SELECTreaderNo,readerName,sex=CASEsexWHEN'

M'

THEN'

男'

WHEN'

F'

女'

ENDFROMReader

  WHEREworkUnit='

信息管理学院'

  查询图书名中含有“数据库”的图书的详细信息。

SELECT*FROMBook

  WHEREbookNameLIKE'

%数据库%'

  查询吴文君老师编写的单价不低于40元的每种图书的图书编号、入库数量。

SELECTbookNo,shopNumFROMBook

  WHEREauthorName='

吴文君'

ANDprice>

=40

  查询在20XX-20XX年之间入库的图书编号、出版时间、入库时间和图书名称,并按入库时间排序输出。

  SELECTbookNo,bookName,publishingDate,shopDateFROMBook

  WHEREYEAR(shopDate)BETWEEN20XXAND20XXORDERBYshopDate

  查询借阅了图书编号001-000029图书的读者姓名、图书编号、借书日期。

SELECTreaderName,bookNo,borrowDateFROMBorrow

  WHERECONVERT(int,bookNo)BETWEEN1AND29

  查询读者马永强借阅的图书编号、图书名称、借书日期和归还日期。

SELECT,bookName,borrowDate,returnDateFROMBook,Borrow

  WHERE=ANDreaderNoIN(SELECTreaderNoFROMReader

  WHEREreaderName='

马永强'

  查询会计学院没有归还所借图书的读者编号、读者姓名、图书名称、借书日期和应归还日期。

  SELECT,readerName,bookName,borrowDate,shouldDateFROMReader,Borrow,Book

  WHERE=AND=

  ANDworkUnit='

会计学院'

ANDreturnDateISNULL

  查询借阅了清华大学出版社出版的图书的读者编号、读者姓名、图书名称、借书日期和归还日期。

  SELECT,readerName,bookName,borrowDate,returnDateFROMReader,Borrow,Book

  ANDpublishingName='

清华大学出版社'

  查询借书时间在20XX-20XX年之间的读者编号、读者姓名、图书编号、图书名称。

SELECT,readerName,,bookNameFROMReader,Borrow,Book

  ANDYEAR(borrowDate)BETWEEN20XXAND20XX

  查询每种类别的图书分类号、最高价格和平均价格,并按最高价格的降序输出。

SELECTclassNo,MAX(price)ASmaxPrice,AVG(price)ASavgPriceFROMBook

  GROUPBYclassNo

  ORDERBYMAX(price)DESC

  查询图书分类号小于009号图书的入库数量。

SELECTclassNo,shopNumFROMBook

  WHEREshopNum

  (SELECTclassNo,shopNumFROMBook

  WHEREclassNo=’009’)

  查询所借图书的总价在150元以上的读者编号、读者姓名和所借图书的总价。

SELECT,readerName,SUM(price)ASmoneyFROMReader,Borrow,Book

  WHERE=AND=ANDreturnDateISNULL

  GROUPBY,readerNameHAVINGSUM(price)>

=150

  查询没有借阅图书的读者姓名和工作单位。

--useIN

  SELECTreaderName,workUnitFROMReader

  WHEREreaderNoNOTIN(SELECTreaderNoFROMBorrow

  WHEREreturnDateISNULL)

  --useEXISTS

  WHERENOTEXISTS(SELECT*FROMBorrow

  WHERE=ANDreturnDateISNULL)

  查询借阅了图书编号为001-000029图书的读者编号、读者姓名、以及他们所借图书尚未归还的所有图书的图书名称、借书日期。

  SELECTbookName,readerName,readerNo,borrowDateFROMReadera,Borrowb

  WHERE=

  ANDIN(SELECTreaderName,bookNo

  FROMBorrow

  WHERECONVERT(int,bookNo)BETWEEN1AND29)

  WHEREEXISTS(SELECT*

  ANDCONVERT(int,bookNo)BETWEEN1AND29)

  查询没有借阅图书编号以001开头的图书的读者编号、姓名以及他们所借阅图书的图书名称、借书日期。

  SELECTreaderNo,readerNameFROMReader

  WHEREbookNoLIKE'

001%'

  SELECTreaderNo,readerNameFROMReaderWHEREEXISTS(SELECT*FROMBorrow

  查询在20XX-20XX年之间借阅但没有归还图书的读者编号、读者姓名、读者工作单位以及他们所借阅过的所有图书的图书编号、图书名称和借书日期。

  SELECTreaderNo,readerName,workUnitFROMReader

  WHEREreaderNOIN(SELECTreaderNoFROMBorrow

  WHEREYEAR(borrowDate)BETWEEN20XXAND20XXANDreturnDateISNULL)

  SELECTreaderNo,readerName,workUnitFROMReaderWHEREEXISTS(SELECT*FROMBorrow

  查询既借阅了“离散数学”图书又借阅了“数据库系统概念”两本图书的读者编号、读者姓名、借书日期和图书名称。

  SELECT,readerName,borrowDate,bookNameFROMReader,Borrow,Book

  WHERE=AND=ANDIN(SELECTreaderNoFROMBorrow

  WHEREbookNoIN(  SELECTbookNo  FROMBook

  WHEREbookName='

离散数学'

  )ANDIN(SELECTreaderNoFROMBorrow

数据库系统概念'

))

  查询没有借阅“经济管理”类图书的读者编号、读者姓名和出生日期。

  SELECTreaderNo,readerName,SUBSTRING(identitycard,7,8)ASbirthdayFROMReader

  WHEREbookNoIN(SELECTbookNoFROMBook

  WHEREclassNoIN(  SELECTclassNo  FROMBookClass

  WHEREclassName='

经济管理'

)))

  WHERENOTEXISTS(

  SELECT*

  FROMBorrow,Book

  WHERE=AND=ANDclassNo=(

  SELECTclassNo  FROMBookClass

  查询至少与读者“马永强”所借的图书一样的读者编号、读者姓名和工作单位。

SELECTreaderNo,readerName,workUnitFROMReaderrWHERENOTEXISTS(SELECT*

  FROMBorrowb1WHEREreaderNoIN(SELECTreaderNoFROMReader

)ANDreturnDateISNULLANDNOTEXISTS(SELECT*

  FROMBorrowb2

  WHERE=  ANDreaderNo=  ANDreturnDateISNULL))

  查询借阅了图书类别为002号的所有图书的读者编号、读者姓名、以及他们所借阅过的所有图书的图书名称和借阅日期。

  SELECT,readerName,bookName,borrowDateFROMReader,Borrow,Book

  WHERE=AND=ANDNOTEXISTS(SELECT*FROMBook

  WHEREclassNo='

002'

  ANDNOTEXISTS(  SELECT*  FROMBorrow

  )

  WHEREreaderNo=ANDbookNo=)

  查询借阅了图书类别为002号的所有图书的读者编号、读者姓名、以及他们所借阅过的这些图书的图书名称和借阅日期。

  WHERE=AND=ANDNOTEXISTS(SELECT*FROMBook

  WHEREreaderNo=  ANDbookNo=  ))

  查询至少借阅了3本图书的读者编号、读者姓名、图书编号、图书名称,并按读者编号排序输出。

  SELECT,readerName,,bookNameFROMReader,Borrow,Book

  WHEREreturnDateISNULLGROUPBYreaderNoHAVINGCOUNT(*)>

=3)

  ORDERBY

  查询所借阅的图书总价最高的读者编号、读者姓名和出生日期。

  WHEREreaderNoIN(SELECTreaderNo

  WHERE=  ANDreturnDateISNULLGROUPBYreaderNo

  HAVINGSUM(price)>

=ALL(SELECTSUM(price)FROMBorrow,Book

  WHERE=  ANDreturnDateISNULLGROUPBYreaderNo))

  将“经济管理”类图书的单价提高10%。

UPDATEBook

  SETprice=price*WHEREclassNoIN(SELECTclassNoFROMBookClass

  对于年龄在25-35之间的读者所借阅的应归还未归还的图书,将其归还日期修改为系统当天日期。

UPDATEBorrow

  SETreturnDate=GETDATEWHEREreaderNoIN(SELECTreaderNoFROMReader

  WHERECONVERT(int,SUBSTRING(identitycard,7,4))BETWEEN25AND35)GO

  创建一个视图,该视图为所借图书的总价在150元以上的读者编号、读者姓名和所借图书的总价。

  CREATEVIEWBookView1AS

  SELECT,readerName,SUM(price)ASmoneyFROMReader,Borrow,Book

  WHERE=AND=GROUPBY,readerNameHAVINGSUM(price)>

=150GO

  创建一个视图,该视图为年龄在25-35岁之间的读者,属性列包括读者编号、读者姓名、年龄、工作单位、所借图书名称和借书日期。

CREATEVIEWBookView2AS

  SELECT,readerName,workUnit,bookName,borrowDateFROMReader,Borrow,Book

  ANDCONVERT(int,SUBSTRING(identitycard,7,4))BETWEEN25AND35GO

  创建一个视图,该视图仅包含“清华大学出版社”在20XX-20XX年出版的“计算机类”的图书基本信息。

CREATEVIEWBookView3AS

  SELECT*FROMBook

  WHEREpublishingName='

  ANDYEAR(publishingDate)IN(20XX,20XX)ANDclassNo=(

计算机类'

)GO

  对题所建立的视图进行插入、删除和更新操作。

  INSERTBookView3VALUES('

0000001'

'

001'

Linux网络技术'

王波'

机械工业出版社'

9787111216063'

28,'

20XX0701'

20XX0901'

80)DELETEBookView3WHEREbookNameLIKE'

Linux%'

UPDATEBookView3SETshopNum=shopNum-10

  将入库数量最多的图书单价下调5%。

  SETprice=price*WHEREshopNum=(

  SELECTMAX(shopNum)FROMBook)

  属性含义读者编号图书编号借阅日期应归还日期归还日期属性名readerNobookNoborrowDateshouldDatereturnDate类型字符型字符型日期型日期型日期型宽度810888小数位  图3-34借阅

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

当前位置:首页 > 高中教育 > 理化生

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

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