基本查询
SELECT 后面接字段 FROM表名
单表查询
* 匹配所有的的字段
SELECT * FROM 表名
查询指定字段
SELECT 字段1 FROM表名;
查询指定记录
SELECT 字段1,字段2
FROM 表名
WHERE 条件;
带IN关键字的查询
IN关键字表示必须满足IN条件缺一不可
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 字段 in (条件1,条件2)
ORDER BY 字段;
带NOT来检索不在条件范围的的记录
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 字段 NOT IN (条件1,条件2)
ORDER BY 字段;
带BETWEEN AND的范围查询
表示在两个条件范围中间的查询
SELECT 字段1,字段2
FROM 表名
WHERE 字段 BETWEEN条件1 AND条件2;
带LIKE的字符匹配查询
LIKE后面匹配任何%匹配所有_表示一个
SELECT 字段1,字段2
FROM 表名
WHERE 字段 LIKE '(字符)%(字符)';
查询空值
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 字段 IS NULL;
查询不为空值
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 字段 IS NOT NULL;
带AND的多条件查询
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 字段 条件 AND条件;
带OR的多条件查询
表示只要满足其中一个条件就可以了
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 字段 条件 OR条件;
查询结果不重复
SELECT DISTINCT 字段 FROM表名;
对查询结构进行排序
SELECT 字段
FROM 表名
ORDER BY 字段;
多列排序
SELECT 字段1,字段2
FROM 表名
ORDER BY 字段1,字段2;
指定方向排序
降序排序
SELECT 字段1,字段2
FROM 表名
ORDER BY 字段 DESC;
升序排序
SELECT 字段1,字段2
FROM 表名
ORDER BY 字段 ASC;
创建分组
SELECT 字段,COUNT(*) AS别名
FROM 表名
GROUP BY 字段;
使用HAVING过滤分组
SELECT 字段, GROUP_CONCAT(字段) AS别名
FROM 表名
GROUP BY 字段 HAVING COUNT(字段)条件;
使用WITH ROLLUP关键字之后,在所有的查询的分组记录之后增加一条记录
该记录计算查询出的所有记录的总和,即统计记录数量
SELECT 字段,COUNT(*) AS别名
FROM 表名
GROUP BY 字段 WITH ROLLUP;
多字段分组
SELECT *
FROM 表名
GROUP BY 字段,字段;
GROUP BY和ORDER BY一起使用
SELECT 字段, SUM(表名* 字段) AS别名
FROM 表名
GROUP BY 字段
HAVING SUM(表名*字段)条件;
使用LIMIT限制查询结果的数量
使用limit查询第一个参数从0开始第二个从1开始比如查询查询从第4条开始后面的3条
SELECT * FROM 表名 LIMIT 3,3;
使用聚合函数
AVG();返回某列的平均值
COUNT();返回某列的行数
MAX();返回某列的最大值
MIN();返回某列的最小值
SUM();返回某列的值得和
使用COUNT()函数
SELECT COUNT(*) AS 别名
FROM 表名;
使用SUM()函数
SELECT SUM(字段) AS别名
FROM 表名
WHERE 字段 条件;
使用AVG()函数
SELECT AVG(字段) AS别名
FROM 表名
WHERE 字段 条件;
使用MAX()函数
SELECT MAX(字段) AS别名
FROM 表名;
使用MIN()函数
SELECT MIN(字段) AS别名
FROM 表名;
使用连接查询
内连接查询
SELECT 表名.字段1,字段2,字段3,字段4
FROM 表名 INNER JOIN表名
ON 表名.字段= 表名.字段;
左连接查询LEFT JOIN返回包括左表中的所有记录和右表中连接字段相等的记录
SELECT 表名.字段,表名.字段
FROM 表名 LEFT OUTER JOIN表名
ON 表名.字段= 表名.字段;
右连接查询RIGHT JOIN返回包括右表中的所有记录和左表中连接字段相等的记录
SELECT 表名.字段,表名.字段
FROM 表名 RIGHT OUTER JOIN表名
ON 表名.字段= 表名.字段;
子查询
带ANY,SOME关键字的子查询
any,some关键字是同义词,表示满足其中任一条件,他们允许创建一个表达式对
子查询的返回值列表进行比较,只要满足内层子查询中任何一个比较条件,就返回一个结果
作为外层查询条件
SELECT 字段 FROM表名 WHERE条件 ANY
(SELECT 字段 FROM表名);
SELECT 字段 FROM表名 WHERE条件 SOME
(SELECT 字段 FROM表名);
带ALL关键字的子查询
使用ALL时需要满足所有内层查询的条件
SELECT 字段 FROM表名 WHERE条件 ALL
(SELECT 字段 FROM表名);
带EXISTS关键字的子查询
EXISTS关键字后面的参数是一个任意的子查询,系统对子查询进行运算
以判断它是否返回行,如果至少返回一行,那么EXISTS的结果为true,此时外层
查询语句将进行查询,如果子查询没有返回任何行,那么EXISTS的结果为false,
此时外层语句将不进行查询
SELECT * FROM 表名
WHERE 字段>条件AND EXISTS
(SELECT 字段 FROM表名 WHERE条件);
带IN关键字的子查询
IN关键字进行子查询时,内层查询语句仅仅返回一个数据列,这个数据列里的值将
提供给外层查询语句进行比较操作
SELECT 字段 FROM表名 WHERE字段 IN
(SELECT 字段 FROM表名 WHERE条件);
合并查询结果
利用UNION关键字,或者NUION ALL关键字分隔
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 条件
UNION ALL
SELECT 字段1,字段2,字段3
FROM 表名
WHERE 条件
使用AS关键字为表取别名
SELECT * FROM 表名 AS别名
WHERE 表名.字段 条件;
使用REGEXP关键字指定正则表达式的字符匹配
^匹配文本的开始
$匹配文本的结束
.匹配任何单个字符
*匹配零个或者多个在前面的字符
+匹配前面的字符1次或者多次
|匹配左边的条件或者右边的条件
[]只匹配其中的任何一个字符
SELECT * FROM 表名 WHERE字段 REGEXP '正则表达式';