Oracle 非空约束

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle 非空约束

非空约束就是限制必须为某个列提供值。空值是不存在的,它即不是数字0,也不是空字符串,而是没有、未知。

在表中,当某些字段的值是不缺少的,那么就可以为该列定义为非空约束。这样当插入数据时,如果没有为该列提供数据,那么系统就会出现一个错误消息。

如果某些列的值是可有可无的,那么可以定义这些列允许空值。这样,在插入数据时,就可以不向该列提供具体的数据。在默认情况下,表中的列是允许空值的。

例如,在创建EMPLOYEES表时,规定EMPNO、ENAME和DEPTNO列不能为空值:SQL> create table employees(

2 empno number(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

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;

表已更改。

相关文档
最新文档