MySQL 查询
排序
desc:升序 asc:降序
select * from <表的名字 >
聚合查询
查询结果的总数
select count(*) from <表名>;
查询结果的最大值
select max(<字段>) from <表名> where <条件>;
查询结果的最小值
select min() from <表名> where <条件>;
查询结果的和
select sum(<字段>) from <表名> where <条件>;
查询结果的平均值
select avg(<字段>) from <表名> where <条件>;
分组
group by: 查询结果分组
select <字段1> from <表名> group by <字段>;
group by +group_concat:查询结果分组,并根据分组显示group_concat中字段的值,以逗号分割
select <字段1>,group_concat(<字段2>) from <表名> group by <字段>;
group by +聚合查询
group by +count:查询每个分组的数量
select <字段1>,count(*) from <表名> group by <字段>;
group by + max:查询每个分组中最大的值
select <字段1>,max(<字段2>) from <表名> group by <字段>;
group by + min:查询每个分组中最小的值
select <字段1>,min(<字段2>) from <表名> group by <字段>;
group by + sum:查询每个分组中的和
select <字段1>,sum(<字段2>) from <表名> group by <字段>;
group by + avg:查询每个分组中的平均值
select <字段1>,avg(<字段2>) from <表名> group by <字段>;
group by + having:对分组之后的结果集进行条件判断,having 只能用于group by
select <字段1> from <表名> group by <字段> having count<条件>;
group by + with rollup:在结果的最后增加一行,记录列的总和
select <字段1>,<字段2>.... from <表名> group by <字段> with rollup;
分页查询
start:开始查询的位置,从0开始
count: 每页显示的数据数量
select * from <表名> limit start,count
分页公式
m:煤业显示的个数
n:页数
select * from students where is_delete=0 limit (n-1)*m,m;
连接查询
内连接查询:查询表1,表2都能匹配到的数据
select * from <表1的名字> inner join <表2的名字> on <表1的名字>.<表1的字段> = <表2的名字>.<表2的字段>;
右连接查询:查询只有表2才能匹配到的数据
select * from <表1的名字> right join <表2的名字> on <表1的名字>.<表1的字段> = <表2的名字>.<表2的字段>;
左连接查询:查询只有表1才能匹配到的数据
select * from <表1的名字> left join <表2的名字> on <表1的名字>.<表1的字段> = <表2的名字>.<表2的字段>;
自关联 ==> (可以用来做地区的三级联动
select <别名1>.* from <表1的名字> as <别名1>
inner join <表1的名字> as <别名2> on <别名1>.<字段1>=<别名2>.<字段1>
where <别名2>.<字段2>=<值>;
子查询
标量子查询:子查询只返回一个结果
select * from <表的名字> where <字段1> <比较运算符> <(select avg(字段) from <表的名字>)>;
列级子查询:返回的结果是一列(一列多行)
select * from <表的名字> where <字段1> <范围查询> <(select 字段 from <表的名字>)>;
行级子查询:返回的结果是一行(一行多列)
select * from <表的名字> where <(字段1,字段2)> = <(select max(字段1),max(字段2) from <表的名字>)>;