Oracle NULL 数据类型介绍

在 Oracle 数据库中,NULL 是一种特殊的数据类型,表示缺少值或未知值。NULL 不同于其他的数据类型,它不能进行比较运算,也不能与其他类型的值进行计算或连接操作。

语法

在 Oracle 中,NULL 以关键字的形式存在,可以用于任何数据类型的列或变量中。语法如下:

NULL

使用场景

NULL 常用于以下场景:

  • 表示缺失的数据
  • 表示未知的数据
  • 区分空字符串和 NULL

在数据库中,如果一个列没有值,那么可以将该列的值设置为 NULL,表示该列的值缺失或未知。在某些情况下,NULL 值与空字符串进行区分非常重要。例如,在处理客户信息时,如果一个客户的地址为空字符串,表示该客户没有地址,但如果地址列为 NULL,则表示该客户的地址未知或缺失。

示例

下面是两个关于 NULL 的示例,用于说明在 Oracle 中如何使用 NULL

示例 1

创建一个名为 students 的表,包含 idnamescore 列。其中,id 列和 name 列不能为空,而 score 列可以为空:

CREATE TABLE students (
  id NUMBER(10) NOT NULL,
  name VARCHAR2(50) NOT NULL,
  score NUMBER(10)
);

插入一些数据:

INSERT INTO students (id, name, score)
VALUES (1, 'Alice', 80);

INSERT INTO students (id, name, score)
VALUES (2, 'Bob', NULL);

INSERT INTO students (id, name, score)
VALUES (3, NULL, 90);

查询数据:

SELECT * FROM students;

结果如下:

ID  NAME   SCORE
--- ------ ----
1   Alice  80
2   Bob    NULL
3   NULL   90

从上面的结果可以看到,Bob 的成绩是 NULL,表示该学生的成绩未知或缺失。而第三行的 name 列也是 NULL,表示该学生的姓名未知或缺失。

示例 2

在第二个示例中,我们可以使用 NULL 来代替缺失的数据。假设我们有一个员工表格,其中包含员工的姓名和薪水信息。如果一个员工没有提供薪水信息,我们可以将其设置为 NULL。下面是一个示例:

CREATE TABLE employees (
  name VARCHAR2(50),
  salary NUMBER(10, 2)
);

INSERT INTO employees (name, salary) VALUES ('Alice', 10000);
INSERT INTO employees (name, salary) VALUES ('Bob', NULL);
INSERT INTO employees (name, salary) VALUES ('Charlie', 8000);

SELECT * FROM employees;

执行以上 SQL 语句后,我们会得到以下结果:

NAME     SALARY
-------- -------
Alice    10000
Bob      NULL
Charlie  8000

在这个例子中,Bob 的薪水信息缺失,因此我们将其设置为 NULL。这种方法可以帮助我们在数据库中存储不完整的数据,并且避免了因缺少数据而引起的错误。

结论

在本文中,我们介绍了 Oracle 数据库中的 NULL 数据类型,它表示缺失或未知的数据值。