|
一、课程名称: 数据库原理 |
|
二、实验名称:实验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
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');
|
实验4 SQL语句——复杂查询及数据更新
于 2022-03-28 16:37:08 首次发布
















3580

被折叠的 条评论
为什么被折叠?



