一 : 语法
select
-- 列名
from
-- 表名
where
-- 限定条件
group by
-- 分组列名
having
-- 分组后 限定条件
order by
-- 排序
limit
-- 分页限定
------------------------------------------------------------------------------------------------------------------------
二 : 基础查询
1 . 全部查询(一般公司里不让用)
语法 :
select * from 表名;
2 . 按列名查询
语法 :
select 列名1, 列名2, … from 表名;
3 . 去重复 查询
关键字 :
distinct
语法 :
select distinct 列名 from 表名;
4 . 计算列
语法 :
select 列名1+列名2 from 表名;
语法 - 解决 有值为 null 的情况:
select 列名1+ifnull (列名2, 0) from 表名;
注意 1 : 一般可以使用四则运算,计算一些列的值
注意 2 : 一般只会进行 数值型 的计算
注意 3 : 如果一个列名为 null,则运算结果就为 null,需要用到 ifnull (列名, 替换表达式)
5 . 起别名
语法 - 1 :
select 列名1 as 别名 from 表名;
语法 - 2 :
select 列名1+列名2 as 别名 from 表名;
语法 - 3 :
select 列名1 as 别名, 列名2 as 别名, … from 表名;
注意: as 可以省略
------------------------------------------------------------------------------------------------------------------------
三 : 条件查询
1 . 基本语法
… where 条件;
2 . 运算符查询 - 比较
关键词
大于 : > 、小于 : < 、大于等于 : >= 、小于等于 : <= 、等于 : = 、不等于 : <>
语法 :
select * from 表名 where 列名 = 值;
null 的比较 :
… where 列名 is null
… where 列名 is not null
3 . 运算符查询 - 逻辑
关键词:
且: and 、或: or 、
在 x 和 y 之间 : between x and y 、
当等于几个值任意一个 : in (x, y, z)
语法 - 并且:
select * from 表名 where 条件1 and 条件2;
语法 - 或者:
select * from 表名 where 条件1 or 条件2;
语法 - 在 x 和 y 之间:
select * from 表名 where 列名 between 20 and 30;
语法 - 当 = 20 或 =22 或 =32 :
select * from 表名 where 列名 in (20, 22, 32);
3 . LIKE 模糊查询
关键词:
like
占位符:
% : 任意数量的字符,包括 0 个
_ : 单个任意字符
语法
select * from 表名 like ‘%周%’;
select * from 表名 like ‘周 _ _’;
select * from 表名 like ‘_ 振 %’;
------------------------------------------------------------------------------------------------------------------------
四 : 排序查询
1 . 基本语法
单条件、默认,排序
select * from 表名 order by 列名;
多条件、默认,排序
select * from 表名 order by 列名1, 列名2, … ;
单条件、指定方式,排序
select * from 表名 order by 列名 math 排序方式;
多条件、指定方式,排序
select * from 表名 order by 列名1 math 排序方式1, 列名2 math 排序方式2, … ;
注意:
若多个排序条件,则当前一个条件值一样时,才判断下一个条件
2 . 排序方式
升序 : ASC ( 默认的 )
降序 : DESC
------------------------------------------------------------------------------------------------------------------------
五 : 聚合函数 查询
1 . 关键词
count : 计算数量 ( 会排除 null 值)
max : 计算最大值
min : 计算最小值
sum : 计算和
avg : 计算平均值
2 . 语法
select count( 列名 ) from 表名;
select count( ifnull ( 列名 , 0 ) ) from 表名;
select max( 列名 ) from 表名;
……
------------------------------------------------------------------------------------------------------------------------
六 : 分组 查询
1 . 关键词
… group by 列名
… having 判断条件
2 . 语法
按照 “某一列” 的的数据分组
select 列名, 聚合函数1, 聚合函数2, … from 表名 group by 列名;
举例,如列名为 “性别”,数据为 “男” 和 “女”,就可以分为 男 女 两组。
select 性别, avg(成绩), count(id) from students group by 性别;
┌┈┈┈┬┈┈┈┈┈┬┈┈┈┈┈┐
性别 avg(成绩) count(id)
├┈┈┈┼┈┈┈┈┈┼┈┈┈┈┈┤
男 91 3
├┈┈┈┼┈┈┈┈┈┼┈┈┈┈┈┤
女 98 24
└┈┈┈┴┈┈┈┈┈┴┈┈┈┈┈┘
分组前,加限定判断
select 列名, 聚合函数 from 表名 where 条件 group by 列名;
分组之后,加限定判断
select 列名, 聚合函数 from 表名 group by 列名 having 条件;
注意:
分组之后,查询的字段,只能是 “分组的列名” 以及 “聚合函数”。
其他的列名失去了查询意义。
where 后不可以跟 聚合函数, 而 having 后可以进行 聚合函数 的判断。
------------------------------------------------------------------------------------------------------------------------
七 : 分页 查询
1 . 关键词
limit 开始的索引, 此页展示几条数据;
2 . 语法
例:第一页,从第 1 条数据开始显示,展示 10 条数据
select * from 表名 limit 0, 10;
例:第二页,从第 11 条数据开始显示,展示10 条数据
select * from 表名 limit 10, 10;
3 . 重点公式
根据 “当前的页码” 计算出 “当前页开始的索引”
当前页开始的索引 = ( 当前的页码 - 1 ) * 每页显示的条数
4 . 注意
limit 分页操作是 MySQL 的 “方言”