欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

oracle数据库SQL开发之约束

程序员文章站 2022-03-09 08:02:30
...

一、约束概述

1.约束: Constraint,是定义在表上的一种强制规则。
• 当为某个表定义约束后,对该表做的所有SQL操作都必须满足约束的规则要求,否则操作将失败

2.约束类型:not null(非空约束)、unique(唯一性约束:所有行数据必须唯一)
primary key(主键约束 :所有行数据唯一)、foreign key(外键约束,建立依赖关系)
check (检查性约束,在列上指定一个必须满足的条件)

3.约束命名规则:约束也是数据库对象,必须按照命名规则命名;
除了NOT NULL约束外,建议给其它约束起名字,命名规则为:表名_列名_约束类型

4.定义约束
–有列级别约束表级别约束之分;
not null约束只能定义在列级别上,联合主键或联合唯一性约束只能定义在表级别上,其它约束既可以定义成表级别,也可以定义成列级别;

二、五种约束 语法: constraint 约束名 (五种)约束类型(列名)

1.not null 约束只能定义在列级别上
2.unique 唯一约束 某列的所有行的数据唯一,不允许插入相同的数据值
3.primary key 主键约束 ----并且确保作为主键一部分的列不能包含空值和每个表只能创建一个主键约束。
4.foreign key 外键约束 ----
外键确保了相关联的两个字段的关系:
– 外键列的值必须在引用列值的范围内,或者为空;
外键参照主键表的列必须是主键或者唯一键
• 主键表主键值被外键表参照时,主键表记录不允许被删除。

oracle数据库SQL开发之约束

 SQL> CREATE TABLE emp_fk1(
      empno NUMBER(4),
      ename VARCHAR2(10) NOT NULL,
      job VARCHAR2(9),
      deptno NUMBER(7,2) NOT NULL
      CONSTRAINT emp_deptno_fk  FOREIGN KEY (deptno) references (父表dept)dept (deptno),
      sal number(7,2))
	 foreign key: 定义在子表的列中
     • references: 引用列所在的父表

5.check约束,也叫检查性约束,确保某个列的所有行数据都必须满足的条件;表达式不允许使用伪列,子查询结果
– sal number(8,2) constraint dept_sal_min check (sal>0)
– 要求sal字段的所有行数据必须大于0

三、追加约束

可以用alter table语句为表:
– 追加或删除约束,但不修改它的结构;
– 启用或禁用约束;
– 用modify子句添加一个not null约束;

例:在emp表中的mgr上添加一个外键约束,指示该列的值必须引用emp表中的empno值。

  SQL>er table emp
        add constraint emp_mgr_fk foreign key(mgr)
        references emp (empno);

–追加not null 约束
alter table table
modify (column [CONSTRAINT constraint] not null);

四、删除约束

例:从emp表中删除emp_mgr_fk约束

alter table emp drop constraint emp_mgr_fk;

例:删除dept表上的PRIMARY KEY约束,并且删除相关联的在emp表deptno上的FOREIGN KEY约束;

alter table dept drop primary key cascate;

• DROP子句的cascade选项导致任何与其相依赖的约束也被删除。