Null在Oracle中是很特殊的值,任何类型的值都可以是NULL。如果在某行中有一列没有值,那么就说此行中这个列的值是NULL。
NULL是未知的东西,常称它为”UNKNOWN”或空值(UNKOWN是NULL的别称)。正因为它是未知的,才会有很多值得注意的规则。NULL可以是任何数据类型的值,也可以不依赖数据类型单独存在,任何没有NOT NULL约束或主键约束的列都有可能出现NULL值。
空的值并不会记录到B*树索引中去。
select t.index_name, t.num_rows from user_indexes t;
create table wangm (id number,name varchar2(50));
insert into wangm values(1,'wangm');
insert into wangm values(2,null);
commit;
create index inx_wangm on wangm(name);
SQL> select t.index_name, t.num_rows from user_indexes t where t.table_name='WANGM';
INDEX_NAME NUM_ROWS
------------------------------ ----------
INX_WANGM 1
SQL>
注:只有一行的数据。
当创建位图索引的时候
SQL> drop index inx_wangm;
SQL> create bitmap index ind_wangm on wangm(name);
Index created
SQL> select t.index_name, t.num_rows from user_indexes t where t.table_name='WANGM';
INDEX_NAME NUM_ROWS
------------------------------ ----------
IND_WANGM 2
SQL>
注:位图索引NULL值是加入索引列的。