oracle 去除空值函数,Oracle Not Null

oracle函数 的 Oracle Not Null

在本教程中,您将学习如何使用Oracle NOT NULL约束强制列不接受NULL值。

Oracle NOT NULL约束指定列不能包含NULL值。 Oracle NOT NULL约束是通常在CREATE TABLE语句的列定义中使用的内联约束。

CREATE TABLE table_name (

...

column_name data_type NOT NULL

...

);

可以通过使用语句将NOT NULL约束添加到现有表。

ALTER TABLE table_name MODIFY ( column_name NOT NULL);

在个语句中,在应用NOT NULL约束之后,column_name不能包含任何NULL值。

Oracle NOT NULL示例

以下声明创建surcharges表:

CREATE TABLE surcharges (

surcharge_id NUMBER GENERATED BY DEFAULT AS IDENTITY,

surcharge_name VARCHAR2(255) NOT NULL,

amount NUMBER(9,2),

PRIMARY KEY (surcharge_id)

);

surcharges表有三列:附加费用,附加费名称和金额。

surcharge_id列是由PRIMARY KEY约束指定的表的主键列,因此,Oracle向该列隐式添加NOT NULL约束。

surcharge_name列具有在列定义中显式指定的NOT NULL约束。amount列可以接受NULL值。

以下语句在surcharges表中插入一行:

INSERT INTO surcharges(surcharge_name, amount)

VALUES('Late order placement',10);

它按预期工作。

但是,以下语句不起作用:

INSERT INTO surcharges(surcharge_name, amount)

VALUES(null,20);

因为它试图将NULL值插入到具有NOT NULL约束的surcharge_name列中。

以下语句可以正常工作,因为amount列接受NULL值:

INSERT INTO surcharges(surcharge_name, amount)

VALUES('Rush Order',NULL);

以下语句显示surcharges表的所有约束条件:

SELECT

table_name,

constraint_name,

search_condition

FROM

user_constraints

WHERE

table_name = 'SURCHARGES';

如果要将NOT NULL约束添加到amount列,请使用以下ALTER TABLE语句:

ALTER TABLE surcharges MODIFY (amount NOT NULL);

发生类似以下错误:

SQL Error: ORA-02296: cannot enable (OT.) - null values found

因为surcharges表的数据记录中已经有一行包含NULL值。

因此,在添加NOT NULL约束之前,您需要确保附件表中的现有数据不违反NOT NULL约束:

UPDATE

surcharges

SET

amount = 0

WHERE

amount IS NULL;

现在,如果再次执行ALTER TABLE语句:

ALTER TABLE surcharges MODIFY (amount NOT NULL);

它应该按预期工作。

删除NOT NULL约束

有时,需要更改具有NOT NULL约束的列以接受NULL值。

为此,需要使用ALTER TABLE语句从列中删除NOT NULL约束,如下所示:

ALTER TABLE table_name MODIFY ( column_name NULL)

例如,要从surcharges表的金额列中删除NOT NULL约束,请使用以下语句:

ALTER TABLE surcharges

MODIFY (amount NULL);

在本教程中,您已学习如何使用Oracle NOT NULL约束强制列不接受NULL值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值