oracle数据库操作进阶,数据库进阶:循序渐进讲解Oracle数据库的完整性概念

2076ec3b3b6998c0ef7b5c7e64a025fb.png

Oracle在CREATE TABLE语句中提供了PRIMARY KEY子句,供用户在建表时指定关系的主码列。例如,在学生-选课数据库中,要定义Student表的Sno为主码,可使用如下语句: CREATE TABLE student

(sno NUMBER(8),

sanme VARCHAR(20),

sage NUMBER(20),

CONSTRAINT pk_sno PRIMARY KEY(sno));

其中,PRIMARY KEY(Sno)表示是Student表的主码。PK_SNO是此主码约束名。

若要在SC表中定义(Sno,Cno)为主码,则用下面语句建立SC表: CREATE TABLE sc

(sno NUMBER(8),

cno NUMBER(2),

grade NUMBER(2),

CONSTRAINT pk_sc PRIMARY KEY(sno,cno));

用PRIMARY KEY语句定义了关系的主码后,每当用户程序对主码列进行更新操作时,系统自动进行完整性检查,凡操作使主码值为空或使主码值在表中不,系统拒绝此操作,从而保证了实体完整性。

二、Oracle中的参照完整性

Oracle的CREATE TABLE语句也可以定义参照完整性规则,即用FOREIGN KEY子句定义哪些列为外码列,用REFERENCES子句指明这些外码相应于哪个表的主码,用ON DELETE CASCADE子句指明在删除被参照关系的元组时,同时删除参照关系中相应的远祖。

例如,使用如下SQL语句建立EMP表: CREATE TABLE emp

(empno NUMBER(4),

ename VARCHAR(10),

job VARCHAR2(9),

mgr NUMBER(4),

sal NUMBER(7,2),

deptno NUMBER(2),

CONSTRAINT fk_deptno

FOREIGN KEY(deptno)

REFERENCES dept(deptno));

则表明EMP是参照表,DEPT为其被参照表,EMP表中Deptno为外码,它相应于DEPT表中的主码Deptno。当删除或修改DEPT表中某个元组的主码时要检查EMP中是否有元组的DEPTNO值等于DEPT中要删除的元组的Deptno值,如没有,接受此操作;否则系统拒绝这一更新操作。

如果用如下SQL语句建立EMP表: CREATE TABLE emp

(empno NUMBER(4),

ename VARCHAR(10),

job VARCHAR2(9),

mgr NUMBER(4),

sal NUMBER(7,2),

deptno NUMBER(2),

CONSTRAINT fk_deptno

FOREIGN KEY(deptno)

REFERENCES dept(deptno)

ON DELETE CASCADE);

当要修改DEPT表中的Deptno值时,先要检查EMP表中有无元组的Deptno值与之对应,若没有,系统接受这个修改操作,否则,系统拒绝此操作。

当要删除DEPT表中某个元组时,系统也要检查EMP表,若找到相应元组则将它们也随之删除。

2829f2ca24f0d0090cbba57f30759f23.png

数据库进阶:循序渐进讲解Oracle数据库的完整性概念.doc

下载Word文档到电脑,方便收藏和打印[全文共1062字]

编辑推荐:

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

下载Word文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值