首页 > 其他分享 >第五章 表记录的查询(二)

第五章 表记录的查询(二)

时间:2024-08-28 19:23:13浏览次数:16  
标签:函数 记录 表中 查询 运算符 第五章 子句 连接

4、聚合函数查询

一、聚合函数

(1)COUNT()函数

count(*) 返回数据表中的记录数(包含NULL值的空行)除count(*)外,其余聚合函数都会忽略空值 

substring(被截取的字符串,从第几位开始截取,截取长度)查询图书编号第一位到第五位是97871的行数

Select count(distinct 列名/字段名) from 表名; distinct是为避免重复计算相同的值

(2)SUM()函数和AVG()函数

SUM()函数的作用是求出表中某个列取值的求和,AVG()函数的作用是求出表中某个列取值的平均值

(3)MAX()函数和MIN()函数

MAX()函数的作用是求出表中某个列取值的最大值,MIN()函数的作用是求出表中某个列取值的最小值

二、分组聚合查询

(1)GROUP BY子句

1_1按单列分组

按照ReaderID列进行分组,记录每个读者的借书次数

1_2按多列分组

(2)HAVING子句

分组之前的条件要用WHERE关键字筛选记录,而分组之后的条件要用关键字HAVING子句筛选记录。

(3)GROUP BY 子句与WITH ROLLUP

画框线的部分能够使汇总行输出并输出在最后一行

5、多表连接查询

一、交叉连接

其中框线内容可以省略,交叉连接是没有where子句的语句

二、内连接(等值连接、不等值连接、自然连接)

2_1等值连接

在ON子句中连接两个表的条件称为连接条件,当连接条件中的比较运算符是“=”时,称为等值连接,通过inner join 关键字把多个表连接;

2_2不等值连接

比较运算符为“!=”时,称为不等值连接

2_3自然连接

可同时连接多个表,在自然连接时,会自动根据两张表中相同的列名进行数据的匹配。

2_4自连接

在borrow表中,选出和BookID的ReaderID相同的ReaderID

三、外连接

外连接生成的结果集不仅包含符合连接条件的行数据,而且还包括左表(左外连接时的表)或右表(右外连接时的表)中所有的数据行。

3_1左连接

book是主表,borrow是从表

 为从表中没有对应的地方添加NULL值

3_2右连接

右连接右边的是主表,左边是从表

从表中没有匹配值的地方添加NULL值

6、子查询

子查询的类型:标量子查询(包含一个行子查询和列子查询);表子查询(返回一个表);行子查询(返回一行);列子查询(返回一列)

子查询一般用在主查询的WHERE子句或HAVING子句中,与比较运算符或逻辑运算符一起构成WHERE筛选条件或HAVING筛选条件。

(1)选择列表中的子查询

子查询内部和外部一般不是同一个表,取book表中的Price来进行输出

(2)子查询生成派生表

当子查询的结果返回一个表(表子查询)时,则可以把该表子查询作为数据源。在from子句中可以使用子查询的结果集作为外层查询的源表,结果集也称为派生表,可以为派生表定义一个别名。

(3)WHERE子句中的子查询

3_1子查询与比较运算符组成条件

输出价格低于平均价格的书籍信息

3_2使用带IN关键字的子查询

当子查询的结果返回一行或返回一列时,就不能使用比较运算符,而要使用IN关键字,IN关键字用于检测给定的一个值是否存在于多个值的列表中

Where 查询表达式 IN (子查询语句)

3_3使用带EXISTS关键字的子查询

3_4使用ANY、SOME、或ALL的子查询

3_4_1使用ANY、SOME的子查询

查询男生中比某个女生出生年份晚的学生姓名和出生年份

3_4_2使用ALL的子查询

ALL的用法和ANY或SOME一样,也是把列值与子查询结果进行比较,但它不是要求任意结果值的列值为真,而是要求所有列的结果都为真。

查询男生中比所有女生出生年份晚的学生姓名和出生年份。

(4)用子查询插入、修改或删除记录

4_1用子查询插入记录

将book表中的BookID为9787111636222的行添加到book2表中

4_2用子查询修改记录

修改book2表中的BookID,将其改为数据结构这个书籍的BookID

4_3用子查询删除记录

删除book2表中,BookID和数据结构BookID相同的书籍的信息。

标签:函数,记录,表中,查询,运算符,第五章,子句,连接
From: https://blog.csdn.net/qq_74133586/article/details/141647802

相关文章

  • sqlite3使用记录
    参考资源SQLite简介|菜鸟教程(runoob.com)Ubuntu下sqlite3的安装及使用安装步骤安装:sudoapt-getinstallsqlite3查看版本:sqlite-version安装Sqlite3编译需要的工具包:sudoapt-getinstalllibsqlite3-dev语法说明注意(1)sqlite语法忽略大小写的区别,除了GLOB等......
  • 查询权限限制备份
    TSUseruser=ResourceUtil.getSessionUser();Stringdepartid=user.getDepartid();TSDeparttsDepart=systemService.getEntity(TSDepart.class,departid);StringsysOrgCode=tsDepart.getOrgCode();try{//获取用户的......
  • 【MySQL数据库管理问答题】第9章 优化查询性能
    目录1.请说明EXPLAIN语句的作用。2.为什么使用索引会比全表扫描可以提供更好的查询性能?3.MySQL数据库是如何自动维护索引统计信息的。4.mysqlcheck客户机程序都有哪些功能?5.在性能分析期间使用InvisibleIndexes有什么好处?6.什么是直方图(histograms),它在使用......
  • 斐讯 N1 刷机记录
    Prerequisites公对公USB线Windows操纵系统AMLogicUSBBurningTool打开终端,输入hdwwiz打开添加硬件向导。安装我手动从列表选择的硬件>显示所有设备->Amlogic,Inc.->android_winusb打开adb$Env:N1_IP="192.168.1.10"#替换为N1盒子的IP......
  • Linux APP查询驱动的方式归类总
    LinuxAPP查询驱动的方式归类总前言一、具体方式是什么?1、休眠与唤醒2、阻塞与非阻塞3、POLL机制4、异步通知tips:等待队列用于进程等待条件,工作队列用于异步任务处理。二、使用步骤休眠与唤醒tips:在中断处理函数中,不能休眠,也就不能调用会导致休眠的函数。上半......
  • C#环境下支持多线程的异步日志记录器的设计与实现
    上篇博文提供了c++版异步日志类,本文提供同样功能的C#版的异步日志管理类。C#环境下支持多线程的异步日志记录器的设计与实现在现代应用程序开发中,日志记录是一项至关重要的任务,它帮助开发者追踪程序的运行情况,调试问题,并进行性能监控。特别是在高并发场景下,传统的同步日志......