码迷,mamicode.com
首页 > 数据库 > 详细

Oracle数据库(十)—— 约束

时间:2018-08-04 22:28:25      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:sch   工资   分享   col   了解   格式   视图   信息   src   

 

(一)什么是约束

约束是表级的强制规定

有以下五种约束

  • 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数据库(十)—— 约束

标签:sch   工资   分享   col   了解   格式   视图   信息   src   

原文地址:https://www.cnblogs.com/wffrzh/p/9420162.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!