PostgreSQL NULL 学习笔记
什么是 NULL?
在 PostgreSQL 中,NULL 表示一个值未知或不适用的情况。在数据库中,NULL 不等同于空字符串或者零,它代表的是缺少值。当一个列被指定为可以为 NULL 时,这个列就可以存储 NULL 值。
如何使用 NULL 值?
插入 NULL 值
在插入数据时,可以使用关键字 NULL 来表示该字段的值为 NULL:
Copy CodeINSERT INTO my_table (name, age) VALUES ('John', NULL);
判断是否为 NULL 值
在查询数据时,可以使用 IS NULL 运算符来判断一个字段的值是否为 NULL:
Copy CodeSELECT name FROM my_table WHERE age IS NULL;
将 NULL 值转换为其他值
在查询数据时,可以使用 COALESCE 函数将 NULL 值转换为其他值:
Copy CodeSELECT name, COALESCE(age, 0) AS age FROM my_table;
使用 NULL 值进行计算
在进行计算时,若其中一个操作数为 NULL,则结果也为 NULL。需要使用 COALESCE 函数来处理 NULL 值:
Copy CodeSELECT COALESCE(age, 0) + COALESCE(height, 0) AS total FROM my_table;
NULL 值的比较
在进行比较时,所有与 NULL 进行比较的操作都将返回 NULL。因此,在进行比较时,需要考虑 NULL 值的情况:
Copy CodeSELECT name FROM my_table WHERE age > 20 OR age IS NULL;
实例
假设有一个学生信息表 Student,包含以下字段:
- id:学生编号
- name:学生姓名
- age:学生年龄
- gender:学生性别
其中,age 和 gender 字段可以为 NULL。
插入 NULL 值
以下示例向 Student 表中插入一条记录,该记录的 age 字段为 NULL:
Copy CodeINSERT INTO Student (id, name, age, gender) VALUES (1, '张三', NULL, '男');
判断是否为 NULL 值
以下示例查询 Student 表中 age 字段为 NULL 的记录:
Copy CodeSELECT id, name FROM Student WHERE age IS NULL;
将 NULL 值转换为其他值
以下示例查询 Student 表中所有记录的 age 字段,若为 NULL,则显示为 0:
Copy CodeSELECT id, name, COALESCE(age, 0) AS age FROM Student;
使用 NULL 值进行计算
以下示例查询 Student 表中所有记录的 age 字段和 height 字段之和,若为 NULL,则当作 0 处理:
Copy CodeSELECT COALESCE(age, 0) + COALESCE(height, 0) AS total FROM Student;
NULL 值的比较
以下示例查询 Student 表中 age 大于 20 或 age 为 NULL 的记录:
Copy CodeSELECT id, name FROM Student WHERE age > 20 OR age IS NULL;
以上是 PostgreSQL NULL 学习笔记的详细内容。