基础查询
语法:
select 查询列表 from 表名
特点:
1.查询列表可以是:表中的字段,常量值,表达式,函数;
2.查询的结果是一个虚拟的表格。
1 | # 1.查询表中的单个字段 |
条件查询
语法:
select 查询列表 from 表名 where 筛选条件
分类:
1.按条件表达式进行筛选
条件运算符:> < != <> >= <=
2.按逻辑表达式
&& || ! and or not
3.模糊查询
like:
1.一般与通配符搭配使用
2.通配符(使用\转义):
%:表示0个或任意多个字符;
_ :表示任意单个字符;
(not) between and: 包含边界值
in: 判断某字段的值是否属于in列表中的某一项
in列表中的元素类型要相同或兼容
is null / is not null:只能判断是否为null;
<=> : 安全等于,既能判断是否为null也能判断数字;
= 和 <>不能判断null
1 | # 1.按条件表达式筛选 |
排序查询
语法:select 查询列表 from 表 where 查询条件 order by 排序列表 asc/desc;
特点:1.asc:升序;desc:降序;如果不写,默认为升序
2.order by 子句支持单个字段,多个字段,表达式,函数,别名
3.order by 子句一般放在查询语句的最后面,limit子句除外
1 | SELECT * FROM employees ORDER BY salary ASC; -- 升序 |
常见函数
概念:类似于java中的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
好处:隐藏了实现细节;提高了代码的复用性
调用:select 函数名() from 表名;
分类: 1.单行函数:作用于单行数据,返回一个结果
2.分组函数:作用于一组数据,并对一组数据返回一个值
单行函数
一、字符函数
1 | # 1.LENGTH(str) 获取参数值的字节个数 |
二、数学函数
1 | # 1.ROUND(X) 四舍五入 |
三、日期函数
1 | # NOW() 返回当前系统日期+时间 |
四、其他函数
1 | SELECT VERSION(); |
五、流程控制函数
1 | # IF(expr1,expr2,expr3) |
分组函数
作用:用作统计使用,又称聚合函数,统计函数,组函数
特点:
1.sum,avg一般处理数值型数据;max,min,count可以处理任何类型
2.以上分组函数都忽略null值
3.可以和discount()搭配使用实现去重
4.一般使用count(*)统计行数,没有记录返回0
5.和分组函数一起查询的字段必须是group by后面的字段
1 | # sum() 求和 |
分组查询
语法:
select 分组函数,列(要求出现在group by的后面)
from 表
where 筛选条件
group by 分组的列表
order by 子句
特点:分组查询中的筛选条件分为两类
分组前筛选:数据源在原始表中,位于group by子句前面,使用where关键字;
分组后筛选:数据源在分组后的结果集中,位于group by子句后面,使用having关键字
1.分组函数作条件肯定放在having后
2.能分组前筛选尽量放在group by前面
1 | # 查询每个工种的最高工资 |
连接查询
1 | # 一、内连接 |
1 | # 二、外连接 |
子查询
1 | # 子查询 |
分页查询
1 | # 分页查询 |
联合查询
将多条查询语句的结果合并在一起
语法:
select 查询列表1 from 表名 union select 查询列表2 from 表名
特点:
1、要查询的结果来自多个表,且多个表之间没有联系
2、要求查询列表1与查询列表2的列数相等
3、要求多条查询语句的查询的每一列的类型和顺序最好一致
4、union关键字默认去重,使用union all 可以包含重复项