SQL 中的 NULL 值:定义、测试和处理空数据,以及 SQL UPDATE 语句的使用

SQL NULL 值

什么是 NULL 值?

NULL 值是指字段没有值的情况。如果表中的字段是可选的,那么可以插入新记录或更新记录而不向该字段添加值。此时,该字段将保存为 NULL 值。需要注意的是,NULL 值与零值或包含空格的字段不同。具有 NULL 值的字段是在记录创建期间留空的字段。

如何测试 NULL 值?

使用比较运算符(如=、<或<>)无法测试 NULL 值。相反,我们必须使用 IS NULLIS NOT NULL 运算符。

IS NULL 语法

1SELECT 列名 2FROM 表名 3WHERE 列名 IS NULL;

IS NOT NULL 语法

1SELECT 列名 2FROM 表名 3WHERE 列名 IS NOT NULL;

演示数据库

以下是示例中使用的 Customers 表的一部分:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

IS NULL 运算符

IS NULL 运算符用于测试空值(NULL 值)。以下 SQL 列出了所有具有 "Address" 字段中 NULL 值的客户:

1SELECT CustomerName, ContactName, Address 2FROM Customers 3WHERE Address IS NULL;

提示:始终使用 IS NULL 查找 NULL 值。

IS NOT NULL 运算符

IS NOT NULL 运算符用于测试非空值(非 NULL 值)。以下 SQL 列出了所有具有 "Address" 字段中有值的客户:

1SELECT CustomerName, ContactName, Address 2FROM Customers 3WHERE Address IS NOT NULL;

这是关于 SQL NULL 值的基本介绍和示例。使用 IS NULLIS NOT NULL 运算符可以有效地处理数据库中的空值情况。

SQL UPDATE 语句

UPDATE 语句用于修改表中的现有记录。

UPDATE 语法

1UPDATE 表名 2SET1 =1,2 =2, ... 3WHERE 条件;

注意:在更新表中的记录时要小心!请注意UPDATE语句中的WHERE子句。WHERE子句指定应更新哪些记录。如果省略WHERE子句,将会更新表中的所有记录!

演示数据库

以下是示例中使用的 Customers 表的一部分:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

更新表

以下 SQL 语句将更新第一个客户(CustomerID = 1)的新联系人和新城市:

1UPDATE Customers 2SET ContactName = 'Alfred Schmidt', City = 'Frankfurt' 3WHERE CustomerID = 1;

此时,"Customers"表的选择将如下所示:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteAlfred SchmidtObere Str. 57Frankfurt12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

更新多条记录

决定更新多少记录取决于 WHERE 子句。

以下 SQL 语句将更新所有国家为 "Mexico" 的记录的 ContactName 为 "Juan":

1UPDATE Customers 2SET ContactName='Juan' 3WHERE Country='Mexico';

此时,"Customers"表的选择将如下所示:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteAlfred SchmidtObere Str. 57Frankfurt12209Germany
2Ana Trujillo Emparedados y heladosJuanAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaJuanMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

更新警告!

在更新记录时要小心。如果省略 WHERE 子句,将更新所有记录!

示例

1UPDATE Customers 2SET ContactName='Juan';

此时,"Customers"表的选择将如下所示:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteJuanObere Str. 57Frankfurt12209Germany
2Ana Trujillo Emparedados y heladosJuanAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaJuanMataderos 2312México D.F.05023Mexico
4Around the HornJuan120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpJuanBerguvsvägen 8LuleåS-958 22Sweden

这是关于SQL UPDATE语句的基本介绍和示例。UPDATE语句用于修改数据库表中的记录,可以根据需要更新单个或多个记录,但务必小心使用WHERE子句,以防止意外更新。

最后

为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。

看完如果觉得有帮助,欢迎点赞、收藏关注

点赞
收藏

评论区

加载中...

相关推荐

SQL语句优化方式

不要使用\号进行查询操作,使用具体字段.索引在where子句和orderby涉及的字段上合理的添加索引.where子句优化避免在where子句中对null值进行判断,应对字段设置默认值Selectidfromt

SQL优化的一些实用方法

1、任何在where子句中使用isnull或isnotnull的语句优化器是不允许使用索引的。因为只有该字段中有null值,即使创建了索引其实也是没有用的,所以创建索引应该在有值的字段上创建;2、使用该sql语句将不会使用索引:select\fromemployeewherelast\_namelike‘%cliton%';

SQL 性能起飞了!

这篇文章总结了52条SQL性能优化技巧,用简洁明了的语言介绍给大家,不废话全是干货,需要的可以收藏,退出。不不不,收藏,看完再退出。1\.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2\.应尽量避免在where子句中对字段进行null值判断,创建表时NULL是默认值,但大

Oracle基于布尔的盲注总结

0x01decode 函数布尔盲注decode(字段或字段的运算,值1,值2,值3)这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回3当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多使用方法:比较大小select

Oracle 排序中使用nulls first 或者nulls last 语法

\原理Nullsfirst和nullslast是OracleOrderby支持的语法如果Orderby中指定了表达式Nullsfirst则表示null值的记录将排在最前(不管是asc还是desc)如果Orderby中指定了表达式Nullslast则表示null值的记录将排在最后(不管是asc还是desc)使用语

mysql千万级大数据SQL查询优化

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2.应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:selectidfromtwherenumisnull可以在num上设置默认值0,确保表中num列没有