《Oracle非空约束.docx》由会员分享,可在线阅读,更多相关《Oracle非空约束.docx(2页珍藏版)》请在三一办公上搜索。
1、Oracle 非空约束Oracle 非空约束 非空约束就是限制必须为某个列提供值。空值是不存在的,它即不是数字0,也不是空字符串,而是没有、未知。 在表中,当某些字段的值是不缺少的,那么就可以为该列定义为非空约束。这样当插入数据时,如果没有为该列提供数据,那么系统就会出现一个错误消息。 如果某些列的值是可有可无的,那么可以定义这些列允许空值。这样,在插入数据时,就可以不向该列提供具体的数据。在默认情况下,表中的列是允许空值的。 例如,在创建EMPLOYEES表时,规定EMPNO、ENAME和DEPTNO列不能为空值: SQL create table employees( 2 empno nu
2、mber(10) not null, 3 ename varchar2(20) not null, 4 sex char(2), 5 salary number(8,2), 6 hiredate date default sysdate, 7 job varchar2(10), 8 email varchar2(50), 9 deptno number(3) not null); 表已创建。 也可以使用ALTER TABLE MODIFY语句为已经创建的表删除或重新定义NOT NULL约束。例如,下面的语句为SALARY字段定义了非空约束: SQL alter table employees
3、2 modify salary not null; 表已更改。 在为表中的字段定义了非空约束后,当用户向表插入数据时,如果未向对应的字段提供值,则添加数据操作将返回一个如下所示的错误: SQL insert into employees(ename,sex,salary,deptno) 2 values(刘丽,男,1500,20); insert into employees(ename,sex,salary,deptno) * 第 1 行出现错误: ORA-01400: 无法将 NULL 插入 (SCOTT.EMPLOYEES.EMPNO) 如果使用ALTER TABLE MODIFY为表添加NOT NULL约束,并且表中该列的数据已经存在NULL值,则向该列添加NOT NULL约束将失败。这是因为当为该列应用非空约束时,Oracle将会试图检查表中的所有的行,以验证所有行在对应的列是否存在NULL值。 使用ALTER TABLE MODIFY语句还可以删除表中非空约束。例如,下面的语句删除了SALARY列的非空约束: SQL alter table employees 2 modify salary null; 表已更改。