返回顶部
首页 > 资讯 > 数据库 >Oracle 约束
  • 910
分享到

Oracle 约束

2024-04-02 19:04:59 910人浏览 安东尼
摘要

一、约束的概念通俗来讲,约束是为了使被填入的数据更加符合业务规范、保证数据完整性而开发设计的手段。如果进行的DML(更新、插入、删除行)或DDL(此处指ALTER更改操作)操作不合符业务规范(约束)要求,则

一、约束的概念

通俗来讲,约束是为了使被填入的数据更加符合业务规范、保证数据完整性而开发设计的手段。

如果进行的DML(更新、插入、删除行)或DDL(此处指ALTER更改操作)操作不合符业务规范(约束)要求,则数据库会拒绝请求;

约束既可以是表级约束也可以是列级约束,需要强调的是notnull 一定是列级的。

在定义约束的时候,正常应该按照语法格式和命名规则进行定义,如若没有给出约束的名称,则oracle会给约束按照SYS_Cn(n为自然数,由Oracle根据流水生成),如SYS_C001684,推荐大家还是养成良好的学习习惯,正确命名约束;

二、Oracle约束分类

非空(NOT NULL)约束、 唯一(UNIQUE)约束、主键(PRIMARY KEY)约束、外键(FOREIGN KEY)约束、条件(CHECK)约束、REF约束。

三、Oracle约束关系比照图

约束名

中文含义

约束

类型

命名规范

特征

备注说明

NOT NULL

非空约束

C

NN_表名_列名

不允许空值

只能定义在列上

UNIQUE

唯一值约束

U

UK_表名_列名

值不允许重复,但是可以为NULL并且NULL可以有多个,因为NULL<>NULL,组合列个数不能超过32个。

需要定义UNIQUE的列不能是主键列,即一个列不能既有主键约束又有UNIQUE约束

PRIMARY KEY

主键约束

P

PK_表名

值不能重复并且不能为NULL,组合列个数不能超过32个。

一个表或视图只能有一个主键

FOREIGN KEY

外键约束

R

FK_表名_列名

存的父表主键的值,与父表存在依赖关系,插入新值时,如果外键的值在父表中没有则无法插入;

外键是把双刃剑,在增加子父表关系验证的同时,牺牲了oracle数据性能,现在大型数据设计中会避免使用外键。

CHECK

条件约束

C

CK_表名_列名

自定义的约束检查,按照开发设计者的要求进行定义,比如要求检查输入值的符合某个范围,比如年龄列需要大于等于1岁小于邓宇120岁  CHECK(AGE BETWEEN 1 AND  120)。

约束条件定义灵活

 

四、约束查看

1、  DBA_CONSTRaiNTS:数据库中所有的约束定义

2、  ALL_CONSTRAINTS:用户有权限查看的表的约束;

3、  USER_CONSTRAINTS:属于当前登陆用户创建的约束;

约束视图中关键字段说明

OWNER:约束创建人

CONSTRAINT_NAME:约束的名字

CONSTRAINT_TYPE:约束的类型,参照上图

SEARCH_CONDITioN:可以通过点击大文本进行查阅约束具体内容

STATUS:约束当前的状态,是否有效

五、约束创建

1、  约束正常情况下应当在表设计、创建时定义完整,如若使用中发现需要定义某种约束,这需要首先处理不符合规范要求的数据然后再行定义约束并且时间越早越好。

2、  下面我们会使用CREATETABLE 时创建约束,包括NOT NULL,PRIMARY KEY,FOREIGN KEY,UNIQUE以及CHECK约束。

sql>CREATETABLEconstraint_test (

                                                    cno VARCHAR2(4) PRIMARYKEY,

                                                               cname VARCHAR2(40) UNIQUE,

                                                               cdate  DATE                     DEFAULTTO_DATE(TO_CHAR(SYSDATE,'YYYY-MM-DD'),'YYYY-MM-DD')    NOTNULL)

3、  下面是使用ALTER 方式进行后续追加约束的方式

--增加一列备注(note)列,并且要求使用CHECK约束检查只能输入字母的字符串

SQL>ALTERTABLE constraint_test ADD note VARCHAR2(100);

SQL>ALTERTABLE constraint_test ADD CONSTRAINT ck_constraint_test_note 

CHECK(REPLACE(TRANSLATE(UPPER(note),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','A'),'')  IS NOT NULL);

六、约束删除
1、语法格式:ALTERTABLE【表名】 DROPCONSTRAINT【约束名】;

2、举例:ALTERTABLE constraint_test DROPCONSTRAINTck_constraint_test_note;

 

七、约束重命名

1、  语法格式:

ALTERTABLE【表名】RENAME CONSTRAINT【旧约束名】TO【旧约束名】;

2、举例:ALTERTABLE constraint_test RENAMECONSTRAINTnn_constraint_test_note TO ck_constraint_test_note;

八、禁用约束

1、  语法格式:

ALTERTABLE【表名】DISABLECONSTRAINT【约束名】CASCADE;

2、  举例:

ALTERTABLE constraint_test DISABLECONSTRAINTck_constraint_test_note [CASCADE];

3、  说明1:cascade是一个可选选项,例如父表中的主键是子表的外键,如果我们想禁用父表中的主键约束效果同时也禁用字表的外键约束,此时就可以启用CASCADE 这个参数;

4、  说明2:如果禁用约束会被Oracle自动创建索引(如主键、外键、unique等),在禁用该约束的同时也会删除该约束对应的索引,这显然对于大数据表来说使我们不想看见的,所以我可以在禁用约束的时候选择保留索引,方法是:

ALTERTABLE【表名】DISABLECONSTRAINT【约束名】INDEX;

九、启用约束

1、  语法格式:

ALTERTABLE【表名】ENABLECONSTRAINT【约束名】INDEX;

2、  说明:我们在禁用主键和外键的时候,可以通过禁用父表的主键后加cascade的方式进行偷懒,但是如果重新启用,则需要单独一一启用;

十、        约束状态

ENABLE(可用)、VALID(有效)、INVALID(无效)、DISABLE(禁用)

十一、  关于使用约束的建议

1、应该在创建表的时候就定义好所需的各种Oracle约束。如果没有的话,应尽可能早地加上所需要的Oracle约束,这样会使系统更可靠,更容易维护;(这个视具体情况而言)

2、  Oracle系统进行过多的约束检查会大大的降低Oracle数据库系统的效

十二、  十二、约束章节其他

1、  不能在视图上指定字段为NULL或者 NOT NULL

2、  使用主键、外键的报表在删除的时候,必须依照先删除字表后删除父表顺序进行操作,或者在父表删除语句后加cascade关键字,推荐一步步操作;

 


您可能感兴趣的文档:

--结束END--

本文标题: Oracle 约束

本文链接: https://lsjlt.com/news/39131.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle 约束
    一、约束的概念通俗来讲,约束是为了使被填入的数据更加符合业务规范、保证数据完整性而开发设计的手段。如果进行的DML(更新、插入、删除行)或DDL(此处指ALTER更改操作)操作不合符业务规范(约束)要求,则...
    99+
    2024-04-02
  • Oracle的约束介绍与约束维护
    目录一、什么是约束?二、约束分类1、not null(非空)2、default(默认)3、unique(唯一)4、primary key(主键)5、foreign key(外键):6...
    99+
    2024-04-02
  • oracle添加约束
    //建测试表   create table dept(         -----部门表        deptno number(3) primary key,          dname varchar2(10),    ...
    99+
    2017-11-19
    oracle添加约束 数据库入门 数据库基础教程 数据库 mysql
  • Oracle 约束详解
    一 约束的定义 约束是强加在表上的规则或条件。确保数据库满足业务规则。保证数据的完整性。当对表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则的话,系统就会拒绝执行这个操作。约束可以是...
    99+
    2024-04-02
  • Oracle定义约束
    外键约束保证参照完整性。外键约束限定了一个列的取值范围。一个例子就是限定州名缩写在一个有限值集合中,这个值集合是另外一个控制结构——一张父表    下面我们创建一张参照表,它提...
    99+
    2024-04-02
  • Oracle主键及约束
    Oracle主键Primary Key包含非空约束及唯一约束。添加主键的语句alter table table_name add constraint cons_name primary key(col_n...
    99+
    2024-04-02
  • SQL语句 -非空约束 - 唯一约束 - 主键约束 - 默认约束 -外键约束
    文章目录 约束约束介绍和分类非空约束唯一约束主键约束默认约束案例练习外键约束 约束 约束介绍和分类 约束的概念: 约束是作用于表中列上的规则,用于限制加入表的数据 约束的存在保证了数据库中数据的正确性、有效性和完整性 ...
    99+
    2023-08-17
    sql 数据库 mysql
  • oracle的表级约束和列级约束有什么区别
    表级约束和列级约束都是用来保证数据的完整性和一致性的约束条件,但它们之间有一些区别: 表级约束是针对整个表的约束条件,而列级约束是...
    99+
    2024-04-20
    oracle
  • MySQL约束之默认约束default与零填充约束zerofill
    目录默认约束添加默认约束删除默认约束零填充约束 总结默认约束 mysql 默认值约束用来指定某列的默认值。 添加默认约束 方式1: <字段名> <数据类型> ...
    99+
    2022-07-07
    MySQL默认约束default MySQL零填充约束zerofill
  • Oracle中怎么创建约束
    Oracle中怎么创建约束,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Oracle  创建主键,外键, check...
    99+
    2024-04-02
  • PostgreSQL检查约束中怎么设置列约束和表约束
    这篇文章主要介绍PostgreSQL检查约束中怎么设置列约束和表约束,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、什么是检查约束?设置某个字段里的数值必须满足约束表达式的条件。检查约束是最常见的约束类型,形式为“...
    99+
    2023-06-14
  • 【MySQL】主键约束和外键约束
    目录 1、PRIMARY KEY 2、FOREIGN KEY 3、表的设计 3.1 一对一 3.2 一对多 3.3 多对多 1、PRIMARY KEY 上期我们讲述了 not null 和 unique 约束,而本期的第一个约束就...
    99+
    2023-09-01
    mysql 数据库
  • MySQL 约束
    概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。 分类: 主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign key 非空约束:not nu...
    99+
    2016-01-17
    MySQL 约束
  • MySQL约束
    约束 约束(constraint)概述 为什么要约束 为了保证数据完整性 什么是约束 对表中字段的(强制)限制 约束的分类 角度一:字段个数 单类约束,多列约束 角度二:约束的作用范围 / 定义位置 列级约束:将此约束声明在字段...
    99+
    2017-07-27
    MySQL约束
  • SQL约束
    SQL约束 必须在奋斗中求生存,求发展。 约束 constraints 非空约束 not null #创建表的时候有如下字段 NAME VARCHAR(30) NOT NULL #这里添加了非空约束,name的值不能为null...
    99+
    2020-11-20
    SQL约束
  • 【Oracle Database】数据库约束管理
    主键约束 SQL> alter table customers add constraint customers_pk primary key (customer_id);   Table alter...
    99+
    2024-04-02
  • Oracle违反约束数据的workaround
    最近为测试做一些数据导入,其中存在一些主子表,由于种种原因,子表有些记录,外键值在主表无记录,导致数据导入过程中,无法创建外键, Failing sql is: ALTER TABLE &quo...
    99+
    2024-04-02
  • 怎么理解oracle外键约束
    这期内容当中小编将会给大家带来有关怎么理解oracle外键约束,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 外键约束的创建方法tes1的建表...
    99+
    2024-04-02
  • oracle如何禁用外键约束
    要禁用Oracle数据库中的外键约束,可以使用以下两种方法:方法一:使用ALTER TABLE语句1. 使用sys用户或具有ALTE...
    99+
    2023-09-01
    oracle
  • oracle约束的作用是什么
    Oracle约束是用来确保表中数据的完整性和一致性的规则或条件。它们可以限制表中数据的类型、大小和格式,以及确保数据之间的关系和一致...
    99+
    2024-03-04
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作