数据库中, 空值用来表示实际值未知或无意义的情况。在一个表中,如果一行中的某列没有值,那么就称它为空值(null)。任何数据类型的列,只要没有使用非空 (not null)或主键(primary key)完整性限制,都可以出现空值。在实际应用中,如果忽略空值的存在,将会造成造成不必要的麻烦。

例如,在下面的雇员表(emp)中,雇员名(ename)为king的行,因为king为最高官员(president),他没有主管(mgr),所以其 mgr为空值。因为不是所有的雇员都有手续费(comm),所以列comm允许有空值,除300、500、1400、0以外的其它各行comm均为空值。
empno ename job mgr hiredate sal comm deptno
--------- ---------- --------- --------- --------- --------- --------- ---------
7369 smith clerk 7902 17-dec-80 800 20
7499 allen salesman 7698 20-feb-81 1600 300 30
7521 ward salesman 7698 22-feb-81 1250 500 30
7566 jones manager 7839 02-apr-81 2975 20
7654 martin salesman 7698 28-sep-81 1250 1400 30
7698 blake manager 7839 01-may-81 2850 30
7782 clark manager 7839 09-jun-81 2450 10
7788 scott analyst 7566 09-dec-82 3000 20
7839 king president 17-nov-81 5000 10
7844 turner salesman 7698 08-sep-81 1500 0 30
7876 adams clerk 7788 12-jan-83 1100 20
7900 james clerk 7698 03-dec-81 950 30
7902 ford analyst 7566 03-dec-81 3000 20
7934 miller clerk 7782 23-jan-82 1300 10

本文将以上述emp表为例,具体讨论一下空值在日常应用中所具有的一些特性。

一、空值的生成及特点

1. 空值的生成

如果一列没有非空(not null)完整性限制,那么其缺省的值为空值,即如果插入一行时未指定该列的值,则其值为空值。

使用sql语句insert插入行,凡未涉及到的列,其值为空值;涉及到的列,如果其值确实为空值,插入时可以用null来表示(对于字符型的列,也可以用''来表示)。

例:插入一行,其empno为1、ename为'jia'、sal为10000、job和comm为空值。
sql>insert into emp(empno,ename,job,sal,comm) values(1,'jia',null,1000,null);
sql>select * from emp where empno=1;
empno ename job mgr hiredate sal comm deptno
--------- ---------- --------- --------- --------- --------- --------- ---------
1 jia 1000

可以看到新插入的一行,除job和comm为空值外,mgr、hiredate、deptno三列由于插入时未涉及,也为空值。

使用sql语句update来修改数据,空值可用null来表示(对于字符型的列,也可以用''来表示)。例:
sql>update emp set ename=null,sal=null where empno=1;

2. 空值的特点

空值具有以下特点:

* 等价于没有任何值。
* 与 0、空字符串或空格不同。
* 在where条件中, index created.

相关文章:

  • 2022-12-23
  • 2022-02-26
  • 2021-09-17
  • 2022-12-23
  • 2022-12-23
  • 2021-08-11
  • 2021-07-01
  • 2022-12-23
猜你喜欢
  • 2021-11-20
  • 2022-02-27
  • 2022-12-23
  • 2022-12-23
  • 2021-11-01
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案