文章目录
- 一,筛选条件
- 二,聚合与分组(重点和难点)
- 三,子查询(了解)
- 四,连接查询
一,筛选条件
1.1,比较运算符
等于: | 大于等于: | 空: |
不等于: | 小于: | 非空: |
大于: | 小于等于: |
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)
2.3,聚合筛选
-having
:相当于where,可以对已筛选的表格再次进行筛选
where和having的区别
:where是在查看时候参与筛选,having是在第一次筛选完毕后再执行,相当于对已经筛选的表再次进行筛选.
-as
:可以给聚合函数起名,并在后面可以使用
select * from (select * from students order by age) as e;
# (select * from students order by age) as e 这一步就是期别名为e
三,子查询(了解)
3.1,将一个查询的结果留下来用于下一次查询(select 中嵌套 select
)
要求:
1):嵌套在查询内部
2):必须始终出现在圆括号内(圆括号里面的数据没被别名时必须是单一的数据)
例子: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 表名.字段 = 表名.字段
-右外连接
(以右表为基准)