1 基础查询
select 查询列表
from 表名
2 条件查询
where 筛选条件
筛选条件的分类
- 简单条件运算符
> < = <> != >= <= <=>安全等于
- 逻辑运算符
&& and
|| or
! not
- 模糊查询
like:一般搭配通配符使用,可以判断字符型或数值型
通配符:%任意多个字符,_任意单个字符
between ... and ... 范围查询,在and前后两个值之间 (包含边界)
in 等于值列表中的一个
is null /is not null:用于判断null值
3 排序查询
order by 排序列表
特点
- **asc :**升序,如果不写默认升序 ** desc:**降序
- 排序列表 支持 单个字段、多个字段、函数、表达式、别名
- order by的位置一般放在查询语句的最后
4 常见函数
单行函数
- 字符函数
- concat:连接
- substr:截取子串
- upper:变大写
- lower:变小写
- replace:替换
- length:获取字节长度
- trim:去前后空格
- lpad:左填充
- rpad:右填充
- instr:获取子串第一次出现的索引
- 数学函数
- ceil:向上取整
- round:四舍五入
- mod:取模
- floor:
- 向下取整
- truncate:截断
- rand:获取随机数,返回0-1之间的小数
- 日期函数
- now:返回当前日期+时间
- year:返回年
- month:返回月
- day:返回日
- date_format:将日期转换成字符
- curdate:返回当前日期
- str_to_date:将字符转换成日期
- curtime:返回当前时间
- hour:小时
- minute:分钟
- second:秒
- datediff:返回两个日期相差的天数
- monthname:以英文形式返回月
- 其他函数
- version 当前数据库服务器的版本
- database 当前打开的数据库
- user当前用户
- password('字符'):返回该字符的密码形式
- md5('字符'):返回该字符的md5加密形式
- 流程控制函数
- if(条件表达式,表达式1,表达式2):如果条件表达式成立,返回表达式1,否则返回表达式2
分组函数
- 分类
- max 最大值
- min 最小值
- sum 和
- avg 平均值
- count 计算个数
分组查询
select 分组函数,分组后的字段
from 表
【where 筛选条件】
group by 分组的字段
【having 分组后的筛选】
【order by 排序列表】
连接查询
SQL99语法:内连接
语法:
select 查询列表
from 表1 别名
【inner】 join 表2 别名 on 连接条件
where 筛选条件
group by 分组列表
having 分组后的筛选
order by 排序列表
limit 子句;
特点:
- 表的顺序可以调换;
- 内连接的结果=多表的交集;
- n表连接至少需要n-1个连接条件。
SQL99语法:外连接
语法:
select 查询列表
from 表1 别名
left|right|full【outer】 join 表2 别名 on 连接条件
where 筛选条件
group by 分组列表
having 分组后的筛选
order by 排序列表
limit 子句;
特点:
- 查询的结果=主表中所有的行,如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示null;
- left join 左边的就是主表,right join 右边的就是主表 full join 两边都是主表;
- 一般用于查询除了交集部分的剩余的不匹配的行。
SQL99语法:交叉连接
语法:
select 查询列表
from 表1 别名
cross join 表2 别名;
特点:
- 类似于笛卡尔乘积
子查询
含义
嵌套在其他语句内部的select语句称为子查询或内查询, 外面的语句可以是insert、update、delete、select等,一般select作为外面语句较多 外面如果为select语句,则此语句称为外查询或主查询。
分类
- 按出现位置
select后面:
仅仅支持标量子查询
from后面:
表子查询
where或having后面:
标量子查询
列子查询
行子查询
- 按结果集的行列
- 标量子查询(单行子查询):结果集为一行一列
- 列子查询(多行子查询):结果集为多行一列
- 行子查询:结果集为多行多列
- 表子查询:结果集为多行多列
分页查询
select 查询列表
from 表
limit 【offset,】size;
注意:
- offset代表的是起始的条目索引,默认从0卡死
- size代表的是显示的条目数
公式:
假如要显示的页数为page,每一页条目数为size
select 查询列表
from 表
limit (page-1)*size,size;
联合查询
含义
union:合并、联合,将多次查询结果合并成一个结果
语法
查询语句1
union 【all】
查询语句2 union 【all】
...
意义
- 将一条比较复杂的查询语句拆分成多条语句
- 适用于查询多个表的时候,查询的列基本是一致
特点
- 要求多条查询语句的查询列数必须一致
- 要求多条查询语句的查询的各列类型、顺序最好一致
- union 去重,union all包含重复项
查询总结
语法:
select 查询列表 ⑦
from 表1 别名 ①
连接类型 join 表2 ②
on 连接条件 ③
where 筛选 ④
group by 分组列表 ⑤
having 筛选 ⑥
order by排序列表 ⑧
limit 起始条目索引,条目数; ⑨
注:本文借鉴了尚硅谷公开课的内容,若有错误或不妥之处还望提醒。