要从表中检索数据,将查询该表。使用 SQL SELECT 语句来执行此操作。该语句分为选择列表(列出要返回的列的部分)、表列表(列出要从中检索数据的表的部分)和可选资格(指定任何限制的部分)。
以下查询列出表中所有员工的所有列,没有任何特定顺序。
SELECT * FROM emp;
在这里,选择列表中的“*”表示所有列。下面是此查询的输出。
empno | ename | job | mgr | hiredate | sal | comm | deptno
-------+--------+-----------+------+--------------------+---------+---------+--------
7369 | SMITH | CLERK | 7902 | 17-DEC-80 00:00:00 | 800.00 | | 20
7499 | ALLEN | SALESMAN | 7698 | 20-FEB-81 00:00:00 | 1600.00 | 300.00 | 30
7521 | WARD | SALESMAN | 7698 | 22-FEB-81 00:00:00 | 1250.00 | 500.00 | 30
7566 | JONES | MANAGER | 7839 | 02-APR-81 00:00:00 | 2975.00 | | 20
7654 | MARTIN | SALESMAN | 7698 | 28-SEP-81 00:00:00 | 1250.00 | 1400.00 | 30
7698 | BLAKE | MANAGER | 7839 | 01-MAY-81 00:00:00 | 2850.00 | | 30
7782 | CLARK | MANAGER | 7839 | 09-JUN-81 00:00:00 | 2450.00 | | 10
7788 | SCOTT | ANALYST | 7566 | 19-APR-87 00:00:00 | 3000.00 | | 20
7839 | KING | PRESIDENT | | 17-NOV-81 00:00:00 | 5000.00 | | 10
7844 | TURNER | SALESMAN | 7698 | 08-SEP-81 00:00:00 | 1500.00 | 0.00 | 30
7876 | ADAMS | CLERK | 7788 | 23-MAY-87 00:00:00 | 1100.00 | | 20
7900 | JAMES | CLERK | 7698 | 03-DEC-81 00:00:00 | 950.00 | | 30
7902 | FORD | ANALYST | 7566 | 03-DEC-81 00:00:00 | 3000.00 | | 20
7934 | MILLER | CLERK | 7782 | 23-JAN-82 00:00:00 | 1300.00 | | 10
(14 rows)
您可以在选择列表中指定任意表达式。例如,您可以执行:
SELECT ename, sal, sal * 24 AS yearly_salary, deptno FROM emp;
ename | sal | yearly_salary | deptno
--------+---------+---------------+--------
SMITH | 800.00 | 19200.00 | 20
ALLEN | 1600.00 | 38400.00 | 30
WARD | 1250.00 | 30000.00 | 30
JONES | 2975.00 | 71400.00 | 20
MARTIN | 1250.00 | 30000.00 | 30
BLAKE | 2850.00 | 68400.00 | 30
CLARK | 2450.00 | 58800.00 | 10
SCOTT | 3000.00 | 72000.00 | 20
KING | 5000.00 | 120000.00 | 10
TURNER | 1500.00 | 36000.00 | 30
ADAMS | 1100.00 | 26400.00 | 20
JAMES | 950.00 | 22800.00 | 30
FORD | 3000.00 | 72000.00 | 20
MILLER | 1300.00 | 31200.00 | 10
(14 rows)
请注意,如何使用 AS 子句来重新标记输出列。(AS 子句是可选的。)
通过添加指定所需行的 WHERE 子句,可以限定查询。WHERE 子句包含布尔(真值)表达式,仅返回布尔表达式为 true 的行。允许在资格中使用常见的布尔运算符(AND、OR 和 NOT)。例如,以下检索部门 20 中工资超过 1000.00 美元的员工:
SELECT ename, sal, deptno FROM emp WHERE deptno = 20 AND sal > 1000;
ename | sal | deptno
-------+---------+--------
JONES | 2975.00 | 20
SCOTT | 3000.00 | 20
ADAMS | 1100.00 | 20
FORD | 3000.00 | 20
(4 rows)
您可以请求按排序顺序返回查询结果:
SELECT ename, sal, deptno FROM emp ORDER BY ename;
ename | sal | deptno
--------+---------+--------
ADAMS | 1100.00 | 20
ALLEN | 1600.00 | 30
BLAKE | 2850.00 | 30
CLARK | 2450.00 | 10
FORD | 3000.00 | 20
JAMES | 950.00 | 30
JONES | 2975.00 | 20
KING | 5000.00 | 10
MARTIN | 1250.00 | 30
MILLER | 1300.00 | 10
SCOTT | 3000.00 | 20
SMITH | 800.00 | 20
TURNER | 1500.00 | 30
WARD | 1250.00 | 30
(14 rows)
您可以请求从查询结果中删除重复行:
SELECT DISTINCT job FROM emp;
job
-----------
ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN
(5 rows)
下一节说明如何在一个查询中从多个表获取行。
文档内容是否对您有帮助?