常见关键字使用
-- 简单查询
SELECT 列字段2 FROM 表名 WHERE 列字段1 = '列值1';
-- 别名 AS
SELECT 列字段1 AS 别名1 FROM 表名1;
-- 去重查询 DISTINCT
SELECT DISTINCT 列字段2 FROM 表名 WHERE 列字段1 = '列值1';
-- 区间查询 BETWEEN ... AND ...
SELECT 列字段2 FROM 表名 WHERE 列字段1 BETWEEN 某个列值 AND 另一个列值;
-- 区间查询 AND
SELECT 列字段2 FROM 表名 WHERE 列字段1 > 某个列值 AND 列字段1 < 另一个列值;
-- 或者关系查询 IN
SELECT * FROM 表名 WHERE 列字段1 IN ('列值1', '列值2', '列值3');
-- 或者关系查询 OR
SELECT * FROM 表名 WHERE 列字段1 = '列值1' OR 列字段2 = '列值2';
-- 升序查询(默认)ORDER BY 列字段 ASC
SELECT * FROM 表名 ORDER BY 列字段1 ASC;
-- 降序查询 ORDER BY 列字段 DESC
SELECT * FROM 表名 ORDER BY 列字段1 DESC;
-- 升序+降序查询 ORDER BY 列字段1 ASC, 列字段2 DESC
SELECT * FROM 表名 ORDER BY 列字段1 ASC, 列字段2 DESC;
-- 任意一个 ANY
SELECT * FROM 表名1 WHERE 列字段1 > ANY (SELECT 列字段1 FROM 表名1 WHERE 列字段2 = '列值2');
-- 每一个 ALL
SELECT * FROM 表名1 WHERE 列字段1 > ALL (SELECT 列字段1 FROM 表名1 WHERE 列字段2 = '列值2');
-- 显示前多少行 LIMIT
SELECT * FROM 表名 LIMIT 0, 行号;
常用函数
-- 统计个数 COUNT
SELECT COUNT(*) FROM 表名 WHERE 列字段1 = '列值1';
-- 找到最大 MAX
SELECT MAX(列字段1) FROM 表名;
-- 找到最小 MIM
SELECT MIN(列字段1) FROM 表名;
-- 找到平均 AVG
SELECT AVG(列字段1) FROM 表名;
-- 时间格式获取年份 YEAR
SELECT YEAR(列字段1) FROM 表名;
-- 获取当前年份 NOW
SELECT YEAR(NOW());
-- 获取年龄
SELECT YEAR(NOW()) - YEAR(列字段1) FROM 表名1;
模糊匹配
-- 模糊匹配 LIKE,% 表示任意个字符
SELECT * FROM 表名1 WHERE 列字段1 NOT LIKE '某值%';
分组查询
-- 分组平均值 GROUP BY
SELECT 列字段1, AVG (列字段2) FROM 表名 GROUP BY 列字段1;
-- GROUP BY ... HAVING
多表查询
-- 简单多表查询
SELECT 列字段1, 列字段2 FROM 表1, 表2 WHERE 表1.列字段1 = 表2.列字段2;
子查询
-- 简单子查询
SELECT 列字段1 FROM 表1 WHERE 列字段2 >
(SELECT 列字段2 FROM 表1 WHERE 列字段3 = '列值3');
SELECT 列字段1 FROM 表1 WHERE 列字段2 >
(SELECT 列字段2 FROM 表2 WHERE 列字段3 = '列值3');
-- WHERE 子查询来替代了分组查询
SELECT * FROM 表名1 别名1 WHERE 列值1 <
(SELECT AVG (列值1) FROM 表名1 别名2 WHERE 别名1.列值2 = 别名2.列值2);
连接查询
-- 内连接 INNER JOIN ... ON 或者 JOIN ... ON
-- 内连接求交集
SELECT * FROM 表名1 INNER JOIN 表名2 ON 表名1.列字段1 = 表名2.列字段2;
-- 左连接 LEFT JOIN ... ON 或者 LEFT OUTER JOIN ... ON
-- 左连接即左侧全查,不管右边存不存在
SELECT * FROM 表名1 LEFT JOIN 表名2 ON 表名1.列字段1 = 表名2.列字段2;
-- 右连接 RIGHT JOIN .. ON 或者 RIGHT OUTER JOIN ... ON
-- 右连接即右侧全查,不管左边存不存在
SELECT * FROM 表名1 RIGHT JOIN 表名2 ON 表名1.列字段1 = 表名2.列字段2;
-- 全外连结,很可以 mysql 已经没有全外连接了,可以通过 UNION 联合查询的形式来替代全外连接
-- 全外连结求并集
SELECT * FROM 表名1 LEFT JOIN 表名2 ON 表名1.列字段1 = 表名2.列字段2;
UNION
SELECT * FROM 表名1 RIGHT JOIN 表名2 ON 表名1.列字段1 = 表名2.列字段2;
联合查询
-- 简单联合查询 UNION 即求并集会自动去重
SELECT * FROM 表1 WHERE 列字段1 = '列值1' UNION
SELECT * FROM 表1 WHERE 列字段2 = '列值2'
来源:CSDN
作者:abcnull
链接:https://blog.csdn.net/abcnull/article/details/104786985