关系数据库系统中的 NULL 值及其用途
在数据库中,NULL值具有非常特殊的含义。因此,重要的是要理解NULL值不同于零值或包含空格的字段。在今天的博客中,我们将探讨 NULL 值的含义以及如何在 Navicat Premium 中使用NULL。
什么是NULL?
应该注意的是,NULL值不是数据库唯一的。在大多数计算机编程语言中也都可以找到它,它演变成值为零的内置常数。实际上,是字符0终止了C语言中的字符串。但是,随着时间的流逝,它的意思是“什么也没有”。具体来说,NULL是指向表示NULL的特殊位模式的指针。这就是通常所说的“null pointer”。
在数据库中,零是一个有意义的值,因此NULL变成一个特殊的标记,表示不存在任何值。从这种意义上讲,NULL不像在编程语言中那样指向存储位置。在数据库中,NULL值表示缺少值,这与零值不同。为了说明,请考虑以下问题:“Rob拥有多少CD?”答案可能是“零”(0)或NULL。在后一种情况下,NULL值可能意味着我们不知道Rob拥有多少CD。以后,一旦我们确定了Rob拥有的CD数量,就可以使用数字值更新该值。
允许将NULL作为列值
任何属于键值的列都不允许使用NULL,但是对于其他字段,则完全由您决定。在创建表时,在列定义旁边包含NOT NULL子句将强制用户在INSERT和UPDATE操作中为该列包含一个值。否则,将引发错误,并且操作将失败。Navicat Premium 的“表设计”界面包括“不为空”列,用于将字段指定为可为空或不可为空。这是Navicat 15的新深色模式:
在新字段上,将自动取消选中“不是 null”复选框。
在查询中引用NULL值
编写查询时,有时您会希望过滤出具有NULL值的行。其他时候,您会特别想检索包含NULL的行。 这是两种方法的结合:
查询可以使用IS NOT NULL子句过滤掉null。这是一个示例,该示例从Sakila数据库中排除了original_language_id列中值为NULL的电影:
同样,您可以通过从NOT NULL子句中删除NOT来找出哪些行包含NULL值。现在,仅返回那些original_language_id列为NULL值的行:
总结
在今天的博客中,我们探讨了NULL值的含义以及如何在关系数据库中使用此特殊值。
有兴趣了解有关 Navicat Premium 的更多信息吗?您完全可以免费试用14天,以进行评估!
往期回顾
1. 盗版引发设备瘫痪 | 官方严正声明:切勿在非官方渠道购买或下载 Navicat 软件
2. Navicat 荣获 Microsoft 金牌合作伙伴
3. Navicat 16.3 正式支持 OceanBase 企业版
5. Navicat 发展史
相关文章
- 如何用5000行JS撸一个关系型数据库
- C/C++中判断两个变量的大小相等关系时要特别注意数据深度不够带来的影响
- 关系数据库系统中的 NULL 值及其用途
- 进程,线程,消息循环的关系
- linux,macos下tensorflow和cuda,cudnn的版本对应关系
- Access-数据类型与.net OleDbType枚举类型对应关系
- Innodb中的事务隔离级别和锁的关系
- 《C++面向对象高效编程(第2版)》——2.24 Booch 中类的关系
- Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系
- hibernate入门(四)hibernate的多对一关系映射
- Python学习---django之ORM语法[对象关系映射]180124
- ie 浏览器无法保存cookie,且与域名包括了下划线(_)有关系的问题
- 动态载入Layout 与 论Activity、 Window、View的关系
- 操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null
- Java finally 和 return 的关系