目录

  1. WHERE 子句的基本语法
  2. 常用条件运算符
  3. ANDOR 逻辑运算符
  4. IN 子句
  5. BETWEEN 子句
  6. LIKE 子句
  7. IS NULLIS NOT NULL
  8. EXISTS 子句
  9. NOT 运算符
  10. 结合多个条件的查询示例
  11. 参考资料

WHERE 子句的基本语法

WHERE 子句用于从表中筛选符合指定条件的记录。它用于 SQL 查询的 SELECT、UPDATE、DELETE 等语句中。

基本语法:

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

示例:查询所有用户名为 ‘alice’ 的用户

SELECT * FROM users
WHERE username = 'alice';

此查询返回所有 username 等于 ‘alice’ 的记录。


常用条件运算符

WHERE 子句中,常用的条件运算符包括:

  • =: 等于
  • <>!=: 不等于
  • >: 大于
  • <: 小于
  • >=: 大于或等于
  • <=: 小于或等于
  • BETWEEN ... AND: 在一个范围内
  • IN (...): 在一组值中
  • LIKE: 模糊匹配
  • IS NULLIS NOT NULL: 判断空值

ANDOR 逻辑运算符

你可以使用 ANDOR 逻辑运算符连接多个条件,组合更复杂的查询。

示例:使用 AND 查询年龄大于 25 且状态为 ‘active’ 的用户

SELECT * FROM users
WHERE age > 25 AND status = 'active';

示例:使用 OR 查询用户名为 ‘alice’ 或年龄大于 30 的用户

SELECT * FROM users
WHERE username = 'alice' OR age > 30;


IN 子句

IN 子句允许你指定多个值,筛选字段值在指定列表中的记录。

基本语法:

SELECT column1, column2
FROM table_name
WHERE column_name IN (value1, value2, ...);

示例:查询用户名为 ‘alice’、’bob’ 或 ‘carol’ 的用户

SELECT * FROM users
WHERE username IN ('alice', 'bob', 'carol');


BETWEEN 子句

BETWEEN 用于筛选字段值在指定范围内的记录,范围包含边界值。

基本语法:

SELECT column1, column2
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

示例:查询年龄在 20 到 30 岁之间的用户

SELECT * FROM users
WHERE age BETWEEN 20 AND 30;


LIKE 子句

LIKE 用于模糊匹配字符串,可以使用 %_ 作为通配符:

  • % 表示零个或多个字符
  • _ 表示一个字符

基本语法:

SELECT column1, column2
FROM table_name
WHERE column_name LIKE 'pattern';

示例:查询用户名以 ‘a’ 开头的用户

SELECT * FROM users
WHERE username LIKE 'a%';

示例:查询邮箱中包含 ‘example’ 的用户

SELECT * FROM users
WHERE email LIKE '%example%';


IS NULLIS NOT NULL

IS NULL 用于检查某个字段是否为 NULLIS NOT NULL 用于检查字段是否不是 NULL

基本语法:

SELECT column1, column2
FROM table_name
WHERE column_name IS NULL;

示例:查询没有提供电子邮件地址的用户

SELECT * FROM users
WHERE email IS NULL;

示例:查询有电子邮件地址的用户

SELECT * FROM users
WHERE email IS NOT NULL;


EXISTS 子句

EXISTS 用于检查子查询是否返回结果。EXISTS 返回布尔值 TRUEFALSE

基本语法:

SELECT column1, column2
FROM table_name
WHERE EXISTS (SELECT * FROM other_table WHERE condition);

示例:查询所有有订单记录的用户

SELECT username
FROM users
WHERE EXISTS (SELECT * FROM orders WHERE orders.user_id = users.id);


NOT 运算符

NOT 运算符用于反转布尔值的结果,常用于与 INBETWEENEXISTS 等条件组合。

基本语法:

SELECT column1, column2
FROM table_name
WHERE NOT condition;

示例:查询年龄不在 20 到 30 岁之间的用户

SELECT * FROM users
WHERE age NOT BETWEEN 20 AND 30;


结合多个条件的查询示例

示例:查询用户名为 ‘alice’ 且年龄大于 25 岁的用户

SELECT * FROM users
WHERE username = 'alice' AND age > 25;

示例:查询用户名为 ‘alice’ 或 ‘bob’ 且状态为 ‘active’ 的用户

SELECT * FROM users
WHERE (username = 'alice' OR username = 'bob') AND status = 'active';


参考资料


如果你有更多复杂的查询需求或想了解如何优化查询,随时可以告诉我!