SQL 中的 NULL 值:定义、测试和处理空数据,以及 SQL UPDATE 语句的使用
SQL NULL 值
什么是 NULL 值?
NULL 值是指字段没有值的情况。如果表中的字段是可选的,那么可以插入新记录或更新记录而不向该字段添加值。此时,该字段将保存为 NULL 值。需要注意的是,NULL 值与零值或包含空格的字段不同。具有 NULL 值的字段是在记录创建期间留空的字段。
如何测试 NULL 值?
使用比较运算符(如=、<或<>)无法测试 NULL 值。相反,我们必须使用 IS NULL 和 IS NOT NULL 运算符。
IS NULL 语法
SELECT 列名
FROM 表名
WHERE 列名 IS NULL;
IS NOT NULL 语法
SELECT 列名
FROM 表名
WHERE 列名 IS NOT NULL;
演示数据库
以下是示例中使用的 Customers 表的一部分:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
IS NULL 运算符
IS NULL 运算符用于测试空值(NULL 值)。以下 SQL 列出了所有具有 "Address" 字段中 NULL 值的客户:
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NULL;
提示:始终使用 IS NULL 查找 NULL 值。
IS NOT NULL 运算符
IS NOT NULL 运算符用于测试非空值(非 NULL 值)。以下 SQL 列出了所有具有 "Address" 字段中有值的客户:
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NOT NULL;
这是关于 SQL NULL 值的基本介绍和示例。使用 IS NULL 和 IS NOT NULL 运算符可以有效地处理数据库中的空值情况。
SQL UPDATE 语句
UPDATE 语句用于修改表中的现有记录。
UPDATE 语法
UPDATE 表名
SET 列1 = 值1, 列2 = 值2, ...
WHERE 条件;
注意:在更新表中的记录时要小心!请注意UPDATE语句中的WHERE子句。WHERE子句指定应更新哪些记录。如果省略WHERE子句,将会更新表中的所有记录!
演示数据库
以下是示例中使用的 Customers 表的一部分:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
更新表
以下 SQL 语句将更新第一个客户(CustomerID = 1)的新联系人和新城市:
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City = 'Frankfurt'
WHERE CustomerID = 1;
此时,"Customers"表的选择将如下所示:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Alfred Schmidt | Obere Str. 57 | Frankfurt | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
更新多条记录
决定更新多少记录取决于 WHERE 子句。
以下 SQL 语句将更新所有国家为 "Mexico" 的记录的 ContactName 为 "Juan":
UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';
此时,"Customers"表的选择将如下所示:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Alfred Schmidt | Obere Str. 57 | Frankfurt | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Juan | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Juan | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
更新警告!
在更新记录时要小心。如果省略 WHERE 子句,将更新所有记录!
示例
UPDATE Customers
SET ContactName='Juan';
此时,"Customers"表的选择将如下所示:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Juan | Obere Str. 57 | Frankfurt | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Juan | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Juan | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Juan | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Juan | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
这是关于SQL UPDATE语句的基本介绍和示例。UPDATE语句用于修改数据库表中的记录,可以根据需要更新单个或多个记录,但务必小心使用WHERE子句,以防止意外更新。
最后
为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。
看完如果觉得有帮助,欢迎点赞、收藏和关注

SQL 中的 NULL 值:定义、测试和处理空数据,以及 SQL UPDATE 语句的使用的更多相关文章
- SQL中的NULL值
除is [not] null之外,空值不满足任何查找条件.–如果null参与算术运算,则该算术表达式的值为null.–如果null参与比较运算,则结果可视为false.在SQL-92中可看成unkno ...
- sql 中的null值
1.包含null的表达式都为空 select salary*12+nvl(bonus,0) nvl是虑空函数 2. null值永远!=null select * from emp where bo ...
- SQL中的Null深入研究分析
SQL中的Null深入研究分析 虽然熟练掌握SQL的人对于Null不会有什么疑问,但总结得很全的文章还是很难找,看到一篇英文版的, 感觉还不错. Tony Hoare 在1965年发明了 null 引 ...
- 深入详解SQL中的Null
深入详解SQL中的Null NULL 在计算机和编程世界中表示的是未知,不确定.虽然中文翻译为 “空”, 但此空(null)非彼空(empty). Null表示的是一种未知状态,未来状态,比如小明兜里 ...
- 深入具体解释SQL中的Null
NULL 在计算机和编程世界中表示的是未知,不确定.尽管中文翻译为 "空", 但此空(null)非彼空(empty). Null表示的是一种未知状态.未来状态,比方小明兜里有多少钱 ...
- 数据库 SQL :有关 NULL 值引发 TRUE、FALSE、UNKNOW 三值逻辑
在 Java.C# 中,相信如果是 boolean 类型值,只有两种选择 true.false.然而,在 SQL 查询中,NULL 值的引入,使得新增了 UNKNOW ,因此,就产生了 TRUE.FA ...
- (转) SQL 中的 NULL 你真的懂了吗?【数据库|SQL】
注:转载自下面链接 https://blog.csdn.net/lnotime/article/details/104847946 SQL 中的 NULL (译自 NULL Values in SQL ...
- java中,null值可以被强制转换为任何类型
java中,null值可以被强制转换为任何类型
- 参数中传Null值
参数中传Null值虽然不是一种优雅的方式,但有时候可以省时间.不过不推荐.
- 【SQL】含有NULL值的排序
查询结果中有NULL值,当进行升序排序时,NULL值默认为“最大值”,排在最后面.要想改变NULL值的显示顺序,只需要在SQL语句后面加上NULLS FIRST(排在前面),NULLS LAST(排在 ...
随机推荐
- React时间转换为具体的年月日上午下午
export default class index extends Component { constructor() { super(); this.state = { date: new Dat ...
- STL-RBTree模拟实现
#pragma once #include<assert.h> #include<iostream> using std::cout; using std::endl; usi ...
- Rust 登上了开源头条「GitHub 热点速览」
抱歉!上周因为出月刊工作量比较大,所以「GitHub 热点速递」暂停了一期,必须要给守着更新的读者道个歉,以后每周二的「热点速递」会按时更新,下不为例. 说回本周的热门开源项目,Rust 语言可谓是出 ...
- Java 关于抽象类匿名子类
1 package com.bytezreo.abstractTest; 2 3 /** 4 * 5 * @Description Abstract 关键字使用 6 * @author Bytezer ...
- CSV转Excel,命中关键词标红
CSV转Excel,命中关键词标红 package com.wenwo.schedule.job.mainJob; import java.io.ByteArrayOutputStream; impo ...
- 文心一言 VS 讯飞星火 VS chatgpt (210)-- 算法导论16.1 1题
一.根据递归式(16.2)为活动选择问题设计一个动态规划算法.算法应该按前文定义计算最大兼容活动集的大小 c[i,j]并生成最大集本身.假定输入的活动已按公式(16.1)排好序.比较你的算法和GREE ...
- redis同步锁的真实应用场景
一.问题由来 现在正在做的小程序后台中,有一个功能叫做高光时刻,在操作高光时刻的时候,可能会有多个用户来同时想操作这个功能,可是在同一时间只能 有一个用户能够操作.刚开始做的时候,自己的做法是在red ...
- [VueJsDev] 基础知识 - AutoNumber VsCode 插件开发
[VueJsDev] 目录列表 https://www.cnblogs.com/pengchenggang/p/17037320.html AutoNumber VsCode插件开发 ::: deta ...
- vue css 背景图 路径 记得加波浪号 background-image: url("~@/assets/images/d.jpg");
vue css 背景图 路径 记得加波浪号 background-image: url("~@/assets/images/d.jpg"); 为什么 不加波浪号,图片显示不出来哟
- Android Material组件库(日期选择和时间选择器)基本使用
原文:Android Material组件库(日期选择和时间选择器)基本使用 - Stars-One的杂货小窝 简单的封装下Material组件里的日期选择器和时间选择器的使用方法 效果 代码 需要添 ...