SELECT 属性列表
FROM [WHERE 条件表达式1]
[GROUP BY 属性名1 [HAVING条件表达式]]
[ORDER BY 属性名2 [ASC|DESC]];
默认情况下是ASC(升序)。
带IN 关键字的查询:
[NOT] IN (元素1,元素2,...,元素n)
带BETWEEN AND 的范围查询:
[NOT] BETWEEN 取值1 AND 取值2
带LIKE的字符匹配查询:
[NOT] LIKE '字符串'
查询空值:
IS [NOT] NULL
带AND的多条件查询:
条件表达式1 AND 条件表达式2 [...AND 条件表达式n]
带OR的多条件查询
条件表达式1 OR 条件表达式2 [...OR 条件表达式n]
查询结果不重复:
SELECT DISTINCT 属性名
对查询结果排序:
ORDER BY 属性名 [ASC | DESC]
分组查询:
GROUP BY 属性名 [HAVING条件表达式][WITH ROLLUP]
GROUP BY关键字与GROUP_CONCAT()函数一起使用时,每个分组中指定字段值都显示出来。
GROUP BY关键字通常与集合函数一起使用。
用LIMIT限制查询结果的数量:
1.不指定初始位置
LIMIT 记录数
2.指定初始位置
LIMIT 初始位置,记录数
集合函数:
COUNT()用来统计记录的条数。
SUM()函数求和,只适合于数值类型。
AVG()函数求平均值。
MAX()不仅仅适合于数值类型,也适用于字符类型。
MIN()同上。
连接查询:
1、内连接查询(常用)
SELECT 属性列表1(表1的), 属性列表2(表2的) FROM 表1 ,表2 [WHERE ...]
2、外连接查询
SELECT 属性名列表 FROM 表名1 LEFT|RIGHT JOIN 表名2 ON 表名1.属性名=表名2.属性名2;
(1)左连接查询
(2)右连接查询
子查询:
带IN关键字的子查询:
SELECT * FROM 表1 WHERE 属性名 IN (SELECT 属性名 FROM 表2);
带比较运算符的子查询:
SELECT * FROM 表1 WHERE 属性名>=(SELECT 属性名 FROM 表2);
带EXISTS关键字的子查询
SELECT * FROM 表1 WHERE EXISTS(SELECT 属性名 FROM 表2);
使用EXISTS关键字时,内层查询语句不返回查询的记录,而是返回一个真假值。
true时外层查询语句进行查询,否则不查询。
带ANY关键字的子查询:
SELECT * FROM 表1 WHERE 属性名>=ANY(SELECT 属性名 FROM 表2);
ANY关键字表示满足其中任一条件。
带ALL关键字的子查询:
SELECT * FROM 表1 WHERE 属性名>=ALL(SELECT 属性名 FROM 表2);
ALL关键字表示满足所有条件。
合并查询结果:
SELECT 语句1 UNION|UNION ALL
SELECT 语句2 UNION|UNION ALL...
SELECT语句n
使用UNION关键字时,数据库系统会将所有的查询结果合并在一起,然后去除掉相同的记录。
而UNION ALL关键字则只是简单的合并到一起。
为表和字段取别名:
1、为表取别名:
表名 表的别名
SELECT * FROM 表名 表的别名;
SELECT * FROM department d where d.d_id=1001;
2、为字段取别名:
属性名 [AS] 别名
SELECT d_id AS department_id,d_name AS department_name FROM department;
使用正则表达式查询:
属性名 REGEXP '匹配方式'
^:匹配以特定字符或字符串开头的记录;
$:匹配以特定字符或字符串结尾的记录;
.:可替代字符串中的任意一个字符;
[]:将需要查询字符组成一个字符集,只要记录中包含[]中的任意字符,该记录将会被查询出来;
[^字符集合]:匹配指定字符以外的字符;
'字符串|字符串':匹配指定字符串;
*:匹配多个该符号之前的字符,至少表示0个字符;
+:匹配多个该符号之前的字符,至少表示一个字符;
_: 代表单个字符;
%:代表任意长度的字符;
“字符串{M}”:字符串连续出现M次;
“字符串{M,N}”:字符串连续出现至少M次,至多N次。