首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第4章 数据更新
4-1 数据的插入(INSERT语句的使用方法)
什么是INSERT
INSERT语句的基本语法
列清单的省略
插入NULL
插入默认值
从其他表中复制数据
4-2 数据的删除(DELETE语句的使用方法)
DROP TABLE语句和DELETE语句
DELETE语句的基本语法
指定删除对象的DELETE语句(搜索型DELETE)
4-3 数据的更新(UPDATE语句的使用方法)
UPDATE语句的基本语法
指定条件的UPDATE语句(搜索型UPDATE)
使用NULL进行更新
多列更新
4-4 事务
什么是事务
创建事务
ACID特性
第5章 复杂查询
5-1 视图
视图和表
创建视图的方法
视图的限制① ——定义视图时不能使用ORDER BY子句
视图的限制② ——对视图进行更新
删除视图
5-2 子查询
子查询和视图
子查询的名称
标量子查询
标量子查询的书写位置
使用标量子查询时的注意事项
5-3 关联子查询
普通的子查询和关联子查询的区别
关联子查询也是用来对集合进行切分的
结合条件一定要写在子查询中
第6章 函数、谓词、CASE表达式
6-1 各种各样的函数
函数的种类
算术函数
字符串函数
日期函数
转换函数
6-2 谓词
什么是谓词
LIKE谓词——字符串的部分一致查询
BETWEEN谓词——范围查询
IS NULL、IS NOT NULL——判断是否为NULL
IN谓词——OR的简便用法
使用子查询作为IN谓词的参数
EXIST谓词
6-3 CASE表达式
什么是CASE表达式
CASE表达式的语法
CASE表达式的使用方法
第7章 集合运算
7-1 表的加减法
什么是集合运算
表的加法——UNION
集合运算的注意事项
包含重复行的集合运算——ALL选项
选取表中公共部分——INTERSECT
记录的减法——EXCEPT
7-2 联结(以列为单位对表进行联结)
什么是联结
内联结——INNER JOIN
外联结——OUTER JOIN
3张以上的表的联结
交叉联结——CROSS JOIN
联结的特定语法和过时语法
当前位置:
首页>>
技术小册>>
SQL基础教程(中)
小册名称:SQL基础教程(中)
### 章节:什么是谓词 在SQL(Structured Query Language,结构化查询语言)的广阔世界里,谓词扮演着至关重要的角色,它们是构建查询语句、实现数据筛选与逻辑判断的基础构件。理解谓词,对于掌握SQL查询的精髓至关重要。本章将深入探讨谓词的概念、类型、用法及其在SQL查询中的应用,帮助读者构建更加精准、高效的数据检索逻辑。 #### 一、谓词的基本概念 谓词,简而言之,是一个返回真(TRUE)或假(FALSE)值的表达式。在SQL中,谓词主要用于WHERE子句、HAVING子句以及某些SQL函数(如CASE语句)中,以实现对数据行的筛选、分组后的条件过滤或复杂的逻辑判断。谓词的使用使得SQL查询能够基于特定的条件来检索、更新或删除数据,从而满足多样化的数据处理需求。 #### 二、谓词的分类 SQL中的谓词种类繁多,根据其功能和应用场景的不同,可以大致分为以下几类: ##### 1. 比较谓词 比较谓词用于比较两个值或表达式的大小、相等性或不等性。常见的比较谓词包括: - `=`(等于) - `<>` 或 `!=`(不等于) - `>`(大于) - `<`(小于) - `>=`(大于等于) - `<=`(小于等于) 例如,查询员工表中薪资大于5000的所有员工: ```sql SELECT * FROM employees WHERE salary > 5000; ``` ##### 2. 范围谓词 范围谓词用于检查某个值是否落在指定的范围内,常用的有`BETWEEN ... AND ...`。 例如,查询库存量在100到500之间的商品: ```sql SELECT * FROM products WHERE stock BETWEEN 100 AND 500; ``` ##### 3. 列表谓词 列表谓词用于检查某个值是否属于一个指定的列表内,常用的有`IN`。 例如,查询部门编号为1、3或5的所有员工: ```sql SELECT * FROM employees WHERE department_id IN (1, 3, 5); ``` ##### 4. 逻辑谓词 逻辑谓词用于组合多个条件,实现更复杂的逻辑判断。主要包括`AND`、`OR`和`NOT`。 - `AND`:所有条件必须同时满足。 - `OR`:至少一个条件满足即可。 - `NOT`:对条件取反。 例如,查询薪资大于5000且部门编号为3的员工: ```sql SELECT * FROM employees WHERE salary > 5000 AND department_id = 3; ``` ##### 5. 模糊匹配谓词 模糊匹配谓词主要用于字符串的模糊搜索,最常用的是`LIKE`。`LIKE`可以与通配符`%`(代表任意数量的字符)和`_`(代表一个字符)结合使用。 例如,查询名字以“张”开头的员工: ```sql SELECT * FROM employees WHERE name LIKE '张%'; ``` ##### 6. 空值检查谓词 用于检查字段是否为NULL的谓词,主要有`IS NULL`和`IS NOT NULL`。 例如,查询没有分配部门的员工: ```sql SELECT * FROM employees WHERE department_id IS NULL; ``` #### 三、谓词的深入应用 ##### 1. 复杂条件组合 通过逻辑谓词的组合,可以构建出复杂的查询条件,满足多样化的数据检索需求。例如,查询薪资在3000到8000之间,且部门编号为2或4,且名字不以“李”开头的员工: ```sql SELECT * FROM employees WHERE salary BETWEEN 3000 AND 8000 AND (department_id = 2 OR department_id = 4) AND name NOT LIKE '李%'; ``` ##### 2. 谓词在子查询中的应用 谓词不仅可以在主查询的WHERE子句中使用,还可以在子查询中发挥作用,实现更高级的数据筛选逻辑。例如,查询薪资高于公司平均水平的员工: ```sql SELECT * FROM employees WHERE salary > (SELECT AVG(salary) FROM employees); ``` ##### 3. 谓词与聚合函数结合 在HAVING子句中,谓词常与聚合函数(如SUM、AVG、COUNT等)结合使用,对分组后的结果进行条件过滤。例如,查询平均薪资超过6000的部门: ```sql SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id HAVING AVG(salary) > 6000; ``` #### 四、谓词使用的注意事项 1. **性能考虑**:在使用谓词时,应尽量避免在WHERE子句中对字段进行函数操作,因为这可能导致数据库无法使用索引,从而降低查询效率。 2. **逻辑清晰**:构建查询条件时,应确保逻辑清晰、准确,避免因为逻辑错误导致查询结果不符合预期。 3. **数据类型匹配**:比较操作中的数据类型应保持一致,否则可能需要使用类型转换函数,这同样可能影响查询性能。 4. **空值处理**:注意NULL值的特殊性,在比较或逻辑判断时,应明确考虑NULL值的情况。 #### 五、总结 谓词是SQL查询中不可或缺的一部分,它们通过提供条件判断的能力,使得SQL能够灵活地检索、更新或删除数据。掌握谓词的概念、类型、用法及注意事项,对于编写高效、准确的SQL查询至关重要。通过本章的学习,希望读者能够深入理解谓词在SQL中的作用,并在实际应用中灵活运用,提升数据处理的能力。
上一篇:
6-2 谓词
下一篇:
LIKE谓词——字符串的部分一致查询
该分类下的相关小册推荐:
PostgreSQL入门教程
SQL基础教程(上)
SQL基础教程(下)
高性能的Postgres SQL