MySQL(2)查询条件,分组查询,外联,子查询

一,筛选条件


​ 1.1,比较运算符

等于:=(注意!不是==) 大于等于:>= 空: is NULL
不等于:!=或<> 小于:< 非空: is NOT NULL
大于:> 小于等于:<=

​ 1.2,逻辑运算符

​ 与:and 或:or 非:not

​ 1.3,排序

​ 正序(降序):order by 字段

​ 相反(降序):order by 字段 desc

​ 例如:select * from 表名 order by 字段

​ 1.4,限制

​ -limit 数字:限制条件只能输出前多少行

​ -limit num1, num2:从num1下一个位置开始输出num2行数据

​ 1.5,去重

​ -distinct:查找的时候不显示重复的数据

​ 例如:select distinct * from 表名

​ 1.6,模糊查询

​ -任意多个字符:like '%'

​ 例如:select * from 表名 where 字段 like '李%'

​ -任意一个字符:like '_'

​ 例如:select * from 表名 where 字段 like '李__'

​ 1.7,范围查询

​ -数值查询:between num1 and num2

​ 例如:select * from 表名 where 字段 between num1 and num2

​ -间隔返回:in (条件,条件),只筛选符合括号内的数据

​ 例如:select * from 表名 where 字段 in(条件,条件...)

二,聚合与分组(重点和难点)


​ 2.1,常用的聚合函数

统计个数:count(column) 求和:sum(column)
**最大值:**max(column) **平均值:**avg(column)
**最小值:**min(column) **列出字段全部值:**group_concat(column)

​ 例子:select count(*) as group_counts from 表名 group_by 字段:先把表按照字段分组,在计算各组的数量,最后统一存放在group_counts 字段中

select 字段 from 表名 group by 字段:列出该个字段里的内容

​ 2.2,分组查询(group by) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t2Oyt4ub-1620639590395)(D:\python\python思维导图和笔记\数据库\1,MySQL\笔记辅图\Snipaste_2019-02-02_16-04-38.png)]在这里插入图片描述

​ 2.3,聚合筛选

​ -having:相当于where,可以对已筛选的表格再次进行筛选

where和having的区别:where是在查看时候参与筛选,having是在第一次筛选完毕后再执行,相当于对已经筛选的表再次进行筛选.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zncTZAfP-1620639590398)(D:\python\python思维导图和笔记\数据库\1,MySQL\笔记辅图\Snipaste_2019-02-02_16-15-47.png)]

​ -as:可以给聚合函数起名,并在后面可以使用

select * from (select * from students order by age) as e;
# (select * from students order by age) as e 这一步就是期别名为e

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WdIw324p-1620639590399)(D:\python\python思维导图和笔记\数据库\1,MySQL\笔记辅图\Snipaste_2019-02-02_16-18-38.png)]

三,子查询(了解)


​ 3.1,将一个查询的结果留下来用于下一次查询(select 中嵌套 select

​ 要求:

​ 1):嵌套在查询内部

​ 2):必须始终出现在圆括号内(圆括号里面的数据没被别名时必须是单一的数据)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RR0Q1DZu-1620639590401)(D:\python\python思维导图和笔记\数据库\1,MySQL\笔记辅图\Snipaste_2019-02-02_20-28-54.png)]

​ 例子:select count(*) from grades where subject_number=(select number from subjects where title='Python1'); :查询subject_number等于后面这个子查询里面数据的数据(子查询里面的数据必须是一个确定的唯一数)

四,连接查询


​ 4.1,内连接(inner join)

​ -无条件连接

​ 无条件内连接,又名交叉连接/笛卡尔连接

​ 第一张表中的每一项会和另一张的每一项依次组合

​ 例子:MySQL> select * from 表名 join 表名

​ -有条件内连接

​ 在无条件连接的基础上,加上一个on子句

​ 当连接的时候,筛选出那些有实际意义的记录来进行组合

​ 例子:MySQL> select * from 表名 join 表名 on 表名.字段 = 表名.字段如果不想显示重复的数据,把*改为想要的数据,重复的改为条件.字段

​ 4.2,外连接(left/right join)

​ -左外链接:(以左表为基准)

​ 两张表做链接的时候,在连接条件不匹配的时候

​ 留下左表的数据,而右表中的数据以NULL填充

例子:MySQL> select * from 表名 left join 表名 on 表名.字段 = 表名.字段

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H5tCM1IZ-1620639590403)(D:\python\python思维导图和笔记\数据库\1,MySQL\笔记辅图\Snipaste_2019-02-02_21-07-59.png)]

​ -右外连接(以右表为基准)

​ …

猜你喜欢

转载自blog.csdn.net/weixin_44038881/article/details/116603088