一、课程名称:数据库原理 |
二、实验名称:实验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'); |
mysql 复合查询的结果作为条件 sql复合查询和更新
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
in mysql 复合查询 sql复合条件查询
在SQL中除了联结查询外,还有一种组合查询;组合查询是指将多条SELECT语句的结果作为一个查询结果集返回,这种查询方式通常称作为并(union)或复合查询(compound query)。
in mysql 复合查询 SQL 组合查询 结果集 数据 -
mysql复合列 mysql 复合查询
目录基本查询回顾多表查询 显示雇员名、雇员工资以及所在部门的名字两张表做笛卡尔积显示部门号为10的部门名,员工名和工资 显示各个员工的姓名,工资,及工资级别 自连接显示员工FOR
mysql复合列 数据库 mysql 子查询 多表查询 -
mysql怎么指定复合分区查询 mysql 复合查询
目录1.基本查询回顾2.多表查询 3.自连接4.子查询 1.基本查询回顾(1)查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J  
mysql怎么指定复合分区查询 mysql 数据库 sql 子查询