首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第1章 数据库和SQL
1-1 数据库是什么
我们身边的数据库
为什么DBMS那么重要
DBMS的种类
1-2 数据库的结构
RDBMS的常见系统结构
表的结构
1-3 SQL概要
标准SQL
SQL语句及其种类
SQL的基本书写规则
1-4 表的创建
表的内容的创建
数据库的创建(CREATE DATABASE语句)
表的创建(CREATE TABLE语句)
命名规则
数据类型的指定
约束的设置
1-5 表的删除和更新
表的删除(DROP TABLE语句)
表定义的更新(ALTER TABLE语句)
向Product表中插入数据
第2章 查询基础
2-1 SELECT语句基础
列的查询
查询出表中所有的列
为列设定别名
常数的查询
从结果中删除重复行
根据WHERE语句来选择记录
注释的书写方法
算术运算符
需要注意NULL
比较运算符
对字符串使用不等号时的注意事项
不能对NULL使用比较运算符
2-3 逻辑运算符
NOT运算符
AND运算符和OR运算符
通过括号强化处理
逻辑运算符和真值
含有NULL时的真值
第3章 聚合与排序
3-1 对表进行聚合查询
聚合函数
计算表中数据的行数
计算NULL之外的数据的行数
计算合计值
计算平均值
计算值和小值
使用聚合函数删除重复值(关键字DISTINCT)
3-2 对表进行分组
GROUP BY子句
聚合键中包含NULL的情况
使用WHERE子句时GROUP BY的执行结果
与聚合函数和GROUP BY子句有关的常见错误
3-3 为聚合结果指定条件
HAVING子句
HAVING子句的构成要素
相对于HAVING子句,更适合写在WHERE子句中的条件
3-4 对查询结果进行排序
ORDER BY子句
指定升序或降序
指定多个排序键
NULL的顺序
在排序键中使用显示用的别名
ORDER BY子句中可以使用的列
不要使用列编号
当前位置:
首页>>
技术小册>>
SQL基础教程(上)
小册名称:SQL基础教程(上)
### 章节标题:AND运算符与OR运算符 在SQL(Structured Query Language,结构化查询语言)中,逻辑运算符是构建复杂查询语句不可或缺的工具。它们允许我们根据多个条件来筛选数据,从而精确地定位到我们想要的信息。在本章中,我们将深入探讨SQL中的两个基本且强大的逻辑运算符:`AND`和`OR`,了解它们的工作原理、使用场景以及如何通过它们来构建更复杂的查询条件。 #### 一、引言 在数据库操作中,经常需要根据多个条件来过滤数据。例如,你可能想找出所有在特定部门工作且薪资超过某个水平的员工,或者查询所有库存量低于安全库存水平或即将过期的产品。这些需求就涉及到了逻辑运算符的使用。`AND`和`OR`是SQL中最常用的两个逻辑运算符,它们分别用于表示“与”和“或”的逻辑关系。 #### 二、AND运算符 ##### 2.1 定义与功能 `AND`运算符用于连接两个或多个条件,要求所有条件都必须为真(TRUE),整个表达式的结果才为真。在SQL查询中,如果一条记录同时满足所有通过`AND`连接的条件,那么这条记录就会被包含在查询结果中。 ##### 2.2 语法示例 假设我们有一个名为`Employees`的表,包含员工的ID、姓名、部门ID和薪资等信息。如果我们想找出所有在部门ID为5且薪资超过5000的员工,可以使用如下SQL语句: ```sql SELECT * FROM Employees WHERE DepartmentID = 5 AND Salary > 5000; ``` 这个查询会返回所有同时满足`DepartmentID = 5`和`Salary > 5000`条件的员工记录。 ##### 2.3 使用场景 - **多条件筛选**:当需要同时满足多个条件时,`AND`运算符是最佳选择。 - **范围限定**:结合比较运算符(如`>`、`<`、`=`等),可以精确限定查询范围。 - **数据清洗**:在数据预处理阶段,通过`AND`运算符可以排除不符合特定标准的记录。 #### 三、OR运算符 ##### 3.1 定义与功能 与`AND`相反,`OR`运算符用于连接两个或多个条件,只要其中一个条件为真(TRUE),整个表达式的结果就为真。在SQL查询中,如果一条记录满足通过`OR`连接的任一条件,那么这条记录就会被包含在查询结果中。 ##### 3.2 语法示例 继续以`Employees`表为例,如果我们想找出所有在部门ID为5或薪资超过5000的员工,可以使用如下SQL语句: ```sql SELECT * FROM Employees WHERE DepartmentID = 5 OR Salary > 5000; ``` 这个查询会返回所有满足`DepartmentID = 5`或`Salary > 5000`(或两者都满足)的员工记录。 ##### 3.3 使用场景 - **多路径筛选**:当满足任一条件即可时,`OR`运算符非常有用。 - **异常检测**:在寻找不符合常规模式的记录时,`OR`可以帮助我们定义多种可能的异常情况。 - **灵活查询**:结合其他逻辑和比较运算符,`OR`可以构建出非常灵活的查询条件。 #### 四、AND与OR的混合使用 在实际应用中,经常需要同时使用`AND`和`OR`来构建复杂的查询条件。为了明确优先级,SQL遵循数学中的逻辑运算优先级规则,即`AND`的优先级高于`OR`。如果需要改变默认的优先级,可以使用圆括号`()`来明确指定运算的先后顺序。 ##### 4.1 优先级示例 假设我们想要找出所有在部门ID为5且(薪资超过5000或拥有特定技能)的员工,正确的查询语句应该是: ```sql SELECT * FROM Employees WHERE DepartmentID = 5 AND (Salary > 5000 OR Skill = '特定技能'); ``` 如果不使用圆括号,SQL会先评估`AND`条件,再评估`OR`条件,这可能导致不符合预期的结果。 ##### 4.2 复杂查询构建 通过合理使用`AND`、`OR`以及圆括号,我们可以构建出极其复杂的查询条件,以满足各种复杂的业务需求。例如,查询所有在特定时间段内入职、且(薪资高于平均水平或拥有特定技能)且未离职的员工等。 #### 五、注意事项 - **性能考虑**:虽然`AND`和`OR`提供了强大的查询能力,但过多的条件组合可能会降低查询性能,尤其是在处理大型数据集时。因此,在设计查询时,应尽量避免不必要的复杂条件,并考虑使用索引来优化查询性能。 - **逻辑清晰**:在编写包含多个`AND`和`OR`的查询时,务必保持逻辑清晰,合理使用圆括号来明确条件之间的关系,避免产生歧义或错误的结果。 - **数据类型匹配**:确保比较操作中的数据类型相匹配,否则可能会导致查询失败或返回意外的结果。 #### 六、总结 `AND`和`OR`是SQL中不可或缺的逻辑运算符,它们允许我们根据多个条件来筛选数据,从而精确地定位到我们想要的信息。通过合理使用这两个运算符,我们可以构建出复杂而强大的查询语句,满足各种业务需求。然而,在享受它们带来的便利的同时,我们也需要注意性能优化、逻辑清晰以及数据类型匹配等问题,以确保查询的准确性和效率。
上一篇:
NOT运算符
下一篇:
通过括号强化处理
该分类下的相关小册推荐:
SQL基础教程(中)
PostgreSQL入门教程
SQL基础教程(下)
高性能的Postgres SQL