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)
示例:
- 等于条件:
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)
- 不等于条件:
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)
- 大于条件:
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)
- 小于条件:
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)
- 大于等于条件:
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)
- 小于等于条件:
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)
- 组合条件(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)
- 模糊匹配条件(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)
- 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)
- 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)
- 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)
- IS NULL 条件
SELECT * FROM username WHERE id IS NULL;
结果:
mysql> SELECT * FROM username WHERE id IS NULL;
Empty set (0.00 sec)
- 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)