首页
技术小册
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基础教程(上)
### 章节标题:根据WHERE语句来选择记录 在数据库查询的广阔世界中,`WHERE` 语句是 SQL(Structured Query Language)中不可或缺的一部分,它赋予了开发者从数据库中精确筛选所需数据的能力。无论是简单的条件筛选还是复杂的逻辑判断,`WHERE` 子句都能以高效、灵活的方式帮助我们实现目标。本章节将深入探讨 `WHERE` 语句的基本用法、进阶技巧以及在实际应用中的注意事项,确保读者能够熟练掌握这一强大工具。 #### 一、`WHERE` 语句基础 `WHERE` 子句用于指定过滤条件,以限制查询结果中返回的记录。在 SELECT 语句中,`WHERE` 子句紧跟在 FROM 子句之后(如果存在 JOIN 语句,则位于 JOIN 条件之后),其基本语法如下: ```sql SELECT column1, column2, ... FROM table_name WHERE condition; ``` - **column1, column2, ...**:指定要从表中检索的列名。 - **table_name**:指定要查询的表名。 - **condition**:定义哪些记录应被包含在结果集中。条件可以是简单的比较操作(如 =, <, >, !=, LIKE 等),也可以是复杂的逻辑表达式(使用 AND, OR, NOT 连接多个条件)。 **示例 1**: 查询员工表中所有年龄大于30岁的员工姓名和年龄。 ```sql SELECT name, age FROM employees WHERE age > 30; ``` #### 二、比较运算符 `WHERE` 子句中常用的比较运算符包括: - **=** 等于 - **<> 或 !=** 不等于 - **>** 大于 - **<** 小于 - **>=** 大于等于 - **<=** 小于等于 **示例 2**: 查询库存中数量少于10的商品ID和名称。 ```sql SELECT product_id, product_name FROM inventory WHERE quantity < 10; ``` #### 三、逻辑运算符 为了构建更复杂的筛选条件,可以使用逻辑运算符 `AND`、`OR` 和 `NOT` 来组合多个条件。 - **AND**:仅当所有条件都为真时,结果才为真。 - **OR**:当至少一个条件为真时,结果就为真。 - **NOT**:对条件的真假性取反。 **示例 3**: 查询员工表中既在销售部门(department = 'Sales')又年龄大于25岁的员工信息。 ```sql SELECT * FROM employees WHERE department = 'Sales' AND age > 25; ``` **示例 4**: 查询员工表中在销售部门或技术部门(department = 'Tech')的员工信息。 ```sql SELECT * FROM employees WHERE department = 'Sales' OR department = 'Tech'; ``` **示例 5**: 查询员工表中不在销售部门的员工信息。 ```sql SELECT * FROM employees WHERE NOT department = 'Sales'; ``` #### 四、IN 运算符 当需要在多个值之间进行比较时,`IN` 运算符提供了一种更简洁的方式。 **示例 6**: 查询部门为销售或技术的所有员工信息。 ```sql SELECT * FROM employees WHERE department IN ('Sales', 'Tech'); ``` #### 五、BETWEEN 运算符 `BETWEEN` 运算符用于选择某个范围内的值,包括边界值。 **示例 7**: 查询年龄在25到35岁之间的员工信息。 ```sql SELECT * FROM employees WHERE age BETWEEN 25 AND 35; ``` #### 六、LIKE 运算符 `LIKE` 运算符用于在 `WHERE` 子句中搜索列中的指定模式。通常与通配符 `%`(表示任意数量的字符)和 `_`(表示一个字符)一起使用。 **示例 8**: 查询员工表中名字以"J"开头的员工信息。 ```sql SELECT * FROM employees WHERE name LIKE 'J%'; ``` **示例 9**: 查询员工表中名字第二个字符是"o"的员工信息。 ```sql SELECT * FROM employees WHERE name LIKE '_o%'; ``` #### 七、NULL 值处理 在 SQL 中,`NULL` 表示缺失或未知的值。由于 `NULL` 的特殊性,它不能直接用等号(=)来比较。要检查 `NULL` 值,应使用 `IS NULL` 或 `IS NOT NULL`。 **示例 10**: 查询没有分配电子邮件地址的员工信息。 ```sql SELECT * FROM employees WHERE email IS NULL; ``` #### 八、使用 WHERE 语句的注意事项 1. **性能考虑**:在大型数据库中使用复杂的 `WHERE` 条件可能会影响查询性能。考虑使用索引来优化查询。 2. **数据类型匹配**:确保比较操作中的数据类型匹配,否则可能需要使用类型转换函数。 3. **避免全表扫描**:尽量通过合理的条件限制减少查询需要扫描的数据量。 4. **逻辑清晰**:当使用多个条件时,确保逻辑清晰,避免混淆。 #### 九、高级用法 随着 SQL 知识的深入,你还可以探索 `WHERE` 子句与聚合函数(如 COUNT, SUM, AVG 等)结合使用的场景,以及如何在子查询或视图定义中使用 `WHERE` 子句。 ### 结语 `WHERE` 语句是 SQL 查询的基石,它让数据筛选变得简单而强大。通过掌握其基本用法和进阶技巧,你可以构建出既高效又灵活的查询语句,从而更准确地从数据库中提取所需信息。希望本章节的内容能帮助你更好地理解和运用 `WHERE` 语句,在数据库管理的道路上迈出坚实的一步。
上一篇:
从结果中删除重复行
下一篇:
注释的书写方法
该分类下的相关小册推荐:
SQL基础教程(中)
高性能的Postgres SQL
SQL基础教程(下)
PostgreSQL入门教程