实验目的
-
掌握SQL基本的单表和多表查询。
-
掌握SQL语句的条件查询。
-
掌握SQL语句的分组查询和排序查询。
-
掌握简单的谓词关键字的使用。
实验准备
- 打开SSMS(集成管理器),新建一个“书籍管理”的数据库,并将素材的中的ACCESS数据导入到该数据库。
access的文件后缀是mdb
分离出的文件后缀是mdf,与分离对应的是附加
备份出的文件是bak,与备份对应的是还原
- 表格结构
一共有四个表,分别是tOrder,tEmployee,tDetail,tBook
题目如下
- 新建查询,查询计算机类的图书的书籍名称、定价和出版社名称
select 数据名称,定价,出版社名称
from tBook
where 类别='计算机类'
- 查询价格在15元到25元之间的电子工业出版社的图书的书籍号、名称、定价,并分别用书籍编码、书名和价格做为显示标题
select 书籍号 书籍编码,名称 书名,定价 价格
from tBook
where 定价 between 15 and 25 and 出版社名称='电子工业出版社'
- 新建查询,查询女雇员的雇员号、姓名和年龄。将查询语句保存为sj3.sql。
select 雇员号,姓名,年龄
from tEmployee
where 性别='女'
- 新建查询,查询哪些雇员手头有订单,显示其雇员姓名(去除重复记录)。
--用到连接查询,这里是右外连接right join,左表可为null
select distinct(姓名)
from tOrder right join tEmployee on tOrder.雇员号=tEmployee.雇员号
where tOrder.订单号 is not null
- 新建查询,查询2季度订购的订单号、雇员姓名和职务。
select 订单号,姓名,职务
from tOrder inner join tEmployee on tOrder.雇员号=tEmployee.雇员号
where month(订购日期) in (4,5,6)
- 新建查询,查询原理类的图书(书名包含原理)的订单明细号、书名、定价和售出价格。
select 订单明细号,书籍名称,定价,售出价格
from tBook join tDetail on tBook.书籍号=tDetail.书籍号
where 书籍名称 like '%原理%'
- 新建查询,查询经理经手的雇员号、订单号、书籍号和订购日期,以雇员号升序排列,雇员号相同,以订单号降序排列。
--这里查询结果中的订单号应该声明是哪一个表的订单号
select 雇员号,tOrder.订单号,书籍号,订购日期
from tOrder join tDeatil on tOrder.订单号=tDetail.订单号
where 职务='经理'
order by 雇员号 asc,订单号 desc --desc降序,asc升序
- 新建查询,查询每笔订单明细的明细号、书籍名、总价。
select 订单明细号,书籍名,数量*售出单价 总价 --用到了表达式
from tDetail join tBook on tDetail.书籍号=tBook.书籍号
- 新建查询,查询工业出版社每类图书的的平均价格,显示类别名和平均价格。
select 类别,avg(单价) --单价虽然不在group by中,但其包含于聚合函数avg中
from tBook
where 出版社名称='工业出版社'
group by 类别
- 新建查询,查询每个雇员经手的的订单数量,显示雇员号和订单数量。
select 雇员号,count(*)
from tOrder
group by 雇员号
- 新建查询,查询最贵书籍的前三名,显示书名、作者、单价和出版社。
select top 3 书名,作者,单价,出版社名称
from tBook
order by 单价 desc
- 新建查询,查询下订单数最多的客户号和订单数。
select top 1 客户号,count(*)
from tOrder
group by 客户号
order by count(*) desc
- 新建查询,查询哪几笔订单的购买的书籍种类大于3,显示订单号客户号和书籍种类数。
select tOrder.订单号,客户号,类别
from tOrder join tDetail on torder.订单号=tDetail.订单号 join tBook on tDetail.书籍号=tBook.书籍号
where tOrder.订单号 in (
select 订单号
from tDetail join tBook on tDetail.书籍号=tBook.书籍号
group by 订单号
having COUNT(distinct 类别)>3)
order by tOrder.订单号
- 新建查询,查询按出生日期月份的升序显示名称为2个字雇员的姓名、性别、职称和出生日期的月份。
select 姓名,性别,职称,month(出生日期) 出生月份
from tEmployee
order by month(出生日期) asc
where len(姓名)=2
码字不易,如果觉得有帮助的话点个赞再走
如有错误,请提醒我一下哦~