1. 精确查询
精确查询是指通过 WHERE
子句中的条件,精确匹配某一列的值。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| SELECT empno, ename FROM tmp_emp WHERE ename = 'SMITH';
SELECT empno, ename FROM tmp_emp WHERE empno IN (7369, 7499, 7521);
SELECT empno, ename FROM tmp_emp WHERE empno NOT IN (7369, 7499, 7521);
|
注意:
=
用于精确匹配某一列的值。
IN
用于匹配多个值,相当于多个 OR
条件的简写。
NOT IN
用于排除指定的值。
2. 模糊查询
模糊查询通过 LIKE
关键字实现,通常结合通配符 %
和 _
使用。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| SELECT ename FROM tmp_emp WHERE ename LIKE '___M%';
SELECT ename FROM tmp_emp WHERE ename LIKE '%C%';
SELECT ename FROM tmp_emp WHERE ename LIKE '%N';
SELECT ename FROM tmp_emp WHERE ename LIKE 'S%';
SELECT hiredate FROM tmp_emp WHERE hiredate LIKE '%81%';
|
通配符说明:
%
:匹配任意长度的字符(包括空字符)。
_
:匹配单个字符。
注意:
- 模糊查询通常用于字符串匹配。
- 日期字段的模糊查询需要确保日期格式与数据库一致。
3. 排序查询
通过 ORDER BY
子句,可以对查询结果进行排序。默认是升序排序(ASC
),也可以指定降序排序(DESC
)。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| SELECT sal FROM tmp_emp WHERE sal > 1500 ORDER BY sal ASC;
SELECT sal FROM tmp_emp WHERE sal > 1500 ORDER BY sal DESC;
SELECT sal FROM tmp_emp WHERE sal > 1500 ORDER BY sal;
|
注意:
ASC
表示升序(从小到大),DESC
表示降序(从大到小)。
- 如果未指定排序方式,默认是升序。
4. 多条件排序
在 ORDER BY
子句中,可以指定多个排序条件。当第一个条件相同时,按第二个条件排序,依此类推。
示例:
1 2 3 4 5 6 7 8 9 10
| SELECT sal * 12 AS 年薪, ename, comm, empno FROM tmp_emp WHERE sal > 1500 ORDER BY 年薪, ename DESC;
SELECT ename, sal FROM tmp_emp ORDER BY deptno;
|
注意:
- 多条件排序时,优先级从左到右。
- 可以使用列名、别名或列序号(如
ORDER BY 1, 2
)指定排序条件。
5. 综合示例
以下是一个综合示例,结合了精确查询、模糊查询、排序和多条件排序。
1 2 3 4 5 6 7 8 9 10 11 12
| SELECT sal, ename, comm, empno FROM tmp_emp WHERE sal > 1500 ORDER BY sal ASC, ename DESC;
SELECT ename, sal FROM tmp_emp WHERE ename LIKE '%C%' AND sal > 1500 ORDER BY sal DESC;
|
总结
- 精确查询:使用 = 和
IN
进行精确匹配。
- 模糊查询:使用
LIKE
和通配符 %
、_
进行模糊匹配。
- 排序查询:使用
ORDER BY
对查询结果进行排序。
- 多条件排序:在
ORDER BY
中指定多个排序条件。