首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
9.1 基本查询语句
9.2 单表查询
9.2.1 查询所有字段
9.2.2 查询指定字段
9.2.3 查询指定数据
9.2.4 带关键字IN的查询
9.2.5 带关键字BETWEEN AND的范围查询
9.2.6 带LIKE的字符匹配查询
9.2.7 用IS NULL关键字查询空值
9.2.8 带AND的多条件查询
9.2.9 带OR的多条件查询
9.2.10 用DISTINCT关键字去除结果中的重复行
9.2.11 用ORDER BY关键字对查询结果进行排序
9.2.12 用GROUP BY关键字分组查询
9.2.13 用LIMIT限制查询结果的数量
9.3 聚合函数查询
9.3.1 COUNT()统计函数
9.3.2 SUM()求和函数
9.3.3 AVG()平均数函数
9.3.4 MAX()最大值函数
9.3.5 MIN()最小值函数
9.4 连接查询
9.4.1 内连接查询
9.4.2 外连接查询
9.4.3 复合条件连接查询
9.5 子查询
9.5.1 带IN关键字的子查询
9.5.2 带比较运算符的子查询
9.5.3 带EXISTS关键字的子查询
9.5.4 带ANY关键字的子查询
9.5.5 带ALL关键字的子查询
9.6 合并查询结果
9.7 定义表和字段的别名
9.7.1 为表取别名
9.7.2 为字段取别名
9.8 使用正则表达式查询
9.8.1 匹配指定字符中的任意一个
9.8.2 使用“*”和“ ”来匹配多个字符
9.8.3 匹配以指定的字符开头和结束的记录
10.1 MySQL函数
10.2 数学函数
10.2.1 ABS(x)绝对值函数
10.2.2 FLOOR(x)向下取整函数
10.2.3 RAND()随机数函数
10.2.4 PI()圆周率函数
10.2.5 TRUNCATE(x,y)截断函数
10.2.6 ROUND(x)近似值函数和ROUND(x,y)四舍五入函数
10.2.7 SQRT(x)平方函数
10.3 字符串函数
10.3.1 INSERT(s1,x,len,s2)替换函数
10.3.2 UPPER(s)函数和UCASE(s)字母大写函数
10.3.3 LEFT(s,n)取左函数
10.3.4 RTRIM(s)去空格函数
10.3.5 SUBSTRING(s,n,len)截取函数
10.3.6 REVERSE(s)反转函数
10.3.7 FIELD(s,s1,s2,…,sn)位置函数
10.3.8 LOCATE(s1,s)、POSITION(s1 IN s)和INSTR(s,s1)3个位置函数
10.4 日期和时间函数
10.4.1 CURDATE()和CURRENT_DATE()当前日期函数
10.4.2 CURTIME()和CURRENT_TIME()当前时间函数
10.4.3 NOW()当前日期和时间函数
10.4.4 DATEDIFF(d1,d2)间隔天数函数
10.4.5 ADDDATE(d,n)日期计算函数
10.4.6 ADDDATE(d,INTERVAL expr type)日期时间计算函数
10.4.7 SUBDATE(d,n)日期计算函数
10.5 条件判断函数
10.6 系统信息函数
10.6.1 获取MySQL版本号、连接数和数据库名的函数
10.6.2 获取用户名的函数
10.6.3 获取字符串的字符集和排序方式的函数
10.7.1 格式化函数FORMAT(x,n)
10.7.2 改变字符集的函数
10.7.3 改变字段数据类型的函数
当前位置:
首页>>
技术小册>>
MySQL从入门到精通(三)
小册名称:MySQL从入门到精通(三)
### 9.2.7 用IS NULL关键字查询空值 在数据库管理中,处理空值(NULL)是一项基本且重要的技能,尤其是在使用MySQL这类关系型数据库时。空值表示缺失或未知的数据,与零(0)、空字符串('')或任何其他具体的值有本质的区别。在MySQL中,`IS NULL`关键字被用来检测列中的空值,这在数据查询、数据清洗及数据分析过程中尤为重要。本章节将深入探讨如何使用`IS NULL`关键字来查询空值,包括其基本用法、结合其他条件进行查询、以及在实际应用中的注意事项。 #### 9.2.7.1 IS NULL的基本用法 `IS NULL`是SQL中的一个条件表达式,用于判断某个字段的值是否为NULL。其基本语法如下: ```sql SELECT column_name(s) FROM table_name WHERE column_name IS NULL; ``` 这条语句会返回表`table_name`中所有在`column_name`列上值为NULL的记录。 **示例**: 假设有一个名为`employees`的表,其中包含了员工的ID、姓名、邮箱等信息,如果我们要找出所有未提供邮箱地址的员工,可以使用如下SQL查询: ```sql SELECT employee_id, name FROM employees WHERE email IS NULL; ``` 这条查询将返回所有`email`字段为NULL的员工ID和姓名。 #### 9.2.7.2 结合其他条件进行查询 在实际应用中,经常需要根据多个条件来筛选数据,包括结合`IS NULL`与其他SQL条件(如`AND`、`OR`)一起使用。 **示例**: 如果我们不仅要找出未提供邮箱的员工,还要进一步限制这些员工的入职日期在2020年之后,可以使用以下查询: ```sql SELECT employee_id, name, hire_date FROM employees WHERE email IS NULL AND hire_date > '2020-01-01'; ``` 这里,`AND`操作符确保了查询结果同时满足两个条件:邮箱为空且入职日期在2020年之后。 **使用OR进行多条件查询**: 有时,我们可能希望根据多个可能的空值列来筛选数据。例如,同时检查员工的邮箱和电话号码是否为空: ```sql SELECT employee_id, name FROM employees WHERE email IS NULL OR phone IS NULL; ``` 这条查询将返回所有邮箱或电话号码(或两者都)为空的员工记录。 #### 9.2.7.3 注意事项 1. **空值不等于空字符串**:在MySQL中,空值(NULL)与空字符串('')是两个不同的概念。空值表示数据未知或缺失,而空字符串是一个长度为0的字符串。因此,使用`IS NULL`无法匹配空字符串,反之亦然。 2. **使用NOT NULL进行反向查询**:与`IS NULL`相对的是`IS NOT NULL`,用于筛选出非空值的记录。这在需要忽略空值或确保数据完整性的场景中非常有用。 3. **性能考虑**:虽然`IS NULL`查询在大多数情况下都能高效执行,但在处理大量数据时,索引的使用变得尤为关键。如果经常需要根据某个字段是否为NULL进行查询,考虑在该字段上建立索引可能会提高查询效率。然而,需要注意的是,并不是所有数据库系统都能对NULL值进行索引优化,具体情况需参考所使用的数据库文档。 4. **NULL与聚合函数**:在使用聚合函数(如`COUNT()`, `SUM()`, `AVG()`等)时,NULL值通常会被忽略。这意味着,如果你的查询目标是计算非空值的总数或平均值,那么这些聚合函数将自动排除NULL值。然而,如果你想要特别关注NULL值(例如,计算NULL值的数量),则需要使用`COUNT(column_name IS NULL)`这样的特殊表达式(注意,直接`COUNT(column_name)`会计算包括NULL在内的所有行数,而`COUNT(*)`则计算所有行数,不论列值是否为NULL)。 5. **使用COALESCE处理NULL值**:虽然本章节主要讨论`IS NULL`的使用,但了解`COALESCE`函数也是有益的。`COALESCE`函数返回其参数列表中的第一个非NULL值。它常用于在查询中替代NULL值,使数据处理更加灵活。 #### 9.2.7.4 实战应用 在实际应用中,`IS NULL`的使用场景非常广泛,包括但不限于: - **数据清洗**:在数据导入或迁移过程中,经常需要识别并处理缺失值(即NULL值),以确保数据的完整性和准确性。 - **数据分析**:在进行数据分析时,了解哪些字段包含大量NULL值可以帮助我们识别数据中的潜在问题,或者指导我们如何更有效地利用这些数据。 - **报表生成**:在生成报表时,可能需要根据是否包含NULL值来筛选或分类数据,以满足特定的报告需求。 通过深入理解`IS NULL`的使用方法和注意事项,你将能够更加灵活地处理MySQL中的空值数据,从而优化数据查询、提升数据质量,并为数据分析和报表生成提供有力的支持。
上一篇:
9.2.6 带LIKE的字符匹配查询
下一篇:
9.2.8 带AND的多条件查询
该分类下的相关小册推荐:
MySQL从入门到精通(五)
MySQL8.0入门与实践
MySQL 实战 45 讲
MySQL从入门到精通(四)
MySQL从入门到精通(一)
MySQL从入门到精通(二)
SQL零基础到熟练应用(增删改查)
细说MySQL(零基础到高级应用)
MySQL必会核心问题