基本查询
SELECT [DISTINCT] <目标列表达式> [别名] [, <目标列表达式> [别名]] ...
FROM <表名或视图名> [别名] [, <表名或视图名> [别名]] ...
[WHERE <条件表达式>]
[GROUP BY <列名> [HAVING 条件表达式]]
[ORDER BY <列名> [ASC|DESC]]
[LIMIT <页大小> [ OFFSET <页数>]];去重
去重后聚集函数将对每个分组进行而不是整个结果表。
SELECT DISTINCT name FROM Student;分组
SELECT DISTINCT name FROM Student GROUP BY class;模糊查询
%:匹配零个或多个字符。- 左模糊:
WHERE NAME LIKE '%张',能走索引,性能最好。 - 右模糊:
WHERE NAME LIKE '张%',通常不走索引,全表扫描,性能差。 - 全模糊:
WHERE NAME LIKE '%张%',不走索引,全表扫描,性能最差。
- 左模糊:
_:匹配任意单个字符。
SELECT * FROM Student WHERE Sname LIKE '张_';聚合函数
COUNT(*):统计元组的个数。COUNT(列名):一列中值的个数。SUM(列名):计算一列值的和。AVG(列名)计算一列值的平均值。MAX(列名):求一列值的最大值。MIN(列名):求一列值的最小值。
多表查询
传统写法:
SELECT Student.Sno, Sname, Cno, Grade
FROM Student, SC
WHERE Student.Sno = SC.Sno;标准 JOIN 写法:
SELECT s.Sno, s.Sname, c.Cno, c.Grade
FROM Student s
JOIN SC c ON s.Sno = c.Sno;