Oracle数据库基础14-内置约束

1.约束概念

       Oracle 数据库使用约束(constrains)来防止无效的数据进入表中,保护数据的实体完整性。约束规则定义在表级,如果表与表之间有从属关系,约束也可以防止表的删除。通过约束,强制用户在插入、更新或删除数据时必须遵循一定规则。

       约束可以在创建表的时候定义,也可以在创建表之后定义。所有的约束存储在数据字典中,可以用USER_CONSTRAINTS数据字典视图查看对一个表的约束的定义。

       给约束起一个有意义的名字(例如DEPT_NAME_NN代表部门名不能为空的约束),易于约束的引用。如果不显示的命名约束,Oracle数据库将用格式SYS_Cn产生一个系统约束名字,这里的n是唯一的整数,所以约束名是唯一的。

一些常用的数据一致性约束:

NOT NULL:指定字段不能为空值;

UNIQUE:指定字段的值(或字段组合的值)对于表中所有的行必须是唯一的;

PRIMARY KEY:指定表的每行的唯一标识,即主键;

FOREIGN KEY:在指定字段和引用表的一个字段之间建立强制外键关系,即外键;

CHECK:指定一个必须为真的条件。

2.约束的使用

  • 创建表时定义约束

CREATE TABLE 表名(

字段名1 数据类型(大小) 约束,

字段名2 数据类型(大小) 约束,

................

表级约束

约束可以在两个级别上定义,分别是字段级别约束和表级约束,其中字段级别约束值涉及及一个单个字段,能够定义完整性约束的任何类型;而表级约束涉及一个或多个字段,不能定义NOT NULL这个约束。

例如:

CREATE TABLE TBL_USER(

id int(10) NOT NULL,

name varchar2(50) NOT NULL,

password varchar2(50) NOT NULL,

CONTRAINT TBL_USER PRIMARY KEY(id)

  • NOT NULL约束

NOT NULL约束又称非空约束。NOT NULL约束只能定义在字段级别,不能定义在表级别上。

  • UNIQUE约束

UNIQUE约束又称唯一键约束,要求字段或者字段的组合(键)的每个值是唯一的,定义UNIQUE约束的字段(或字段组合)被称为唯一键。对于无非空约束的字段,唯一约束允许输入空值,且包含空值的行可以是任意数目,因为空不等于任何值。UNIQUE约束既可以在字段级别也可以在表级别定义,使表级定义时,一个复合唯一键被创建。

例如:

ALTER TABLE TBL_USER ADD(nickname VARCHAR2(50) CONTRAINT tbl_user3_uk UNIQUE)

该段SQL语句是采用了添加字段的同时给该字段定义约束形式,tbl_user3_uk 为键名。

  • 主、外键约束

主键和外键是设置表和表之间关联的对象,在多表查询时就是通过表的主键和外键的关系建立其表和表之间的连接。

PRIARY KEY约束为表创建一个主键,每个表只能创建一个主键,主键是表的每行的唯一标志,该约束强制字段或字段组合的唯一性,并确保作为主键一部分的字段不能包含空值。对于一个主键字段,UNIQUE索引被自动创建。主键可以定义在列级别,也可以定义在表级别,用表级别定义的主键通常是字段组合主键。

FORENGN KEY约束是引用完整性约束,指明一个字段或者字段组合作为一个外键,这个外键和另一个表的主键(或唯一键)建立起一个关系。

一个外键值必须匹配一个在父表中存在的值,所以在子表中,不能在外键字段中输入一个没有引用的值;同时在父表中,不能删除这样的行,该行的主键正被子表所引用。

  • CHECK约束

CHECK约束是一种灵活的约束,定义每行都必须满足的条件。一个字段可以定义多个CHECK约束。

例如:约束中:CHECH(age>=0)

  • 添加约束(ADD)、删除约束(DROP)、启用或禁用约束(|ENABLE、DISABLE)

除了在创建表时给字段或表创建约束外,也可以直接给表添加、删除、启用或禁用约束(很少使用)。

例如:ALERTTABLE 表名 DROP PRIARY KEY CASCADE                   删除主键

ALERT TABLE 表名 ADD([CONTRAINT cname]) type(column)         cname是约束名,type是约束类型、column是受影响的字段名。

ALERT TABLE 表名 ENABLE CONTRAINT cname                                启用约束的语法

ALERT TABLE 表名 DISABLE CONTRAINT cname [CASCADE]           禁用约束的语法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值