数据库讲义 __【表的约束】

本文深入讲解Oracle数据库中五种约束的使用,包括NotNull、Unique、Check、PrimaryKey和ForeignKey,涵盖创建、查看、删除约束的方法及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验21:在表上建立不同类型的约束

  1. 【使用约束的目的】

    保证数据的有效,保证数据的安全。 可以自己书写代码实现约束,也可以使用触       发器。最好使用 oracle 提供的五类约束,效率高,安全,维护简单

  1. 【Not null约束】

    定义在表的列上,表明该列必须要有值,不能为 null 可以在建立表的时候说明 也   可以在表建立后修改为 not null。可以给约束指定名称。 如果不指定名称,数据库会       给一个系统自动指定名称,SYS_C####### ;

User_constraints,user_cons_columns 可以查看到约束的信息

2.1、建立表时指定 not null 约束,建立表的时候指明非空约束,一个是系统命名,一       个是我们命名

Create  table  t1  (name  char(9)  not  null,

telenum  char(8)  constraint  t1_tele_nl  not  null);

2.2、建立表后指定 not null 约束。使用 modify 语法。不指定名称数据库自己命名。

create  table  t1  as  select  *  from  dept;

alter  table  t1  modify ( dname  not  null );

  1. 【唯一约束unique】

    列的值不能重复,可以为 NULL,是用索引来维护唯一的,索引的名称和约束的              名称相同

3.1、建立表的时候指定 UNIQUE 约束,建立表的时候指明唯一约束,一个是系统命       名,一个是我们命名。

Create  table  t1  (name  char( 9 )  UNIQUE,

mail  char( 8 )  constraint  t1_mail_u  UNIQUE); 

3.2、建立表之后指定 UNIQUE 约束

create  table  t1  as  select  *  from  dept;

alter  table  t1  add  constraint  u_dname unique  ( dname );

  1. 【Check检测约束】

Drop  table  t1  purge;

Create  table  t1 (name  varchar2(8)

check  ( length ( name ) > 4),

Mail  varchar2( 10 ) );

  1. 【Primary Key主键约束】

   一个表只能有一个主健,主健要求唯一并且非空,可以是联合主健,联合主健每列       都要求非空。主健能唯一定位一行,所以主键也叫逻辑 rowid ,主健不是必需的,可以       没有,主健是通过索引实现的。索引的名称和主健名称相同。

5.1、建立表的时候指定主健,系统命名

drop  table  t1  purge;

create  table  t1 (mail  char( 8 )  primary  key, name  char( 8 )) ;

5.2、表建立后指定自命名的主健

drop  table  t1  purge;

create  table  t1( mail  char( 8 ) , name  char( 8 ));

alter  table  t1  add  constraint  pk_t1_mail  primary  key  ( mail ) ;

  1. 【Foreign  Key外键约束】

    指定在表的列上,引用本表其它列,或其它表的其它列,被引用的列得有唯一约束   或者主健约束,因为引用的是索引的键值,而不是真正的表。目的是维护数据的完整性。       核心是一列是另外一列的子集,null 除外。

6.1、建立主健,建立一个外健来引用主健

drop  table  e  purge;

drop  table  d  purge;

 

create  table  d  as  select  *  from  dept;

create  table  e  as  select  *  from  emp;

 

alter  table  d  add  constraint  pk_d  primary key  (deptNO) ;

alter  table  e  add  constraint  fk_e  foreign key (deptno) references  d (deptno)

  1. 【建立被级连的外健】

alter  table  e  drop  constraint  FK_E;

alter  table  e  add  constraint  fk_e  foreign  key (deptno)

references  d (deptno)  on  delete  set  null;

父表的值被删除,子表的相关列自动被赋予 NULL 值。

alter  table  e  drop  constraint  FK_E;

alter  table  e  add  constraint  fk_e  foreign  key  ( deptno )

references  d ( deptno )  on  delete  cascade;

父表的值被删除,子表的相关行自动被删除。

  1. 【删除约束】

8.1、任何约束都可以用约束名称来删除

Alter  table  ###  drop  constraint  ****;

8.2、因为主健只能有一个,所以删除主健约束的时候也可以

Alter  table  ###  drop  primary  key;

8.3、如果主健和唯一性约束被删除,自动建立的索引也会同时被清除。

Not Null 约束也可以用 alter table modify 来删除。

8.4、删除有外健引用的主健或唯一约束的时候,外健也要被级连删除。

Alter  table  ###  drop  primary  key  cascade;

8.5、如果不加 cascade,你删不了,报有外键在使用,不能删除。按约束的名称来删除          约束(可以删除各种约束)

Alter  table  t1  drop  constraint  sys_c03033;

8.6、非空约束的第二种删除方式

SQL >  Alter  table  t1  modify  ( name  not  null );

SQL >  Alter  table  t1  modify  ( name  null )

【【  总结  】】

1、掌握 oracle 提供的五类约束

2、建立、查看、删除约束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值