Oracle数据库—— 约束

Posted 秋风de领域

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库—— 约束相关的知识,希望对你有一定的参考价值。

 

(一)什么是约束

约束是表级的强制规定

有以下五种约束

  • NOT NULL :非空
  • UNIQUE:唯一
  • PRIMARY KEY:主键
  • FOREIGN KEY:外键
  • CHECK:检查

注意约束

  • 如果不指定约束名 ,Oracle server 自动按照 SYS_Cn 的格式指定约束名
  • 创建和修改约束:
  1. 建表的同时
  2. 建表之后
  • 可以在表级或列级定义约束
  • 可以通过数据字典视图查看约束

 

(二)表级约束和列级约束

  • 作用范围:
  •   ①列级约束只能作用在一个列上
  •   ②表级约束可以作用在多个列上(当然表级约束也 可以作用在一个列上)
  • 定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义。
  • 非空(not null) 约束只能定义在列上

约束定义语法:

CREATE TABLE [schema.]table (

  column datatype [DEFAULT expr] [column_constraint],

  ...

   [table_constraint]

  [,...]);

 

(三)创建约束定义

1、not null约束

定义非空约束后,赋值为null会报错

 

2、unique约束

可以定义在表级或列级

 

定义该约束的列不允许出现重复值

 

 3、primary key约束

可以定义在表级或列级

 

主键特点:非空且唯一 即primary key = not null + unique

 

4、foreign key约束

可以定义在表级或列级

 

增加数据时,外键约束的列的值必须在父表中有值

 

FOREIGN KEY 约束的关键字

  • FOREIGN KEY: 在表级指定子表中的列 
  • REFERENCES: 标示在父表中的列
  • ON DELETE CASCADE(级联删除): 当父表中的列被删除时,子表中相对应的列也被删除
  • ON DELETE SET NULL(级联置空): 子表中相应的列置空

 

5、check约束

定义每一行必须满足的条件

 

(四)添加约束

使用 ALTER TABLE 语句:

  • 添加或删除约束,但是不能修改约束
  • 有效化或无效化约束
  • 添加 NOT NULL 约束要使用 MODIFY 语句

 

1、添加删除约束

-- 在工资上添加一个非空约束

 

-- 删除name的非空约束

 

-- 给name添加unique约束

 

2、无效化约束

 

3、激活约束

  • ENABLE 子句可将当前无效的约束激活
  • 当定义或激活UNIQUE 或 PRIMARY KEY 约束时系统会自动创建UNIQUE 或 PRIMARY KEY索引

 

4、查询约束(了解)

-- 查询EMPLOYEES表中的约束信息

 

5、查询定义约束的列

-- 查询EMPLOYEES表中定义约束的列

 

(五)总结

1、创建和修改约束

2、描述约束的类型:

  • NOT NULL
  • UNIQUE
  • PRIMARY KEY
  • FOREIGN KEY
  • CHECK

以上是关于Oracle数据库—— 约束的主要内容,如果未能解决你的问题,请参考以下文章

在 oracle11g系统中 约束的类型都有哪些

Oracle数据库约束问题

oracle 如何设置检查约束

oracle数据库 操作语句中的disable约束条件是仕么意思?有和作用?

Oracle数据库主键约束与唯一索引有啥区别?

oracle check约束定义