在SQL中,NULL可以像NOT NULL一样受约束吗?

pop*_*ack 2 sql oracle null constraints

create table t1(ider number null);  
Run Code Online (Sandbox Code Playgroud)

它表现如下:

create table t1(ider number check (ider is null));  
Run Code Online (Sandbox Code Playgroud)

要么

create table t1(ider number default null);  
Run Code Online (Sandbox Code Playgroud)

Ben*_*oit 11

你的两个假设都不是.

Oracle将NULL列规范视为明确缺少NOT NULL约束.它在CREATE TABLE语句中是一个(误导性的)无操作,但不一定在ALTER TABLE它可以撤销先前存在的约束的语句中.

CREATE TABLE t(col1 TYPE NOT NULL);
ALTER TABLE t MODIFY col1 NULL; -- Now the `NOT NULL` constraint has been dropped
Run Code Online (Sandbox Code Playgroud)

因此,当您使用CREATE TABLE t(c INTEGER NULL)它并不意味着c应该始终为null,也不意味着它c具有默认值NULL.它只是意味着cnull 是可以的.

在Tora上拍摄的截图