表数据查询
单表查询完整语法 (按照顺序先后)
select
字段列表
from
表名
where
条件
group by
分组字段
having
分组后的条件l
order by
排序
select * from 表名 查询表所有数据
select 列名1,列名2… from 表名 查询指定列数据
select distinct 列名1,列名2… from 表名 去重复查询指定列的数据
select 列名1 运算符(±*/) 列名2… from 表名 查询指定列在原有基础上运算
select ifnull(列名,数字) 运算符 from 表名
将指定列为空的数据换算成输入的数字参与运算
select 列名 as 别名 from 表名 在查询时将列名用as代替(as可以省略)
条件查询
select 列名 from 表名 where 条件 在指定条件内查询列
条件常用单词
列 条件1 or 条件2 or 条件3… 查询多个条件
列 条件1 and 条件2 查询条件只有两个
列 between 数字 and 数字 两个数字范围之内(包含两个数字)
列 in(数据1,数据2…) 查询同列多个数据
列 not in (数据1,数据2…) 查询同列不包含指定数据
列 is null 查询列为空
列 is not null 查询条件不为空
模糊查询
列 like ‘任意字符’
_单个任意字符
%任意个任意字符 模糊查询带指定字符的列
聚合函数查询
select 函数名(列名) from 表名 where 条件
函数
count 统计个数
max 最大值
min 最小值
avg 平均值
sum 求和
排序查询
select * from 表名 where 条件 order by 列名 asc 升序排序(默认升序,可省略asc)
select * from 表名 where 条件 order by 列名 desc 降序排序(不可省略desc)
select * from 表名 where 条件 order by 列名 asc,列名2 desc 组合使用升降序,用逗号隔开
分组查询
select * from 表名 group by 列名 having 分组后的条件 按列名相同的值进行分组
注意:
1. 分组查询查询的字段一般为分组字段和聚合函数
2. where是在分组进行过滤。不满足条件的不参与分组。having是在分组后对数据进行过滤。
where后面不能跟聚合函数条件,聚合函数条件只能跟在having关键字后
分页查询
limit (mysql专用)
select * from 表名 limit 起始记录,每页显示条数 显示指定页数的数据
公式:
起始记录=(指定页数-1)*每页显示条数
多表查询
内连接
显式内连接
select * from 表名1 join 表名2 on 条件 …
隐式内连接
select * from 表名1,表名2 where t 条件 …
外连接
左外连接
select * from 左表名 left join 右表名 on 条件 显示左表的全部
右外连接
select * from 左表名 right join 右表名 on 条件 显示右表的全部