数据查询语言(DQL)
查询结构
SELECT *|列名
FROM 表1
[JOIN 表2 ON 表1.字段=表2.字段]
WHERE 条件
GROUP BY 列名
HAVING 条件
ORDER BY 列名[ASC/DESC]
查询结构执行顺序
SELECT *|列名 --执行顺序第五
FROM 表名 [ON JOIN] --执行顺序第一
WHERE 条件 --执行顺序第二
GROUP BY 列名 --执行顺序第三
HAVING 条件 --执行顺序第四
ORDER BY 列名[ASC/DESC] --执行顺序第六
子查询结构,可以嵌套查询
SELECT *|列名
FROM [子查询]结果集表
WHERE 条件 = | [NOT] IN | EXISTS [子查询]结果集表
GROUP BY 列名
HAVING 条件 = | [NOT] IN | EXISTS [子查询]结果集表
ORDER BY 列名[ASC/DESC]
表连接
左连接
SELECT 列名
FROM 表1
LEFT JOIN 表2 ON 表1.字段=表2.字段
右连接
SELECT 列名
FROM 表1
RIGHT JOIN 表2 ON 表1.字段=表2.字段
内连接
SELECT 列名
FROM 表1
JOIN 表2 ON 表1.字段=表2.字段
结果集运算 集合运算
INTERSECT(交集),返回两个查询结果的共同记录
UNION ALL(并集),返回两个查询结果的所有记录,包括重复记录
UNION (并集),返回两个查询结果的所有记录,不包括重复记录
MINUS(补集)返回第一个结果集减去第二个结果的差集。
SQL查询常用的操作
DISTINCT去除重复
SELECT DISTINCT id FROM student_0;
NULL空置操作
SELECT id FROM student_0 WHERE id IS NOT NULL;
IN 范围值筛选
SELECT name FROM student_0 WHERE sage IN (15,17);
BETWEEN AND 范围取值
SELECT name FROM student_0 WHERE sage BETWEEN 15 AND 17;
LIKE 模糊查询
SELECT name FROM student_0 WHERE sname='%A_';
%:表示零个或者多个任意字符
_:表示任意一个字符
ROWNUM查询前N列
SELECT * FROM student_0 WHERE rownum<=10;