一、课程名称: 数据库原理

二、实验名称:实验4 SQL语句——复杂查询及数据更新

三、实验地点与实验环境:

装有MySQL的PC机。

四、实验内容

数据查询:

1. 查询在2004年1月1日之前借书读者的编号、书名、借阅日期的信息。           

2. 查询借阅了“应用文写作”这本书的读者的编号、姓名。

3. 使用子查询求其它类别中比管理类图书总藏书量都少的类别、书名、总藏书量。   

4. 使用子查询in:找出借阅了1001号书的读者姓名,单位。

5. 使用相关子查询找出借了两本书的读者编号,姓名,单位。

6. 使用相关子查询找出每个出版社价格最贵的图书书名、出版社、价格信息。

7. 用相关子查询exists:找出没有借过书的读者编号及姓名。

数据更新:

8. 将管理类的书籍提价10%。

9. 将1009号读者的单位改为“计算机学院”。

10. 添加读者信息,读者编号:1022,姓名:李思思,单位:信息学院,性别:女。

11. 将1022号读者信息删除。

12. 1008号读者在2012年3月5号下午4点20分借了1002号图书1本,假设此图书的库存足够,请用SQL语句完成上述借书操作。

13. 1010号读者在2001年5月26日上午9点50分归还借阅的1005号图书1本,请用SQL语句完成上述还书操作。

五、实验步骤、结果或结论:

1. 查询在2004年1月1日之前借书读者的编号、书名、借阅日期的信息。

select reader_number,book_name,borrow_time

from borrow_book,book

where borrow_book.book_number=book.book_number AND

borrow_time <"2004.01.01";



select reader_number,book_name,borrow_time

FROM borrow_book natural join book

WHERE borrow_time<'2004-01-01';

2. 查询借阅了“应用文写作”这本书的读者的编号、姓名。

select reader.reader_number,name

from book,borrow_book,reader

where reader.reader_number=borrow_book.reader_number AND

      borrow_book.book_number=book.book_number AND

      book_name='应用文写作';



SELECT  reader.reader_number,name
FROM   borrow_book natural join book natural join reader
WHERE  book_name='应用文写作';
 

3. 使用子查询求其它类别中比管理类图书总藏书量都少的类别、书名、总藏书量。   

select category,book_name,book_total

from book

where book_total<ALL(select book_total

                   from book

                   where category='管理')

AND category!='管理';



select category,book_name,book_total

from book

where book_total<(select MIN(book_total)

                   from book

                   where category='管理')

AND category!='管理';

4. 使用子查询in:找出借阅了1001号书的读者姓名,单位。

select name,department

from reader

where reader_number in(select reader_number

                     from borrow_book

                     where book_number='1001');

5. 使用相关子查询找出借了两本书的读者编号,姓名,单位。

select reader_number,name,department

from reader

where reader_number in (select reader_number

                   from borrow_book

                   group by reader_number

                   having count(*)=2);

SELECT  reader_number,name,department

FROM  reader

WHERE (SELECT COUNT(reader_number)

       FROM  borrow_book

       WHERE  reader.reader_number=borrow_book.reader_number)=2;

6. 使用相关子查询找出每个出版社价格最贵的图书书名、出版社、价格信息。

select book_name,publisher,price

from book x

where price = (select MAX(price)

              from book y

              where y.publisher = x.publisher);     

7. 用相关子查询exists:找出没有借过书的读者编号及姓名。

select reader_number,name

from reader

where not exists(select *

              from borrow_book

              where reader.reader_number=borrow_book.reader_number);

更新前

8. 将管理类的书籍提价10%。

update book

set price=price*1.1

where category='管理';

9. 将1009号读者的单位改为“计算机学院”。

update reader

set department = '计算机学院'

where reader_number='1009';

10. 添加读者信息,读者编号:1022,姓名:李思思,单位:信息学院,性别:女。

insert into reader (reader_number,name,department,gender)

values ('1022', '李思思', '信息学院', '女');

11. 将1022号读者信息删除。

delete from reader

where reader_number='1022';

12. 1008号读者在2012年3月5号下午4点20分借了1002号图书1本,假设此图书的库存足够,请用SQL语句完成上述借书操作。

(1)添加借阅记录

insert into borrow_book

values('1008','1002','2012-03-05-16:20');

(2)更新库存

update book

set inventory=inventory-1

where book_number='1002';

13. 1010号读者在2001年5月26日上午9点50分归还借阅的1005号图书1本,请用SQL语句完成上述还书操作。

(1)更新库存

update book

set inventory=inventory+1

where book_number='1005';

(2)删除借阅记录

DELETE from borrow_book

WHERE book_number='1005' AND reader_number='1010';

(3)添加已还记录

insert into return_book

values('1010','1005','2001-05-26 09:50');

技术
今日推荐
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信