SQL 查询语句 2

1. 精确查询

精确查询是指通过 WHERE 子句中的条件,精确匹配某一列的值。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 查询姓名为 'SMITH' 的员工信息
SELECT empno, ename
FROM tmp_emp
WHERE ename = 'SMITH';

-- 查询雇员编号是 7369、7499、7521 的雇员信息
SELECT empno, ename
FROM tmp_emp
WHERE empno IN (7369, 7499, 7521);

-- 查询雇员编号不是 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
-- 查询名字第四个字符是 'M' 的雇员信息
SELECT ename
FROM tmp_emp
WHERE ename LIKE '___M%';

-- 查询名字包含 'C' 的雇员信息
SELECT ename
FROM tmp_emp
WHERE ename LIKE '%C%';

-- 查询名字以 'N' 结尾的雇员信息
SELECT ename
FROM tmp_emp
WHERE ename LIKE '%N';

-- 查询名字以 'S' 开头的雇员信息
SELECT ename
FROM tmp_emp
WHERE ename LIKE 'S%';

-- 查询 1981 年入职的所有雇员信息
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
-- 查询工资大于 1500 的员工信息,按工资升序排序
SELECT sal
FROM tmp_emp
WHERE sal > 1500
ORDER BY sal ASC;

-- 查询工资大于 1500 的员工信息,按工资降序排序
SELECT sal
FROM tmp_emp
WHERE sal > 1500
ORDER BY sal DESC;

-- 查询工资大于 1500 的员工信息,按工资默认排序(升序)
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
-- 查询工资大于 1500 的员工信息,按工资升序排序,如果工资相同,按姓名降序排序
SELECT sal, ename, comm, empno
FROM tmp_emp
WHERE sal > 1500
ORDER BY sal ASC, ename DESC;

-- 查询名字包含 'C' 且工资大于 1500 的员工信息,按工资降序排序
SELECT ename, sal
FROM tmp_emp
WHERE ename LIKE '%C%'
AND sal > 1500
ORDER BY sal DESC;

总结

  1. 精确查询:使用 = 和 IN 进行精确匹配。
  2. 模糊查询:使用 LIKE 和通配符 %_ 进行模糊匹配。
  3. 排序查询:使用 ORDER BY 对查询结果进行排序。
  4. 多条件排序:在 ORDER BY 中指定多个排序条件。

SQL 查询语句 2
https://blog.pangcy.cn/2018/09/04/数据库相关/Oracle/SQL 语法/SQL 查询语句 2/
作者
子洋
发布于
2018年9月4日
许可协议