学习完了数据库的基本语法,上机实验也要开始了,在我上一篇关于sql server排序规则排查错误博客中,学习到了很多,具体可以点击此处。
下面开始上机实验,因为数据库的实验大多是查询语法,故这里将每一行代码写出,顺便对几个新颖的关键词做一些解释。
对于数据库与表的创建见文章末尾,这里就不再多谈,下面就直接开始我们的22个查询语句吧
使用的教材是《数据库原理与技术——基于sql server2012》李春葆 著。
如果遇到排序规则冲突的情况(一般在SSMS上不会发生),请在条件输入:COLLATE Chinese_PRC_CI_AS
完成不易,你的三连就是我创作的最大动力!
有好的方法欢迎交流,以下思路方法均为个人思路,不一定是最优解!
22个查询语句:

1.查询图书品种的总数目

-- T1
select count(distinct 图书名) as'图书总数' from book2128

2.查询每种图书品种的数目

-- T2
select  图书名,count(*) as'图书数目'
from book2128
group by 图书名

3.查询各班的人数

select d.班号 ,count(s.学号)as'人数'
from depart2128 d,student2128 s
where d.班号=s.班号
group by  d.班号

4.查询各系的人数

select  d.系名,count(s.学号) as'人数'
from depart2128 d,student2128 s
where d.班号=s.班号
group by d.系名

5.查询借阅图书学生的学号、姓名、书名和借书日期

select s.学号,s.姓名,bo.图书名,b.借书日期
from borrow2128 b,student2128 s,book2128 bo
where b.学号=s.学号 and bo.图书编号=b.图书编号

6.查询借有图书的学生的学号和姓名

select  distinct s.学号,s.姓名
from borrow2128 b,student2128 s
where b.学号=s.学号

7.查询每个学生的借书数目

select distinct s.姓名,count(b.图书编号) as'借阅图书数目'
from student2128 s,borrow2128 b
where s.学号=b.学号
group by s.姓名

8.找出借书超过两本的学生的学号、姓名和所借图书册数

select s.学号,s.姓名,count(b.图书编号)as'所借数目'
from student2128 s,borrow2128 b
where  b.学号=s.学号
group by  s.学号, s.姓名
having  count(b.图书编号)>2

9.查询借阅了‘操作系统’一书的学生,输出学号姓名及班号

select s.学号,s.姓名,s.班号
from(select  bo.图书名,bo.图书编号,b.学号from book2128 bojoin borrow2128 b on (b.图书编号=bo.图书编号 and 图书名='操作系统'))a
join student2128 s
on(s.学号=a.学号)

10.查询每个班的借书总数

select distinct  s.班号,count(b.图书编号)as '借书总数'
from student2128 s, borrow2128 b
where s.学号=b.学号
group by s.班号

11.若图书编号以前3位数字进行分类,查询每类图书的平均价

select  distinct  left(bo.图书编号,3)as'图书编号',avg(bo.定价) as'平均价'
from book2128 bo
group by left(bo.图书编号,3)

12.查询平均价高于30的图书类别

select  distinct  left(bo.图书编号,3)as'图书编号',avg(bo.定价) as'平均价'
from book2128 bo
group by left(bo.图书编号,3)
having  avg(b.定价)>30

13.查询图书类别的平均价,最高价

select  distinct  left(b.图书编号,3)as'图书编号类别',avg(b.定价)as'平均价',max(b.定价)as'最高价'
from book2128 b
group by left(b.图书编号,3)

14.假设借书期限为45天,查询过期未还图书的编号,书名,学生学号和姓名
本题有点小迷,因为没有说什么会过期啊(暂留疑问,后续补上)只要把日期2022-3-17改成相应的还书日期即可

select s.学号,s.姓名,bo.图书编号,bo.图书名
from student2128 s,borrow2128 b,book2128 bo
where s.学号=b.学号 and bo.图书编号=b.图书编号 and datediff(day,b.借书日期,'2022-3-17')>45

15.查询书名包括“工程”关键词的图书,输出书号、书名、作者

select bo.图书编号,bo.图书名,bo.作者
from book2128 bo
where bo.图书名 like '%工程%'

16.查询现有图书中价格最高的图书,输书名以及作者

select 图书名,作者
from book2128
where 定价=(select  max(定价) from  book2128)

17.查询所有借阅“C语言程序设计”一书的学生的学号和姓名,再查询所有 借阅了“C语言程序设计”但没有借“C习题解答”的学生的学号和姓名
(中途使用go)

select  s.学号,s.姓名
from student2128 s,borrow2128 b,book2128 bo
where s.学号=b.学号 and b.图书编号=bo.图书编号 and bo.图书名='C程序设计'goselect  s.学号 , s.姓名
from student2128 s,borrow2128 b,book2128 bo
where s.学号=b.学号 and b.图书编号=bo.图书编号 and bo.图书名='C程序设计' and not exists(select * from  book2128 bo1,borrow2128 b1where bo1.图书编号=b1.图书编号 and bo.图书名='C习题解答' and b1.学号=b.学号)

18.查询所有没有借书的学生的学号和姓名

select  学号,姓名
from student2128
where  学号 not in(select  distinct  学号 from borrow2128)

19.查询每个系所借图书的总数

select  d.系名,count(b.学号) as'所借图书的总数'
from depart2128 d,student2128 s,borrow2128 b
where  d.班号=s.班号 and s.学号=b.学号
group by  d.系名

20.查询各出版社的图书总数

select  b.出版社,count(b.图书编号)
from book2128 b
group by  b.出版社

21.查询各出版社的图书占图书总数的百分比(四舍五入到一位小数)

select 出版社,cast(round(count(图书编号)*100.0/(select count(*) from book2128),1) as  numeric(5,1)) as 百分比
from
book2128  b
group by 出版社

22.查询各出版社的图书被借的数目

select  bo.出版社,count(*)as'借书数目'
from book2128 bo,borrow2128 b
where b.图书编号=bo.图书编号
group by bo.出版社

以上是全部题目了,下面附创建数据库与表,并且插入数据的代码:

create  database  Library2128
use Library2128
-- 排序方法
ALTER DATABASE Library2128 COLLATE Chinese_PRC_CI_AS-- Create Table
create  table depart2128(班号 nvarchar(10) not null  primary key ,系名 nvarchar(10) not null
)create  table student2128(学号 nvarchar(10) not null primary key ,姓名 nvarchar(10) not null ,性别 nvarchar(10) not null,出生日期 datetime not null,班号 nvarchar(10) not null
)create  table book2128(图书编号 nvarchar(10) not null  primary key ,图书名 nvarchar(10)  not null,作者 nvarchar(10) not null,定价 float  not null,出版社 nvarchar(10) not null
)create  table  borrow2128(学号 nvarchar(10) not null,图书编号 nvarchar(10) not null  primary key (学号,图书编号),借书日期 datetime
)-- Insert values
insert into book2128(图书编号,图书名,作者,定价,出版社)
values
(   '10011'   ,   'C语言设计 '  ,   '李洪      '    ,   24, '清华大学出版社 '    )   ,
(   '10012'   ,   'C语言设计 '  ,   '李洪      '    ,   24  ,'清华大学出版社 '   )   ,
(   '10013'   ,   'C习题解答 '  ,   '李洪      '    ,   12  ,'清华大学出版社 '   )   ,
(   '10014'   ,   'C习题解答 '  ,   '李洪      '    ,   12  ,'清华大学出版社 '   )   ,
(   '10020'   ,   '数据结构  '  ,   '徐华      '    ,   29  ,'人民邮电出版社 '   )   ,
(   '10021'   ,   '数据结构  '  ,   '徐华      '    ,   29, '清华大学出版社 '    )   ,
(   '10023'   ,   '高等数学  '  ,   '王涛      '    ,   30  ,'高等教育出版社 '   )   ,
(   '10034'   ,   '软件工程  '  ,   '张明      '    ,   34  ,'机械工业出版社 '   )   ,
(   '20025'   ,   '信息学    ' ,   '张港      '    ,   35  ,'清华大学出版社 '   )   ,
(   '20026'   ,   '信息学    ' ,   '张港      '    ,   35  ,'清华大学出版社 '   )   ,
(   '20042'   ,   '电工学    ' ,   '王明      '    ,   30  ,'人民邮电出版社 '   )   ,
(   '20056'   ,   '操作系统  '  ,   '曾平      '    ,   26, '清华大学出版社 '    )   ,
(   '20057'   ,   '操作系统  '  ,   '曾平      '    ,   26  ,'清华大学出版社 '   )   ,
(   '20058'   ,   '操作系统  '  ,   '曾平      '    ,   26  ,'清华大学出版社 '   )   ,
(   '20067'   ,   '数字电路  '  ,   '徐汉      '    ,   32  ,'高等教育出版社 '   )   ,
(   '20140'   ,   '数据库原理'   ,   '陈曼      '    ,   32  ,'高等教育出版社 '   )   ,
(   '20090'   ,   '网络工程  '  ,   '黄军      '    ,   38  ,'高等教育出版社'    )   ;
insert into depart2128 values ('0501',    '计算机系  ')insert into depart2128 values ('0502','计算机系')insert  into depart2128 values ('0801' ,'电子工程系')insert  into depart2128 values ('0802','电子工程系')
insert  into student2128 (学号, 姓名, 性别, 出生日期, 班号)
values
('1', '张任',         '男',      '1995-01-02'  ,'0501'),
('2', '程华',         '男',      '1996-01-10', '0501'),
('3', '张丽',         '女',      '1995-06-07', '502'),
('4'  ,'王英' ,       '女' ,     '1994-12-10'  ,'0502'),
('5', '李静',         '女' ,     '1995-04-05'  ,'0502'),
('10',    '许兵'   ,      '男',      '1995-08-10', '0801'),
('11',    '张功',         '男',      '1995-06-02', '0801'),
('12',    '李华',         '男',      '1994-10-03', '0801'),
('13',    '马超'  ,       '男' ,     '1996-02-03'  ,'0802'),
('14',    '曾英',         '女'   ,   '1994-03-06'  ,'0802');insert  into borrow2128 (学号, 图书编号, 借书日期)
values
('1', '10020',  '2013-12-05'),
('2', '20025',  '2013-11-08'),
('1', '20059',  '2014-04-11'),
('2', '10011',  '2013-10-02'),
('2', '10013',  '2014-04-03'),
('3', '10034'   ,'2014-04-10'),
('3', '20058'   ,'2014-04-13'),
('4', '10012',  '2014-04-06'),
('5', '10023',  '2014-02-03'),
('12',    '20067',  '2014-03-06')

数据库上机实验一、二相关推荐

  1. mysql上机实验报告_数据库上机实验7实验报告.doc

    <数据库上机实验7实验报告.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<数据库上机实验7实验报告.doc>文档请在天天文库搜索. 1. 上机 ...

  2. oracle数据库环境实验报告,《Oracle数据库》实验报告二

    <<Oracle数据库>实验报告二>由会员分享,可在线阅读,更多相关<<Oracle数据库>实验报告二(5页珍藏版)>请在金锄头文库上搜索. 1.第 1 ...

  3. oracle数据安全管理实验,第四次Oracle数据库上机实验-bistu

    <第四次Oracle数据库上机实验-bistu>由会员分享,可在线阅读,更多相关<第四次Oracle数据库上机实验-bistu(3页珍藏版)>请在人人文库网上搜索. 1.BIS ...

  4. 数据库上机试验(二)

    这是第二次上机内容以及结果,大家在运行程序的时候,第一次是可以直接运行的,但第二次运行的时候要把原来建的表删除,否则回显示表已存在的错误.所有完整代码在我空间的代码库中均存放,可以直接运行. 上机实验 ...

  5. 数据库系统教程(第二版何玉洁)课后数据库上机实验答案

    附录C 上机实验 C.1 第4章上机实验 下列实验均使用SQL Server 的SSMS工具实现. 1.用图形化方法创建符合如下条件的数据库(创建数据库的方法可参见本书附录A): l  数据库名为:学 ...

  6. c++第二次上机实验项目二

    /* * 文件名称: c++第二次上机实验项目2 * 作 者: 谢文锐* 完成日期: 2016 年 3 月 24 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:* 输入描述: 输入一个 ...

  7. 数据库上机实验三(游标)

    关于数据库实验一.二和数据库的创建请参考此处 什么叫游标?游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果.每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记 ...

  8. C++ 上机实验(二)【继承与多态】

    一.实验目的和要求: 1.学习定义和使用类的继承关系,定义派生类: 2.熟悉不同继承方式下对基类成员的访问控制: 3.掌握在派生类中初始化基类成员的方法: 4.掌握C++函数的重载机制: 5.掌握使用 ...

  9. 数据库 查询计算机系姓王,数据库上机实验报告——SQL Server 2008 简单查询.doc

    实验题目SQL Server 2008 简单查询实验时间2016年5月13日实验地点T616实验成绩 实验性质□验证性 √设计性 □综合性教师评价: □算法/实验过程正确: □源程序/实验内容提交 □ ...

最新文章

  1. C++学习之:复制和粘贴文件/文件夹
  2. 【手写】每个人心中都住着一座城。。。
  3. 当你「ping 一下」的时候,你知道它背后的逻辑吗?
  4. Python模拟哲学家进餐问题
  5. 【直播】回放与PPT下载!深度学习如何用于摄影图像的处理?
  6. pcl_openmap_OpenMap教程5 – 3层GIS应用程序
  7. Docker安装Nacos教程
  8. HDU 2896病毒侵袭
  9. 洛谷P1141 01迷宫
  10. linux安装mvn及nexus远程仓库
  11. SQL Server 2016 bak文件还原
  12. java uuid to long,生成long类型的UUID
  13. 分类器集成和非均衡分类
  14. 怎么让python执行完后再执行_python中两个函数顺序执行,怎么让第一个执行完了再执行第二个?...
  15. 「区块链系列」搭建区块链底层技术
  16. 企业网站排名,站内布局,不只有关键词密度
  17. 快读与快输(读入优化与输出优化、QIO优化)
  18. YJJ's Salesman HDU - 6447(线段树 单点更新+DP思想)
  19. matlab多重积分如何使用方法,MATLAB在《高等数学》中的应用_多重积分
  20. 【UE Unreal Camera】【保姆级教程二】手把手教你通过UE获取摄像头帧数据

热门文章

  1. 【ESP32】VSCode+Arduino+Platformio 如何使用ESP32上的PSRAM
  2. oxc000014c解决方法
  3. java通过调用鼠标模拟自动添加微信好友
  4. 借助栈将一个带头节点的单链表倒置
  5. linux-计算机基础
  6. java 上传图片 生成缩略图_上传图片同时生成缩略图
  7. 过零检测电路原理与作用 可控整流
  8. 《Python 3网络爬虫开发实战 》崔庆才著 第三章笔记
  9. Oracle EBS 常用表 查询语句
  10. 金山词霸每日一句开放平台 .NET demo