SELECT select_expr,... FROM tbl_name
[WHERE 条件]
[GROUP BY {col_name|position} HAVING 二次筛选]
[ORDER BY {col_name|position|expr} [ASC|DESC]]
[LIMIT 限制结果集的显示条数]
查询表中所有记录
SELECT * FROM tbl_name;
*所有字段
指定字段的信息
SELECT 字段名称,... FROM tbl_name
库名.表名
SELECT 字段名称,... FROM db_name.tbl_name;
给字段起别名
SELECT 字段名称 [AS] 别名名称,... FROM db_name.tbl_name;
给数据表起别名
SELECT 字段名称 ,... FROM tbl_name [AS] 别名;
表名.字段名的
SELECT tbl_name.col_name,... FROM tbl_name;
WHERE 条件
会筛选出符合条件的记录
比较运算符
> >= < <= != <> <=>
<=> 和 =的区别
<=>可以检测NULL值
IS [NOT] NULL
检测值是否为NULL或者NOT NULL
指定范围
[NOT] BETWEEN ... AND
指定集合
[NOT] IN(值,...)
逻辑运算符
AND
逻辑与
OR
逻辑或
匹配字符
[NOT] LIKE
%
任意长度的字符串
_
任意一个字符
GROUP BY 分组
把值相同放到一个组中,最终查询出的结果只会显示组中一条记录
分组配合GROUP_CONCAT()查看组中某个字段的详细信息
配合聚合函数使用
COUNT()
统计记录总数
如果写的是COUNT(字段名称),字段中的值为NULL,不统计进来
写COUNT(*)会统计NULL值
SUM()
求和
MAX()
求最大值
MIN()
求最小值
AVG()
求平均值
配合WITH ROLLUP关键使用
会在记录末尾添加一条记录,是上面所有记录的总和
HAVING子句对分组结果进行二次筛选
ORDER BY 排序
ORDER BY 字段名称 ASC|DESC
LIMIT 限制结果集显示条数
LIMIT 值
显示结果集的前几条记录
LIMIT offset,row_count
从offset开始,显示几条记录,offset从0开始
多表查询
笛卡尔积的形式
内连接的形式
查询两个表中符合连接条件的记录
SELECT 字段名称,... FROM tbl_name1
INNER JOIN tbl_name2
ON 连接条件
外连接的形式
左外连接
SELECT 字段名称,... FROM tbl_name1
LEFT [OUTER] JOIN tbl_name2
ON 条件;
先显示左表中的全部记录,再去右表中查询复合条件的记录,不符合的以NULL代替
右外连接
SELECT 字段名称,... FROM tbl_name1
RIGHT [OUTER] JOIN tbl_name2
ON 条件;