oracle 增加年,.Oracle主键约束的创建,添加和删除

本文详细介绍了在Oracle数据库中如何创建、删除和修改主键约束,包括无命名和有命名的方式。同时,文章讲解了非空约束的添加与删除,包括在创建表时和后期修改表结构的方法。还通过实例展示了如何处理已有空值的数据以满足新增的非空约束。此外,文章还提供了一个创建表的例子,展示了如何在创建表时指定列的非空约束。
摘要由CSDN通过智能技术生成

oracle的主键约束添加删除

1、创建表的同时创建主键约束

一、无命名

create table accounts (

accounts_number number primary key,

accounts_balance number

);

二、有命名

create table accounts (

accounts_number number primary key,

accounts_balance number,

constraint yy primary key(accounts_number)

);

2、删除表中已有的主键约束

一、无命名

SELECT * FROM USER_CONS_COLUMNS WHERE TALBE_NAME='accounts';

找出主键名

ALTER TABLE ACCOUNTS DROP CONSTRAINT SYS_C003063;

二、有命名

ALTER TABLE ACCOUNTS DROP CONTRAINT yy;

3、向表中添加主键约束

ALTER TABLE ACCOUNTS ADD CONSTRAINT PK_ACCOUNTS PRIMARY

KEY(ACCOUNTS_NUMBER);

oracle中not null约束是我们用到的最多的约束之一了。我们可以在创建表时让系统自动指定not

null约束的名字来创建,也可以手动的的指定not null约束的名字来创建,也可以在表创建好后手动的修改表已达到增加not

null约束的目的。

下面是一个例子

create table test_not_null

(id number not null,

name varchar2(30) ,

tel varchar2(20) constraint test_not_null_tel not null);

在这里我们创建了一个表,并分别给id 和 tel两列创建了not

null的约束,其中id的约束是系统自动命名的,而tel的约束使我们手动命名的。对于地二个列name,oracle系统不会自动增加not

null的约束。

我们可以在这个表里面插入一行数据,例如:

insert into test_not_null(id,tel) values(123,’88888888′);

我们也还可以使用修改表的方式来增加not

null约束。例如刚才我们没有在test_not_null上建立空值约束,我们可以现在通过修改的方式来建立

alter table test_not_null

modify(name not null);

如果你执行了刚才我们的插入数据的操作,你执行这句话的时候可能会有以下错误:

ORA-02296: 无法启用 (SYS.) - 找到空值

这是因为我们刚才在插入数据时已经给name这一列增加了一个空值,现在又要在这一列上增加not

null约束,显然是不行的。

如果实际问题中我们真的遇到这种需求,例如对于某个字段我们认为原来可以为空,并且再该列插入了很多空值,后来我们发现实际上是不应该为空的,可能会需先将原来的空值全部更新到一个新的有统一意义的值,然后在进行空值约束的加入操作。例如我们可以这样做:

update test_not_null

set name = ‘不知道’

where name is null;

现在我们再增加列的not null约束是没有问题了。

alter table test_not_null

modify(name not null);

表修改

1.创建表:

a. 创建xs表中计算机专业学生的备份

Create table xs_jsj as select * from xs where zym=’计算机’;

b.完整的例子:

Create table test (xm char(20) not null,zy varchar(30)

default (‘计算机’));

-- Create table

create table DEPT

(

DEPTNO NUMBER(2) not null,

DNAME VARCHAR2(14),

LOC VARCHAR2(13)

)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值