SQL AND,OR,NOT – SQL逻辑运算符
SQL提供逻辑运算符,该运算符有助于根据某些条件过滤结果集。
我们将要讨论的SQL逻辑运算符是AND和OR或者NOT。
这三个是SQL查询中最常用的逻辑运算符。
1. SQL AND运算符
当我们要将多个条件合并为WHERE子句的一部分时,将使用SQL AND运算符。
结果集将基于两个条件的满足条件进行过滤。
因此,如果两个条件都成立,则仅结果将被过滤。
为了组合多个条件,我们可以在WHERE子句中使用多个AND。
1.1)SQL单一AND运算符范例
SQL AND运算符的语法为:
SELECT column(s) FROM table_name WHERE condition1 AND condition2;
如以上在组合两个条件的语法中所述,我们可以使用一个AND运算符。
现在,我们将通过一些示例来尝试理解一个AND运算符。
让我们考虑以下学生表格作为示例。
RollNo | StudentName | StudentGender | StudentAge | StudentPercent |
---|---|---|---|---|
1 | George | M | 14 | 85 |
2 | Monica | F | 13 | 88 |
3 | Jessica | F | 14 | 84 |
4 | Tom | M | 13 | 78 |
方案:获取年龄在12岁以上且性别为女性的学生所占的百分比。
SELECT StudentPercent FROM Student WHERE StudentAge>12 AND StudentGender = "F";
输出:
StudentPercent |
---|
88 |
84 |
在上面的示例中,我们使用了一个AND运算符来组合两个条件,StudentAge大于12,StudentGender等于" F"。
让我们来看一个有关多个AND运算符的示例。
1.2)SQL多重AND运算符范例
SELECT column(s) FROM table_name WHERE condition1 AND condition2 AND condition3…AND conditionN;
如以上用于组合两个以上条件的语法中所述,我们可以使用多个AND运算符。
现在,通过一些示例,我们将尝试了解多个AND运算符。
让我们以先前定义的Student表为例。
方案:获取年龄在12岁以上且性别是女性且该比例超过80岁的学生所占的百分比。
SELECT StudentPercent FROM Student WHERE StudentAge>12 AND StudentGender = "F" AND StudentPercent>80;
输出:
StudentPercent |
---|
85 |
88 |
84 |
在上面的示例中,我们使用了一个AND运算符来组合三个条件,StudentAge大于12,StudentGender等于" F",StudentPercent大于80。
2. SQL OR运算符
当我们要将多个条件合并为WHERE子句的一部分时,将使用OR运算符。
将基于至少一个条件的满足来过滤结果集。
因此,如果至少有一个条件为真,则仅对结果进行过滤。
为了组合多个条件,我们可以在WHERE子句中使用多个OR。
2.1)SQL单或者运算符示例
语法:
SELECT column(s) FROM table_name WHERE condition1 OR condition2;
如上面结合两个条件的语法中所述,我们可以使用一个OR运算符。
现在,我们将通过一些示例来尝试了解一个OR运算符。
让我们重用先前定义的Student表作为示例。
方案:获取年龄在12岁以上或者性别为女性的学生所占的百分比。
查询:
SELECT StudentPercent FROM Student WHERE StudentAge>12 OR StudentGender = "F";
输出:
StudentPercent |
---|
85 |
88 |
84 |
78 |
在上面的示例中,我们使用一个OR运算符组合两个条件,StudentAge大于12,StudentGender等于" F"。
让我们尝试了解多个"或者"运算符。
2.2)SQL多重或者运算符示例
语法:
SELECT column(s) FROM table_name WHERE condition1 OR condition2 OR condition3 ... OR conditionN;
如以上用于组合两个以上条件的语法中所述,我们可以使用多个OR运算符。
现在,通过一些示例,我们将尝试了解多个OR运算符。
方案:获取年龄在12岁以上或者性别是女性或者在80岁以上的学生所占的百分比。
查询:
SELECT StudentPercent FROM Student WHERE StudentAge>12 OR StudentGender = "F" OR StudentPercent>80;
在上面的示例中,我们使用一个OR运算符来组合三个条件,StudentAge大于12,StudentGender等于" F",StudentPercent大于80。
3. SQL NOT运算符
当我们要过滤WHERE子句中不满足条件的结果集时,使用SQL NOT运算符。
让我们尝试通过一些示例来详细了解NOT运算符。
3.1)SQL NOT运算符示例
语法:
SELECT column(s) FROM table_name WHERE NOT condition;
如以上语法中所述,我们将NOT运算符与WHERE子句一起使用。
现在,我们将通过一些示例来理解NOT运算符。
方案:获得性别不是女性的学生百分比。
查询:
SELECT StudentPercent FROM Student WHERE NOT StudentGender = "F";
输出:
StudentPercent |
---|
85 |
78 |
在上面的示例中,我们使用了NOT运算符来识别学生的性别是否不是女性。
4. SQL逻辑运算符组合示例
我们试图分别理解这三个逻辑运算符。
但是,这三个运算符也可以组合使用。
让我们尝试了解不同的组合。
我们将以下提及的Employee表作为所有组合的示例用途。
EmpId | EmpName | EmpAge | EmpGender | EmpState |
---|---|---|---|---|
1 | Tony | 27 | M | Texas |
2 | Anjali | 32 | F | California |
3 | Jason | 34 | M | London |
4 | Salma | 33 | F | Texas |
5 | Anuj | 26 | M | California |
4.1)SQL AND OR示例
场景:获取州或者伦敦的男性雇员的姓名。
查询:
SELECT EmpName FROM Employee WHERE EmpGender = "M" AND (EmpState = "London" OR EmpState = "Texas");
输出:
EmpName |
---|
Tony |
Jason |
4.2)SQL AND NOT示例
场景:获取年龄在30岁以上且性别不是男性的员工的姓名。
查询:
SELECT EmpName FROM Employee WHERE EmpAge > 30 AND NOT EmpGender = "M";
输出:
EmpName |
---|
Anjali |
Salma |
4.3)SQL OR NOT示例
场景:获取年龄在30岁以上或者性别不是男性的员工的姓名。
查询:
SELECT EmpName FROM Employee WHERE EmpAge > 30 OR NOT EmpGender = "M";
输出:
EmpName |
---|
Anjali |
Jason |
Salma |