一、 NULL与0、空格(’’)的区别
从物理空间来讲,0和空格(’’)是占有空间的,而空值(NULL)是不占有空间的。空值(NULL)表示未知、不确定值。
二、 NULL相关的运算
●聚合函数,除了COUNT()之外,其他的都会把控制(NULL)给忽略掉。
●四则运算。任何与NULL运算都为NULL。
●与NULL相关的函数:
1、NULLIF(exp1,exp2).表示如果exp1与exp2相等的话,则返回NULL,否则返回exp1;
2、NVL(exp1,exp2)。表示如果exp1为NULL则返回exp2,否则返回exp1;
3、Coalesce(exp1,exp2,…….expn).返回一连串字符串中第一个不为NULL的值。
●排序。空值(NULL)在ORACLE中被默认认为是最大值。为此,排序时有这样的设定:
ORDER BY column1 [ASC|DESC] NULL FIRST|LAST
●索引。IS NULL 和IS NOT NULL 的NULL值判断会使得索引无效,因为索引物理文件中不包括空值。
●约束。NOT NULL这个约束建立的时候只能以内联的方式建立,如下:
CREATE TABLE AB
(COLUMN_A INTERGER NOT NULL);
或者
ALTER TABLE AB
MODIFY COLUMN_A NOT NULL;
不能以“外部方式”建立NOT NULL约束。这一点是跟其他的约束有别的。如以下方式会报错:
CREATE TABLE AB
(
COLUMN_A INTEGER,
NOT NULL(A)
);
或者
ALTER TABLE AB
MODIFY NOT NULL(A)