目录
前言
本文是继续上一段实验一创建的数据库基础上完成的
主要进行数据库的查询,单表查询以及多表查询等相关内容
如有需要请访问实验一
Mysql之图书发行数据库应用系统:实验一-CSDN博客
实验二 数据库的查询实验
-
实验目的
要求学生掌握SQL语言的使用方法,熟练掌握和使用简单表的数据查询﹑数据排序和数据连接查询﹑嵌套查询等操作方法,
-
实验要求
- 检索L1从书店S1购买的图书的书号及其册数;
- 检索馆址在“上海”的图书馆及其电话号码;
- 检索L4收藏图书的书名;
- 检索S3发行的图书书名及数量;
- 检索收藏图书“数据库设计”的馆名。
- 检索没有购买上海新华书店出售的图书的图书馆号LNO。
-
实验内容及步骤
- 1.检索L1从S1购买的图书书号以及册数,我们主要查询图书发行表LBS即可
代码如下SELECT BNO, QTY FROM LBS WHERE LNO = 'L1' AND SNO = 'S1';
查询结果如下
-
2检索地址为上海的图书管以及电话只需要查找L表进行查询
代码如下
-- 检索馆址在“上海”的图书馆及其电话号码;SELECT L.LName,TEL from L where CITY ='上海';
查询结果如下
3检索L4收藏的图书名,需要多表查询,首先要查询LBS 表寻找到L4对应的BNO,然后在B表中查询对应的书名即可
代码如下
-- 检索L4收藏图书的书名;SELECT B.BNAME FROM B,lbs WHERE LBS.LNO = 'L4' and lbs.BNO = B.BNO;
SELECT B.BNAME FROM B JOIN LBS ON B.BNO = LBS.BNO WHERE LBS.LNO = 'L4';
查询结果如下
4查询书名和书数量只能在B表,所以我们先在LBS表中进行查找到对应SNO为’S3’对应的BNO对应在B表中查询
代码如下-- 检索S3发行的图书书名及数量;
select BNAME,QTY from lbs,b where lbs.BNO = b.BNO and lbs.SNO = 'S3';
SELECT B.BNAME, LBS.QTY FROM B JOIN LBS ON B.BNO = LBS.BNO WHERE LBS.SNO = 'S3';
查询结果如下
5查询收藏数据库的图书管馆名,我们需要查询L,B,LBS表,进行多表查询,首先在B表查询书名为'数据库设计',然后对应找到LBS表中对应BNO的LNO从而对应在L表中进行查询
代码如下-- 检索收藏图书“数据库设计”的馆名。
SELECT L.LName FROM L JOIN LBS ON L.LNO = LBS.LNO JOIN B ON LBS.BNO = B.BNO WHERE B.BNAME = '数据库设计';
SELECT L.LName FROM L,B,LBS WHERE B.BNAME = '数据库设计' and L.LNO = LBS.LNO and LBS.BNO = B.BNO;
查询结果如下
6查询没有主要使用not exists,即我们只要找到对应有的就可以,应为只要查询书店名为 '上海新华书店'的SNO,在LBS表中查询对应的LNO即可
其中使用select 1,SELECT 1 在子查询中并不真正关心从LBS或S表中检索什么数据,它只是检查是否存在满足某些条件的记录
代码如下-- 检索没有购买上海新华书店出售的图书的图书馆号LNO。
SELECT L.LNO FROM L WHERE NOT EXISTS ( SELECT 1 FROM LBS JOIN S ON LBS.SNO = S.SNO WHERE S.SNAME = '上海新华书店' AND LBS.LNO = L.LNO );
SELECT L.LNO FROM L WHERE NOT EXISTS ( SELECT 1 FROM LBS,S WHERE S.SNAME = '上海新华书店' AND LBS.LNO = L.LNO and LBS.SNO = S.SNO );
查询结果如下
总结
本次实验主要是数据库的查询实验,联系了SQL语句的查询技巧,从一开始单表查询,到多表查询,了解join和select 1 等新的知识,对数据库查询了解更多了。
推荐学习博客 https://xxetb.xetslk.com/s/4GgGz6