在Oracle数据库中,创建约束是确保数据完整性和一致性的重要手段。约束可以分为多种类型,包括主键(PRIMARY KEY)、外键(FOREIGN KEY)、唯一(UNIQUE)、非空(NOT NULL)以及检查(CHECK)约束。本文将重点讨论在Oracle数据库中如何创建外键约束,同时也会提及其他类型的约束。 ### 外键约束 外键约束用于维护两个表之间的关系,确保引用完整性。在创建外键约束时,需要指定一个表中的列作为外键,它必须与另一个表中的主键或唯一约束相对应。当删除或更新父表的记录时,外键约束会根据设置的行为来处理子表中的相关记录。具体行为有: - **CASCADE**:级联删除/更新。如果删除或更新父表中的记录,则自动删除/更新子表中所有相关的记录。 - **SET NULL**:设置为NULL。如果删除父表中的记录,则将子表中的相应外键字段设置为NULL。 - **NO ACTION**:无动作。如果尝试删除或更新父表中的记录会导致子表中的相关记录违反外键约束,则操作将被拒绝。 例如,在提供的部分内容中,`emp`表的`jno`字段通过`constraint fk_jid references job(jid) on delete cascade`定义了一个外键约束,该约束引用了`job`表的`jid`字段。这意味着如果`job`表中的一个记录被删除,那么所有引用该`jid`的`emp`表中的记录也将被删除。 ### 创建表与约束示例 以下是创建包含外键约束的表的示例代码: ```sql CREATE TABLE job ( jid INT PRIMARY KEY, jname VARCHAR2(10) ); CREATE TABLE dept ( depid INT PRIMARY KEY, depname VARCHAR2(10) ); CREATE TABLE emp ( eid INT PRIMARY KEY, ename VARCHAR2(10), jno INT CONSTRAINT fk_jid REFERENCES job(jid) ON DELETE CASCADE, depno INT CONSTRAINT fk_pid REFERENCES dept(depid) ON DELETE SET NULL ); ``` ### 其他类型的约束 - **主键约束**:用于唯一标识表中的每一行记录。一个表只能有一个主键,并且主键不能包含重复值或NULL值。 - **唯一约束**:与主键类似,但可以存在多个唯一约束,允许值为NULL。 - **非空约束**:确保字段不接受NULL值。 - **检查约束**:允许定义一个SQL表达式,用以限制字段的值。 创建这些约束时,语法类似外键约束,只需替换关键词即可。例如,创建主键约束可以使用`PRIMARY KEY`,创建非空约束则使用`NOT NULL`。 Oracle数据库中的约束是实现数据完整性的关键工具。合理地使用各种类型的约束,可以有效避免数据冗余和不一致,从而提高数据的质量和可靠性。在实际应用中,理解并熟练掌握如何创建和管理这些约束对于数据库设计和维护至关重要。
1。create table job (jid int primary key ,jname varchar2(10));
2。create table dept (depid int primary key ,depname varchar2(10));
3。create table emp(eid int primary key ,
ename varchar2(10),
jno int constraint fk_jid references job(jid) on delete cascade,
depno int constraint fk_pid references dept(depid)on delete set null)
注释:ON DELETE子句告诉ORACLE如果父纪录(parent record)被删除后,子记录做什么。缺省情况下禁止在子记录还存在的情况下删除父纪录。
还是oracle比较强大啊,不知道sql是否能做到,以前没见过,偶去试试看
/*既然楼上的兄弟提到sqlserver ,那我就顺便回答了吧*/
create table job (jid int primary key ,jname varchar(10));
create table dept (depid int primary key ,depname varchar(10));
create table emp(eid int primary key ,
ename varchar(10),
jno int constraint fk_jid references job(jid) on delete cascade
on update cascade ,
- 粉丝: 43
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 量化交易-RSI策略(vectorbt实现)
- Java答题期末考试必须考
- 组播报文转发原理的及图解实例
- 青龙燕铁衣-数据集.zip
- 指针扫描和内存遍历二合一工具
- 基于JavaScript的在线考试系统(编号:65965158)(1).zip
- 五相电机双闭环矢量控制模型-采用邻近四矢量SVPWM-MATLAB-Simulink仿真模型包括: (1)原理说明文档(重要):包括扇区判断、矢量作用时间计算、矢量作用顺序及切时间计算、PWM波的生成
- Linux下的cursor安装包
- springboot-教务管理系统(编号:62528147).zip
- 3dmmods_倾城系列月白_by_白嫖萌新.zip