当前位置: 首页 > news >正文

数据库实验三 数据查询二

任务描述

本关任务:查询来自借阅、图书、读者数据表的数据 为了完成本关任务,你需要掌握:

如何多表查询

相关知识

查询多个数据表

在实际应用中,查询经常会涉及到几个数据表。 基于多个相关联的数据表进行的查询称为连接查询。

命令格式: select * from 数据表 from 数据表1,数据表2 where 连接条件

对于连接查询,在FROM短语后多个数据表的名称之间用逗号隔开,在WHERE短语中须指定数据表之间进行连接的条件 在连接查询中引用两个表的公共字段时,必须在字段前添加表名作为前缀,否则系统会提示出错。 对于只在一个数据表中出现的字段,则无需指定前缀。

第二种方法 from 数据表1 join 数据表2 on 连接条件 数据表1和数据表2为需要连接的数据表 on后面是连接的条件 通常是关键字段的值相同

三个表的查询 如果要实现三个表的查询,可以 From 数据表1 ,数据表2 ,数据表3 where 连接条件1 and 连接条件2

任务要求

打开library数据库 第一题 根据读者(reader)和借阅(borrow)数据表,查询王颖珊的借阅记录,包括条形码txm、借阅日期jyrq、还书日期hsrq 第二题 根据图书(book)和借阅(borrow)数据表,查询李白全集被借阅的情况:包括读者证号dzzh、借阅日期jyrq、还书日期hsrq 第三题 根据读者(reader)、图书(book)和借阅(borrow)数据表查询没有被归还的借阅信息:包括读者证号dzzh、姓名xm、电话dhhm、条形码txm、书名sm、借阅日期jyrq 提示:通过isnull(表达式)可以判断表达式是否NULL值


开始你的任务吧,祝你成功!

use library;
#第一题select txm,jyrq,hsrq from borrow join reader on reader.dzzh=borrow.dzzh where xm="王颖珊";#第二题select dzzh,jyrq,hsrq from borrow join book on borrow.txm=book.txm where sm="李白全集";#第三题select reader.dzzh,xm,dhhm,book.txm,sm,jyrq from book join borrow  on borrow.txm=book.txm join reader on borrow.dzzh=reader.dzzh where ISNULL(hsrq);#代码结束 

任务描述

任务: 根据数据表图书、读者和借阅,实现多表查询及对查询分组统计

为了完成本关任务,你需要掌握: 第一题: 统计每本书借阅的次数,显示书名和借阅次数(借阅次数命名为jycs),按借阅次数降序排列,借阅次数相同的按书名降序排列 (提示:borrow数据表的一条数据对应一次借阅) 第二题: 统计借阅次数在2次以上的图书的借阅的次数,显示书名和借阅次数,按借阅次数降序排列,借阅次数相同的按书名降序排列 第三题 统计每个出版社的图书的借阅次数,显示出版社的名称和借阅次数,按借阅次数降序排列,借阅次数相同的按出版社降序排列 第四题: 统计每位读者借阅的次数,显示姓名和借阅次数,按借阅次数降序排列,借阅次数相同的按姓名降序排列 第五题: 统计研究生读者借阅的次数,显示姓名和借阅次数,按借阅次数降序排列,借阅次数相同的按姓名降序排列 注意:order by <表达式1>,<表达式2> 表示首先按第一个表达式的值排序,第一个表达式的值相同的再按第二个表达式的值排序

use library;#代码开始#第一题
select sm,count(sm)as jycs from borrow left join book on book.txm=borrow.txm 
group by sm 
order by jycs desc,sm desc;#第二题
select sm,count(sm) as jycs  from borrow left join book on book.txm=borrow.txm 
group by sm having(jycs>=2)
order by jycs desc,sm desc;#第三题
select cbs,count(cbs) as jycs from borrow left join book on book.txm=borrow.txm 
group by cbs
order by jycs desc,cbs desc;#第四题
select xm,count(xm)jycs from borrow left join reader on borrow.dzzh=reader.dzzh 
group by xm
order by jycs desc,xm desc;#第五题select xm,count(xm) as jycs from borrow left join reader on borrow.dzzh=reader.dzzh 
where sf='研究生'
group by xm
order by jycs desc,xm desc;#代码结束

任务描述

本关任务:根据图书数据表进行子查询

相关知识

为了完成本关任务,你需要掌握:子查询

子查询

在SELECT语句中,一个查询语句完全嵌套在另一个查询语句的WHERE或HAVING的条件短语中,称为子查询或嵌套查询。 通常把条件短语中的查询成为子查询,父查询则使用子查询的查询结果作为查询条件。

任务要求

第一题 查询与李白全集同一个出版社的图书的书名(不包括李白全集) 第二题 查询高于图书的平均售价(sj)的图书的书名和售价 第三题 查询售价最高的图书的条形码、书名和售价 第四题 查询售价最低的图书的条形码、书名和售价


开始你的任务吧,祝你成功!

use library;
#代码开始
#答案1
select sm from book where cbs="上海古籍出版社" and sm!="李白全集";
#答案2
select sm,sj from book where sj>(select avg(sj) from book);
#答案2
select txm,sm,sj from book where sj=(select max(sj) from book);#答案3
select txm,sm,sj from book where sj=(select min(sj) from book);#代码结束

任务描述

本关任务: 第一题 查询曾经借过图书的读者的读者证号和姓名 第二题 查询曾经没有被借阅的图书的条形码和书名 第三题 查询与孙思旺借过相同图书的读者的读者证号和姓名,按读者证号升序排列 第四题 查询借阅过李白全集的读者所借过的其他图书的书名 按书名升序排列

开始你的任务吧,祝你成功!

 use library;
#代码开始
#题目1
select dzzh,xm from reader where reader.dzzh in (select dzzh from borrow);
#题目2
select txm,sm from book where book.txm not in (select txm from borrow);#题目3
select dzzh,xm from reader where reader.dzzh in (select dzzh from borrow 
where txm in (select txm from borrow 
where borrow.dzzh=(select dzzh from reader 
where xm='孙思旺'))) 
and dzzh!='006' order by dzzh asc;#题目4select sm from book where book.txm in (select txm from borrow
where borrow.dzzh in (select dzzh from borrow 
where borrow.txm=(select txm from book where sm="李白全集")))
and sm!="李白全集" order by sm asc;#代码结束

http://www.lryc.cn/news/92680.html

相关文章:

  • 论文笔记与实战:对比学习方法MOCO
  • 大数据Doris(三十八):Spark Load 导入Hive数据
  • 【Prometheus】mysqld_exporter采集+Grafana出图+AlertManager预警
  • softmax 函数
  • 【SpringMVC】拦截器和过滤器之间的区别
  • springboot第25集:实体类定义规则
  • 【python】—— python的基本介绍并附安装教程
  • 浏览器跨域请求
  • 什么,你还在用 momentJs 处理相对时间
  • 三维模型 工程图
  • 我用ChatGPT写2023高考语文作文(二):全国乙卷
  • java版本工程项目管理系统平台源码,助力工程企业实现数字化管理
  • 代码随想录第55天
  • 算法设计与分析(填空专题)
  • Ubuntu22.04 K8s1.27.2
  • 卡尔曼滤波与组合导航原理(十二)扩展卡尔曼滤波:EKF、二阶EKF、迭代EKF
  • 基于蒙特卡洛模拟法的电动汽车充电负荷研究(Matlab代码实现)
  • 自学黑客【网络安全】,一般人我劝你还是算了吧
  • 编程中的心理策略:如何从错误中学习并实现自我成长
  • Rocket面试(五)Rocketmq发生流量控制的情况有哪些?
  • Tableau招聘信息数据可视化
  • 游戏服务器开发指南(八):合理应对异常
  • 【g】聚类算法之K-means算法
  • scala内建控制结构
  • Linux SSH命令实战教程,提升你的服务器管理基本功!
  • 【Python】Python进阶系列教程-- Python3 CGI编程(二)
  • do..while、while、for循环反汇编剖析
  • 【代码随想录】刷题Day53
  • MySQL 索引及查询优化总结
  • 什么是AJAX?