PostgreSQL NULL 学习笔记

什么是 NULL?

在 PostgreSQL 中,NULL 表示一个值未知或不适用的情况。在数据库中,NULL 不等同于空字符串或者零,它代表的是缺少值。当一个列被指定为可以为 NULL 时,这个列就可以存储 NULL 值。

如何使用 NULL 值?

插入 NULL 值

在插入数据时,可以使用关键字 NULL 来表示该字段的值为 NULL:

Copy Code
INSERT INTO my_table (name, age) VALUES ('John', NULL);

判断是否为 NULL 值

在查询数据时,可以使用 IS NULL 运算符来判断一个字段的值是否为 NULL:

Copy Code
SELECT name FROM my_table WHERE age IS NULL;

将 NULL 值转换为其他值

在查询数据时,可以使用 COALESCE 函数将 NULL 值转换为其他值:

Copy Code
SELECT name, COALESCE(age, 0) AS age FROM my_table;

使用 NULL 值进行计算

在进行计算时,若其中一个操作数为 NULL,则结果也为 NULL。需要使用 COALESCE 函数来处理 NULL 值:

Copy Code
SELECT COALESCE(age, 0) + COALESCE(height, 0) AS total FROM my_table;

NULL 值的比较

在进行比较时,所有与 NULL 进行比较的操作都将返回 NULL。因此,在进行比较时,需要考虑 NULL 值的情况:

Copy Code
SELECT name FROM my_table WHERE age > 20 OR age IS NULL;

实例

假设有一个学生信息表 Student,包含以下字段:

  • id:学生编号
  • name:学生姓名
  • age:学生年龄
  • gender:学生性别

其中,age 和 gender 字段可以为 NULL。

插入 NULL 值

以下示例向 Student 表中插入一条记录,该记录的 age 字段为 NULL:

Copy Code
INSERT INTO Student (id, name, age, gender) VALUES (1, '张三', NULL, '男');

判断是否为 NULL 值

以下示例查询 Student 表中 age 字段为 NULL 的记录:

Copy Code
SELECT id, name FROM Student WHERE age IS NULL;

将 NULL 值转换为其他值

以下示例查询 Student 表中所有记录的 age 字段,若为 NULL,则显示为 0:

Copy Code
SELECT id, name, COALESCE(age, 0) AS age FROM Student;

使用 NULL 值进行计算

以下示例查询 Student 表中所有记录的 age 字段和 height 字段之和,若为 NULL,则当作 0 处理:

Copy Code
SELECT COALESCE(age, 0) + COALESCE(height, 0) AS total FROM Student;

NULL 值的比较

以下示例查询 Student 表中 age 大于 20 或 age 为 NULL 的记录:

Copy Code
SELECT id, name FROM Student WHERE age > 20 OR age IS NULL;

以上是 PostgreSQL NULL 学习笔记的详细内容。