MySQL WHERE 子句

我们知道从 MySQL 表中使用 SELECT 语句来读取数据

如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中

WHERE 子句可以用于 MySQL 中过滤查询结果,只返回满足特定条件的行

使用 WHERE 子句从数据表中读取数据,语法如下:

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

参数说明:

  • column1, column2, ... 是你要选择的列的名称,如果使用 * 表示选择所有列。
  • table_name 是你要从中查询数据的表的名称。
  • WHERE condition 是用于指定过滤条件的子句。

更多说明:

  • 查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件
  • 你可以在 WHERE 子句中指定任何条件
  • 你可以使用 AND 或者 OR 指定一个或多个条件
  • WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令
  • WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据

下表中实例假定 A 为 10, B 为 20

操作符 描述 实例
= 等号,检测两个值是否相等,如果相等返回true (A = B) 返回false
<>, != 不等于,检测两个值是否相等,如果不相等返回true (A != B) 返回 true
> 大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true (A > B) 返回false
< 小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true (A < B) 返回 true
>= 大于等于号,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true (A >= B) 返回false
<= 小于等于号,检测左边的值是否小于或等于右边的值, 如果左边的值小于或等于右边的值返回true (A <= B) 返回 true

以下示例在之前创建的RoboMaster数据库下进行操作

当前数据库数据

mysql> SELECT * FROM Username;
+------+------------+-----------+
| id   | Username   | Password  |
+------+------------+-----------+
|    1 | steins_xin | 123456    |
|    2 | xin        | 123456789 |
+------+------------+-----------+
2 rows in set (0.01 sec)

示例:

  1. 等于条件:
SELECT * FROM username WHERE username = 'xin';

结果:

mysql> SELECT * FROM username WHERE username = 'xin';
+------+----------+-----------+
| id   | Username | Password  |
+------+----------+-----------+
|    2 | xin      | 123456789 |
+------+----------+-----------+
1 row in set (0.00 sec)
  1. 不等于条件:
SELECT * FROM username WHERE username != 'xin';

结果:

mysql> SELECT * FROM username WHERE username != 'xin';
+------+------------+----------+
| id   | Username   | Password |
+------+------------+----------+
|    1 | steins_xin | 123456   |
+------+------------+----------+
1 row in set (0.00 sec)
  1. 大于条件:
SELECT * FROM username WHERE id > 1;

结果:

mysql> SELECT * FROM username WHERE id > 1;
+------+----------+-----------+
| id   | Username | Password  |
+------+----------+-----------+
|    2 | xin      | 123456789 |
+------+----------+-----------+
1 row in set (0.00 sec)
  1. 小于条件:
SELECT * FROM username WHERE id < 2;

结果:

mysql> SELECT * FROM username WHERE id < 2;
+------+------------+----------+
| id   | Username   | Password |
+------+------------+----------+
|    1 | steins_xin | 123456   |
+------+------------+----------+
1 row in set (0.00 sec)
  1. 大于等于条件:
SELECT * FROM username WHERE id >= 1;

结果:

mysql> SELECT * FROM username WHERE id >= 1;
+------+------------+-----------+
| id   | Username   | Password  |
+------+------------+-----------+
|    1 | steins_xin | 123456    |
|    2 | xin        | 123456789 |
+------+------------+-----------+
2 rows in set (0.00 sec)
  1. 小于等于条件:
SELECT * FROM username WHERE id <= 2;

结果:

mysql> SELECT * FROM username WHERE id <= 2;
+------+------------+-----------+
| id   | Username   | Password  |
+------+------------+-----------+
|    1 | steins_xin | 123456    |
|    2 | xin        | 123456789 |
+------+------------+-----------+
2 rows in set (0.00 sec)
  1. 组合条件(AND、OR):
SELECT * FROM username WHERE username = 'xin' AND id > 1;

结果:

mysql> SELECT * FROM username WHERE username = 'xin' AND id > 1;
+------+----------+-----------+
| id   | Username | Password  |
+------+----------+-----------+
|    2 | xin      | 123456789 |
+------+----------+-----------+
1 row in set (0.00 sec)
  1. 模糊匹配条件(LIKE):
SELECT * FROM username WHERE username LIKE 's%';

结果:

mysql> SELECT * FROM username WHERE username LIKE 's%';
+------+------------+----------+
| id   | Username   | Password |
+------+------------+----------+
|    1 | steins_xin | 123456   |
+------+------------+----------+
1 row in set (0.00 sec)
  1. IN 条件:
SELECT * FROM username WHERE id IN ('1', '2', '3');
SELECT * FROM username WHERE username IN ('xin', 'steins_xin', '3');

结果:

mysql> SELECT * FROM username WHERE id IN ('1', '2', '3');
+------+------------+-----------+
| id   | Username   | Password  |
+------+------------+-----------+
|    1 | steins_xin | 123456    |
|    2 | xin        | 123456789 |
+------+------------+-----------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM username WHERE username IN ('xin', 'steins_xin', '3');
+------+------------+-----------+
| id   | Username   | Password  |
+------+------------+-----------+
|    1 | steins_xin | 123456    |
|    2 | xin        | 123456789 |
+------+------------+-----------+
2 rows in set (0.00 sec)
  1. NOT 条件:
SELECT * FROM username WHERE NOT username = 'xin';

结果:

mysql> SELECT * FROM username WHERE NOT username = 'xin';
+------+------------+----------+
| id   | Username   | Password |
+------+------------+----------+
|    1 | steins_xin | 123456   |
+------+------------+----------+
1 row in set (0.00 sec)
  1. BETWEEN 条件:

注意:BETWEEN 支持 int 和 DATE 格式

SELECT * FROM username WHERE id BETWEEN '2' AND '3';

结果:

mysql> SELECT * FROM username WHERE id BETWEEN '2' AND '3';
+------+----------+-----------+
| id   | Username | Password  |
+------+----------+-----------+
|    2 | xin      | 123456789 |
+------+----------+-----------+
1 row in set (0.00 sec)
  1. IS NULL 条件
SELECT * FROM username WHERE id IS NULL;

结果:

mysql> SELECT * FROM username WHERE id IS NULL;
Empty set (0.00 sec)
  1. IS NOT NULL 条件:
SELECT * FROM username WHERE id IS NOT NULL;

结果:

mysql> SELECT * FROM username WHERE id IS NOT NULL;
+------+------------+-----------+
| id   | Username   | Password  |
+------+------------+-----------+
|    1 | steins_xin | 123456    |
|    2 | xin        | 123456789 |
+------+------------+-----------+
2 rows in set (0.00 sec)

results matching ""

    No results matching ""