数据库系统原理与设计课后习题答案

时间:2026-01-17

SET NOCOUNT ON

SET DATEFORMAT YMD

USE master

GO

--创建数据库BookDB

IF EXISTS(SELECT * FROM sysdatabases WHERE name='BookDB') DROP DATABASE BookDB

GO

CREATE DATABASE BookDB

GO

USE BookDB

GO

--创建图书分类表BookClass

CREATE TABLE BookClass(

classNo char(3) PRIMARY KEY, /*分类号*/ className char(20) NOT NULL /*分类名称*/

)

GO

--创建图书表Book

CREATE TABLE Book(

bookNo char(10) PRIMARY KEY, /*图书编号*/ classNo char(3) NOT NULL /*分类号*/

FOREIGN KEY REFERENCES BookClass, bookName varchar(40) NOT NULL, /*图书名称*/ authorName char(8) NOT NULL, /*作者姓名*/ publishingName varchar(20) NOT NULL, /*出版社名称*/ publishingNo char(17) NOT NULL, /*出版号*/

price numeric(7,2) NOT NULL, /*单价*/ publishingDate datetime NOT NULL, /*出版时间*/ shopDate datetime NOT NULL, /*入库时间*/ shopNum int NOT NULL /*入库数量*/

)

GO

--创建读者表Reader

CREATE TABLE Reader(

readerNo char(8) PRIMARY KEY, /*读者编号*/ readerName char(8) NOT NULL, /*姓名*/

sex char(2) NOT NULL, /*性别*/ identitycard char(18) NOT NULL, /*身份证号*/ workUnit varchar(50) NULL /*工作单位*/

)

GO

--创建借阅表Borrow

CREATE TABLE Borrow(

readerNo char(8) NOT NULL, /*读者编号*/

bookNo char(10) NOT NULL, /*图书编号*/

borrowDate datetime NOT NULL, /*借阅日期*/

shouldDate datetime NOT NULL, /*应归还日期*/

returnDate datetime NULL, /*归还日期*/

FOREIGN KEY(readerNo) REFERENCES Reader,

FOREIGN KEY(bookNo) REFERENCES Book,

PRIMARY KEY(readerNo,bookNo,borrowDate)

)

GO

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

SELECT readerName,workUnit,identitycard

FROM Reader

WHERE CONVERT(int,SUBSTRING(identitycard,7,4))=1991

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

SELECT readerNo,readerName,sex=CASE sex WHEN 'M' THEN '男' WHEN 'F' THEN '女' END FROM Reader

WHERE workUnit='信息管理学院'

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

SELECT *

FROM Book

WHERE bookName LIKE '%数据库%'

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

SELECT bookNo,shopNum

FROM Book

WHERE authorName='吴文君'

AND price>=40

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

SELECT bookNo,bookName,publishingDate,shopDate

FROM Book

WHERE YEAR(shopDate) BETWEEN 2005 AND 2008

ORDER BY shopDate

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

SELECT readerNo,bookNo,borrowDate

FROM Borrow

WHERE CONVERT(int, bookNo) BETWEEN 1 AND 29

查询没有借阅图书编号以001开头的读者编号和姓名。

SELECT readerNo,readerName

FROM Reader

WHERE readerNo NOT IN(

SELECT readerNo

FROM Borrow

WHERE bookNo LIKE '001%'

)

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

SELECT ,bookName,borrowDate,returnDate

FROM Book,Borrow

WHERE =

AND readerNo IN(

SELECT readerNo

FROM Reader

WHERE readerName='马永强'

)

查询会计学院没有归还图书的读者编号、读者姓名、图书名称、借书日期和应归还日期。SELECT ,readerName,bookName,borrowDate,shouldDate

FROM Reader,Borrow,Book

WHERE =

AND =

AND workUnit='会计学院' AND returnDate IS NULL

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

SELECT ,readerName,bookName,borrowDate,returnDate

FROM Reader,Borrow,Book

WHERE =

AND =

AND publishingName='清华大学出版社'

查询借书时间在2007——2008年之间的读者编号、姓名、图书编号、图书名称。SELECT ,readerName,,bookName

FROM Reader,Borrow,Book

WHERE =

AND =

AND YEAR(borrowDate) BETWEEN 2007 AND 2008

查询在2005-2008年之间没有归还图书的读者编号、读者姓名、读者工作单位。SELECT readerNo,readerName,workUnit

FROM Reader

WHERE readerNO IN(

SELECT readerNo

FROM Borrow

WHERE YEAR(borrowDate) BETWEEN 2005 AND 2008

AND returnDate IS NULL

)

查询没有借书的读者姓名(分别使用IN子查询和存在量词子查询表达)。

--use IN

SELECT readerName

FROM Reader

WHERE readerNo NOT IN(

SELECT readerNo

FROM Borrow

WHERE returnDate IS NULL

)

--use EXISTS

SELECT readerName

FROM Reader

WHERE NOT EXISTS(

SELECT *

FROM Borrow

WHERE =

AND returnDate IS NULL

)

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

SELECT ,readerName,borrowDate,bookName

FROM Reader,Borrow,Book

WHERE =

AND =

AND IN(

SELECT readerNo

FROM Borrow

WHERE bookNo IN(

SELECT bookNo

FROM Book

WHERE bookName='离散数学'

)

) AND IN(

SELECT readerNo

FROM Borrow

WHERE bookNo IN(

SELECT bookNo

FROM Book

WHERE bookName='数据库系统概念'

)

)

查询没有借阅图书的读者编号、读者姓名和工作单位(分别使用IN子查询和存在量词子查询表达)。

--与重复

…… 此处隐藏:4984字,全部文档内容请下载后查看。喜欢就下载吧 ……
数据库系统原理与设计课后习题答案.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219