Skip to content

SQL AND & OR

SQL AND 和 OR 运算符用于在 WHERE 子句中组合多个条件,以过滤查询结果。

AND 运算符

AND 运算符用于当所有条件都为真时,才返回记录。

AND 语法

sql
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND ...;

OR 运算符

OR 运算符用于当至少有一个条件为真时,就返回记录。

OR 语法

sql
SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR ...;

AND 和 OR 组合使用

当需要同时使用 AND 和 OR 运算符时,建议使用括号来明确运算顺序,避免歧义。

组合使用语法

sql
SELECT column1, column2, ...
FROM table_name
WHERE (condition1 AND condition2) OR (condition3 AND condition4);

示例

假设我们有一个名为 students 的表,包含以下数据:

idnameagegradegender
1张三18高三
2李四17高二
3王五19高三
4赵六16高一
5钱七18高三

示例 1:使用 AND 运算符

查询年级为高三且年龄为 18 的学生:

sql
SELECT * FROM students WHERE grade = '高三' AND age = 18;

结果:

idnameagegradegender
1张三18高三
5钱七18高三

示例 2:使用 OR 运算符

查询年级为高三或年龄为 16 的学生:

sql
SELECT * FROM students WHERE grade = '高三' OR age = 16;

结果:

idnameagegradegender
1张三18高三
3王五19高三
4赵六16高一
5钱七18高三

示例 3:组合使用 AND 和 OR 运算符

查询年级为高三且(年龄为 18 或性别为女)的学生:

sql
SELECT * FROM students WHERE grade = '高三' AND (age = 18 OR gender = '女');

结果:

idnameagegradegender
1张三18高三
5钱七18高三

示例 4:组合使用多个 AND 和 OR 运算符

查询(年级为高三且年龄大于 17)或(年级为高一且性别为女)的学生:

sql
SELECT * FROM students WHERE (grade = '高三' AND age > 17) OR (grade = '高一' AND gender = '女');

结果:

idnameagegradegender
1张三18高三
3王五19高三
4赵六16高一
5钱七18高三

注意事项

  1. 运算顺序:在没有括号的情况下,AND 运算符的优先级高于 OR 运算符。为了避免歧义,建议始终使用括号来明确运算顺序。

  2. 条件数量:可以组合任意数量的 AND 和 OR 条件,但过多的条件会使查询变得复杂,影响可读性和性能。

  3. 性能考虑:使用 AND 和 OR 运算符时,数据库需要评估每个条件,因此过多的条件可能会影响查询性能。

小结

SQL AND 和 OR 运算符是组合多个查询条件的重要工具,通过合理使用这些运算符,可以更精确地过滤查询结果。在组合使用时,记得使用括号来明确运算顺序,以确保查询结果符合预期。