> For the complete documentation index, see [llms.txt](https://lujw666.gitbook.io/learn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lujw666.gitbook.io/learn/sql/00-basic/02-yu-fa/03-where.md).

# WHERE

WHERE 子句用于过滤记录，提取满足指定标准的记录。

SQL WHERE 语法：

```sql
SELECT column1, column2, ... 
FROM table_name 
WHERE condition;
```

> **注意：** WHERE子句不仅用于SELECT语法，还用于UPDATE，DELETE语法等！

WHERE子句可以与以下类型的SQL语句一起使用：

* UPDATE
* DELETE

UPDATE语句：

```
UPDATE "table_name"
SET "column_1" = [new value]
WHERE "condition";
```

DELETE语句：

```
DELETE FROM "table_name"
WHERE "condition";
```

## SQL 运算符

运算符是保留字或主要用于 SQL 语句的 WHERE 子句中的字符，用于执行操作，例如：比较和算术运算。 这些运算符用于指定 SQL 语句中的条件，并用作语句中多个条件的连词。

常见运算符有以下几种：

* 算术运算符
* 比较运算符
* 逻辑运算符
* 否定条件运算符

### SQL 算术运算符

***

假设变量 a 的值是：10，变量 b 的值是：20，以下为各运算符执行结果：

| 运算符 | 描述                | 例子            |
| --- | ----------------- | ------------- |
| +   | 加法，执行加法运算。        | a + b 得到 30   |
| -   | 减法，执行减法运算。        | a - b 得到 -10  |
| \*  | 乘法，执行乘法运算。        | a \* b 得到 200 |
| /   | 用左操作数除以右操作数。      | b / a 得到 2    |
| %   | 用左操作数除以右操作数并返回余数。 | b % a 得到 0    |

### SQL 比较运算符

假设变量 a 的值是：10，变量 b 的值是：20，以下为各运算符执行结果：

| 运算符 | 描述                                     | 例子                 |
| --- | -------------------------------------- | ------------------ |
| =   | 检查两个操作数的值是否相等，如果是，则条件为真(true)。         | (a = b) is false.  |
| !=  | 检查两个操作数的值是否相等，如果值不相等则条件为真(true)。       | (a != b) is true.  |
| <>  | 检查两个操作数的值是否相等，如果值不相等则条件为真(true)。       | (a <> b) is true.  |
| >   | 检查左操作数的值是否大于右操作数的值，如果是，则条件为真(true)。    | (a > b) is false.  |
| <   | 检查左操作数的值是否小于右操作数的值，如果是，则条件为真(true)。    | (a < b) is true.   |
| >=  | 检查左操作数的值是否大于或等于右操作数的值，如果是，则条件为真(true)。 | (a >= b) is false  |
| <=  | 检查左操作数的值是否小于或等于右操作数的值，如果是，则条件为真(true)。 | (a <= b) is true.  |
| !<  | 检查左操作数的值是否不小于右操作数的值，如果是，则条件变为真(true)。  | (a !< b) is false. |
| !>  | 检查左操作数的值是否不大于右操作数的值，如果是，则条件变为真(true)。  | (a !> b) is true.  |

### SQL 逻辑运算符：

这是在 SQL 所有的逻辑运算符的列表。

| 运算符     | 描述                                                                    |
| ------- | --------------------------------------------------------------------- |
| ALL     | ALL运算符用于将值与另一个值集中的所有值进行比较。                                            |
| AND     | AND运算符允许在SQL语句的WHERE子句中指定多个条件。                                        |
| ANY     | ANY运算符用于根据条件将值与列表中的任何适用值进行比较。                                         |
| BETWEEN | BETWEEN运算符用于搜索在给定最小值和最大值内的值。                                          |
| EXISTS  | EXISTS运算符用于搜索指定表中是否存在满足特定条件的行。                                        |
| IN      | IN运算符用于将值与已指定的文字值列表进行比较。                                              |
| LIKE    | LIKE运算符用于使用通配符运算符将值与类似值进行比较。                                          |
| NOT     | NOT运算符反转使用它的逻辑运算符的含义。 例如：NOT EXISTS, NOT BETWEEN, NOT IN等等，这是一个否定运算符。 |
| OR      | OR运算符用于组合SQL语句的WHERE子句中的多个条件。                                         |
| IS NULL | IS NULL运算符用于将值与NULL值进行比较。                                             |
| UNIQUE  | UNIQUE运算符搜索指定表的每一行的唯一性(无重复项)。                                         |
