正 文

说一说“NULL”


www.7dspace.com  更新日期:2005-11-6 2:42:02  七度空间


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

例如,在下面的雇员表(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.空值的生成

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

使用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条件中,Oracle认为结果为NULL的条件为FALSE,带有这样条件的select语句不返回行,并且不返回错误信息。但NULL和FALSE是不同的。

*排序时比其他数据都大。

*空值不能被索引。

5页,页码:[1] [2] [3] [4] [5] 

上一篇:Oracle控制文件如何重建?
下一篇:商业门户站点的十二个关键特性
作者:  来源:网络整理 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐