SELECT column1, column2, ...
FROM table
WHERE conditions;
SELECT first_name,
last_name,
salary
FROM employees
WHERE salary = 10000;
first_name | last_name | salary
------------+-----------+----------
Peter | Tucker | 10000.00
Janette | King | 10000.00
Harrison | Bloom | 10000.00
Hermann | Baer | 10000.00
(4 rows)
| 运算符 | 描述 | 示例 |
|---|---|---|
| = | 等于 | manager_id = 100 |
| != | 不等于 | department_id != 50 |
| <> | 不等于 | job_id <> ‘SA_REP’ |
| > | 大于 | salary > 10000 |
| >= | 大于等于 | hire_date >= ‘2007-01-01’ |
| < | 小于 | salary < 15000 |
| <= | 小于等于 | employee_id <= 123 |
| BETWEEN | 位于范围之内 | salary BETWEEN 10000 AND 15000 |
| IN | 属于列表之中 | job_id IN (‘AC_MGR’, ‘HR_REP’, ‘IT_PROG’) |
SELECT first_name,
last_name,
salary
FROM employees
WHERE salary BETWEEN 11000 AND 12000;
first_name | last_name | salary
------------+-----------+----------
Den | Raphaely | 11000.00
Alberto | Errazuriz | 12000.00
Gerald | Cambrault | 11000.00
Lisa | Ozer | 11500.00
Ellen | Abel | 11000.00
(5 rows)
SELECT first_name,
last_name
FROM employees
WHERE last_name LIKE 'Kin%';
first_name | last_name
------------+-----------
Steven | King
Janette | King
(2 rows)
“%en”匹配以“en”结束的字符串;
“%en%”匹配包含“en”的字符串;
“B_g”匹配“Big”、“Bug”等。
SELECT 1 WHERE 'this is 25%' LIKE '%25\%';
?column?
----------
1
(1 row)
SELECT 1 WHERE 'this is 25%' LIKE '%25@%' ESCAPE '@';
?column?
----------
1
(1 row)
SELECT first_name,
last_name
FROM employees
WHERE last_name NOT LIKE 'Kin%';
first_name | last_name
-------------+-------------
Neena | Kochhar
Lex | De Haan
Nancy | Greenberg
Daniel | Faviet
John | Chen
......
(105 rows)
SELECT first_name,
last_name
FROM employees
WHERE last_name LIKE 'kin%';
first_name | last_name
------------+-----------
(0 rows)
SELECT first_name,
last_name
FROM employees
WHERE last_name ILIKE 'kin%';
first_name | last_name
------------+-----------
Steven | King
Janette | King
(2 rows)
NULL = 0; -- 结果为空值
NULL = NULL; -- 结果为空值
NULL != NULL; -- 结果为空值
SELECT first_name,
last_name,
department_id
FROM employees
WHERE department_id IS NULL;
first_name | last_name | department_id
------------+-----------+---------------
Kimberely | Grant |
(1 row)
| TRUE | FALSE | NULL | |
|---|---|---|---|
| TRUE | TRUE | FALSE | NULL |
| FALSE | FALSE | FALSE | FALSE |
| NULL | NULL | FALSE | NULL |
SELECT first_name,
last_name,
salary
FROM employees
WHERE salary = 10000 AND last_name = 'King';
first_name | last_name | salary
------------+-----------+----------
Janette | King | 10000.00
(1 row)
| TRUE | FALSE | NULL | |
|---|---|---|---|
| TRUE | TRUE | TRUE | TRUE |
| FALSE | TRUE | FALSE | NULL |
| NULL | TRUE | NULL | NULL |
SELECT first_name,
last_name,
salary
FROM employees
WHERE salary = 10000 OR last_name = 'King';
first_name | last_name | salary
------------+-----------+----------
Steven | King | 24000.00
Peter | Tucker | 10000.00
Janette | King | 10000.00
Harrison | Bloom | 10000.00
Hermann | Baer | 10000.00
(5 rows)
SELECT 1 WHERE 1 = 0 AND 1/0 = 1;
SELECT 1 WHERE 1 = 1 OR 1/0 = 1;
SELECT first_name,
last_name,
salary
FROM employees
WHERE salary = 10000 OR salary = 24000 AND last_name = 'King';
first_name | last_name | salary
------------+-----------+----------
Steven | King | 24000.00
Peter | Tucker | 10000.00
Janette | King | 10000.00
Harrison | Bloom | 10000.00
Hermann | Baer | 10000.00
(5 rows)
SELECT first_name,
last_name,
salary
FROM employees
WHERE (salary = 10000 OR salary = 24000)
AND last_name = 'King';
first_name | last_name | salary
------------+-----------+----------
Steven | King | 24000.00
Janette | King | 10000.00
(2 rows)
| NOT | |
|---|---|
| TRUE | FALSE |
| FALSE | TRUE |
| NULL | NULL |
NOT BETWEEN,位于范围之外
NOT IN,不在列表之中
NOT LIKE,不匹配模式
NOT IS NULL,不为空,等价于IS NOT NULL
| 条件运算符 | 描述 |
|---|---|
| =, !=, <>, <, <=, >, >= | 比较运算 |
|
IS [NOT] NULL [NOT] LIKE [NOT] BETWEEN [NOT] IN [NOT] EXISTS |
比较运算 |
| NOT | 逻辑否定 |
| AND | 逻辑与 |
| OR | 逻辑或 |
原文作者:SQL编程思想;如有侵权,请联系管理员删除。