设为首页 加入收藏

TOP

oracle 表的创建与管理 约束(二)
2019-09-17 18:53:18 】 浏览:66
Tags:oracle 创建 管理 约束
EY,FK)

DROP TABLE member PURGE ;
DROP TABLE book PURGE ;
CREATE TABLE member(
mid NUMBER ,
name VARCHAR2(20)NOT NULL ,
CONSTRAINT pk_mid PRIMARY KEY(mid) 
) ;
CREATE TABLE book(
bid NUMBER ,
title VARCHAR2(20) ,
mid NUMBER ,
CONSTRAINT pk_bid PRIMARY KEY(bid) ,
CONSTRAINT fk_mid FOREIGN KEY(mid) REFERENCES member(mid)
) ;

限制一:在删除主表之前,请一定要保证先删除子表。所以在删除数据表的时候应该先删除子表后再删除父表。

范例:强制删除
DROP TABLE member CASCADE CONSTRAINT ;
但是必须注意的是,强制删除是无法彻底删除的,所删除的数据表会保存在回收站之中。但是不建议使用强制删除
表的操作,还是建议按照先删除子表再删除父表的方式进行。

限制二:作为外键的字段在主表之中必须具备主键约束或者是唯一约束。

限制三:数据的级联操作问题

· 为了方便数据的删除,提供有一个级联删除操作,在主表数据删除的时候对应的子表数据会同时删除掉,在建立
外键的时候使用 ON DELETE CASCADE 来设置。

范例:设置级联删除
DROP TABLE book PURGE ;
DROP TABLE member PURGE ;
CREATE TABLE member(
mid NUMBER ,
name VARCHAR2(20)NOT NULL ,
CONSTRAINT pk_mid PRIMARY KEY(mid) 
) ;
CREATE TABLE book(
bid NUMBER ,
title VARCHAR2(20) ,
mid NUMBER ,
CONSTRAINT pk_bid PRIMARY KEY(bid) ,
CONSTRAINT fk_mid FOREIGN KEY(mid) REFERENCES member(mid) ON DELETE CASCADE
) ;

· 如果在删除主表数据的时候不希望子表数据被一起删除掉,则可以使用级联更新操作,使用 ON DELETE SET
NULL 来设置。

范例:设置级联更新
DROP TABLE book PURGE ;
DROP TABLE member PURGE ;
CREATE TABLE member(
mid NUMBER ,
name VARCHAR2(20)NOT NULL ,
CONSTRAINT pk_mid PRIMARY KEY(mid) 
) ;
CREATE TABLE book(
bid NUMBER ,
title VARCHAR2(20) ,
mid NUMBER ,
CONSTRAINT pk_bid PRIMARY KEY(bid) ,
CONSTRAINT fk_mid FOREIGN KEY(mid) REFERENCES member(mid) ON DELETE SET NULL
) ;

修改约束

首先明确:所有的约束一定要在表建立的同时就已经设置完成,不可能说表先去使用之后再回头设置约束,所以以
下的这些

1、 为表中增加约束
ALTER TABLE 表名称 ADD CONSTRAINT 约束名称 约束类型(约束字段) [选项] ;
但是需要提醒的是,此类的语法适合于唯一、主键、检查、外键约束的添加,而无法添加非空约束
2、 删除约束
ALTER TABLE 表名称 DROP CONSTRAINT 约束名称 ;

 

意义

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MYSQL如何通过一张表更新另外一张.. 下一篇oracle 单行函数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目