首页
技术小册
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基础教程(上)
### 章节 2-3 逻辑运算符 在SQL的广阔世界中,逻辑运算符扮演着至关重要的角色,它们如同构建查询语句的“胶水”,允许我们根据复杂的条件组合来筛选、排序和聚合数据。本章节将深入解析SQL中的逻辑运算符,包括它们的基本概念、使用场景以及如何通过它们来构建强大而灵活的查询语句。 #### 2.3.1 逻辑运算符概览 逻辑运算符用于连接或修改条件语句中的条件,以决定SQL查询中哪些记录应该被选中或操作。SQL支持三种基本的逻辑运算符:AND、OR和NOT,以及在某些数据库系统中可能支持的XOR(异或)运算符,尽管后者不是SQL标准的一部分。 - **AND**:只有当所有条件都为真时,整个表达式才为真。 - **OR**:只要至少有一个条件为真,整个表达式就为真。 - **NOT**:反转条件的真假值。 #### 2.3.2 AND运算符 AND运算符用于确保所有指定的条件同时满足时,记录才会被选中。这在需要从数据库表中筛选符合多个条件的记录时非常有用。 **示例**:假设有一个名为`employees`的表,包含员工的`id`、`name`、`department`和`salary`字段,我们想要找出所有在IT部门且薪水超过5000的员工。 ```sql SELECT * FROM employees WHERE department = 'IT' AND salary > 5000; ``` 在这个查询中,`AND`运算符确保了只有那些同时满足`department = 'IT'`和`salary > 5000`条件的记录才会被选中。 #### 2.3.3 OR运算符 与AND运算符相反,OR运算符允许在至少一个条件为真时选择记录。这在需要基于多个可能条件之一进行筛选时非常有用。 **示例**:继续上面的例子,如果我们想要找出所有在IT部门或者薪水超过5000的员工,我们可以使用OR运算符。 ```sql SELECT * FROM employees WHERE department = 'IT' OR salary > 5000; ``` 这个查询会返回所有在IT部门的员工,以及所有薪水超过5000的员工,包括那些既不在IT部门但薪水超过5000的员工。 #### 2.3.4 NOT运算符 NOT运算符用于反转条件的真假值。它通常用于排除特定条件下的记录。 **示例**:如果我们想要找出所有不在IT部门的员工,可以使用NOT运算符。 ```sql SELECT * FROM employees WHERE NOT department = 'IT'; ``` 注意,在某些情况下,为了清晰和兼容性,建议使用`<>`或`!=`来代替`NOT =`进行不等比较。 ```sql SELECT * FROM employees WHERE department <> 'IT'; ``` #### 2.3.5 组合使用逻辑运算符 逻辑运算符可以组合使用,以构建更复杂的条件表达式。当多个条件需要同时满足或至少满足一个时,可以通过括号`()`来明确条件的组合方式,提高查询的可读性和准确性。 **示例**:假设我们要找出所有在IT部门且薪水超过5000,或者是在销售部门但薪水不超过3000的员工。 ```sql SELECT * FROM employees WHERE (department = 'IT' AND salary > 5000) OR (department = 'Sales' AND salary <= 3000); ``` 在这个查询中,括号确保了首先评估每个括号内的条件组合(即`AND`操作),然后再根据`OR`运算符的结果来决定哪些记录应该被选中。 #### 2.3.6 注意事项 - **优先级**:逻辑运算符有其固有的优先级,通常是`NOT` > `AND` > `OR`。使用括号可以显式地改变这一顺序,确保查询按预期工作。 - **性能考虑**:复杂的逻辑条件可能会降低查询性能,特别是在处理大型数据集时。确保只包含必要的条件,并考虑使用索引来优化查询。 - **可读性**:编写SQL查询时,保持代码的可读性非常重要。合理使用空格、换行和注释,可以使复杂的逻辑表达式更易于理解和维护。 #### 2.3.7 实战演练 为了更好地掌握逻辑运算符的使用,你可以尝试以下练习: 1. **基础练习**:编写一个查询,从`employees`表中选出所有在HR部门或薪水至少为6000的员工。 ```sql SELECT * FROM employees WHERE department = 'HR' OR salary >= 6000; ``` 2. **进阶练习**:编写一个查询,从`orders`表中选出所有在2023年1月1日之后下单,且订单金额大于1000但小于5000的订单。 ```sql SELECT * FROM orders WHERE order_date > '2023-01-01' AND amount > 1000 AND amount < 5000; ``` 3. **挑战练习**:编写一个查询,从`products`表中选出所有既非电子产品也非食品类别的产品,并且它们的库存量大于100。 ```sql SELECT * FROM products WHERE category NOT IN ('Electronics', 'Food') AND stock_quantity > 100; ``` 通过本章的学习,你应该能够熟练地使用SQL中的逻辑运算符来构建各种复杂的查询条件,从而更高效地管理和分析数据库中的数据。记住,实践是掌握SQL的关键,不妨多动手尝试不同的查询语句,以加深理解和记忆。
上一篇:
不能对NULL使用比较运算符
下一篇:
NOT运算符
该分类下的相关小册推荐:
高性能的Postgres SQL
SQL基础教程(中)
SQL基础教程(下)
PostgreSQL入门教程