数据库原理实验- SQL语句基本操作(一)
实验目的
-
掌握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 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
下一篇:
mysql事务的并发带来的问题