约束

■给约束改为中文名■

alter table 表名 rename constraint 旧名字 to "新名字(中文)";

一.主键约束

1.为什么要用主键约束

(1)防止出现重复数据

(2)检索有利

(3)支持外键

2.主键约束简介

(1)主键列的数据类型不一定是数值型

(2)主键不一定只有一列

(3)大多数时候是单列主键[1.单列主键只需一个搜索条件,2.各个候选码的属性之间不能存在函数依赖]

(4)自增的数值型主键最受欢迎

(5)主键不能为空

3.创建主键约束

(1)创建表的时候定义主键约束   primary key

eg.create table a (a_no number primary key,a_name varchar2(2));

create table a (a_no number,a_name varchar2(20),primary key(a_no,a_name));

(2)查看主键约束

select table_name,constraint_name,constraint_type,status from user_constraints;

除了数据字典user_constraints之外,还可以通过user_cons_columns查看主键被建在那些列上面.

select constraint_name,table_name,column_name from user_cons_columns where constrain_name='约束名';

(3)创建表后,添加主键

alter table add primary key(列1,列2,...);

4.修改主键约束

(1)禁用/启用主键

禁用:alter table 表名 disable primary key;

启用:alter table 表名 enable primary key;

在启用主键约束时,oracle会检查数据是否违反主键约束,如果违反,那么主键的启用也将失败.

(2)重命名主键

alter table 表名 rename constraint 原主键名称 to 新主键名称;

(3)删除主键

alter table 表名 drop constraint 约束名;

5.主键与索引

(1)当oracle创建主键时,会自动创建一个与主键同名的索引.

select table_name,index_name,index_type from user_indexes;

(2)索引列于主键列相同.

查询索引语句:select index_name,table_name,column_name from user_ind_columns;

(3)当用户重命名主键以后,索引并不会随之重命名.

(4)索引会随着主键的删除而被删除.

(5)当oracle创建主键时,会先查看主键列是否创建了索引,如果未创建,则会自动创建;如果已创建,oracle只会创建主键,不会进行索引创建.已存在的索引与主键没连带关系,即删除主键索引依然存在.

二.外键约束

1.为什么要用外键约束

(1)参照完整性

在两个表之间,一个表的记录依附于另一个表的记录而存在,称为表之间的参照完整性

(2)外键的必要性[减少错误]

2.外键约束简介

一个数据表有自己的主键,而向外部其他数据表的引用,称为外键.外键实际银行了对外部引用的限制,必须获得外部数据表的唯一记录.

订单表中的数据,必须依附于客户表产生数据的存在而存在,所以订单表被称为从表,客户表被称为主表.

3.创建外键约束

(1)创建外键约束

alter table 表名 add constraint 约束名 foreign key(外键列名) references 主表(主表主键列);

(2)查看外键信息

select table_name,constraint_name,constraint_type,r_constraint_name from user_constraints;

4.级联更新与级联删除

主表的操作,将连带影响到从表的操作,这就是级联更新与级联删除问题的提出背景.

(1)级联更新

alter table 表名 add constraint 约束名 foreign key(外键列名) references 主表(主表主键列) deferrable initially deferred;

其中,deferrable initially deferred表示新建约束使用了延迟校验机制,默认为即时校验.即时校验是指,当oracle执行了一条sql语句,立即验证这条语句是否仍能保持数据完整性;而延时校验是指,当整个事物结束时,才验证数据完整性.

因此,可以先修改主表数据,然后再修改从表数据,保证二者的统一性,当执行commit以后,事物结束.

更新事物提交时,将验证数据完整性,如果无法通过校验,那么事物回滚.

(2)级联删除

alter table 表名 add constraint 约束名 foreign key(外键列名) references 主表(主表主键列) on delete cascade;

其中,on delete cascade指定外键采用级联删除机制.此处的级联是指,当用户删除主表中的某条记录时,oracle会自动搜索并删除从表中的相关记录[即时删除].

5.外键约束的相关操作

(1)重命名

alter table 表名 rename constraint 原外键名称 to 新外键名称

(2)禁用,启用

alter table 表名 disable/enable constraint 外键名;

(3)不校验已有数据的完整性

alter table 表名 enable novalidate constraint 外交名;

(4)删除外交

alter table 表名 drop constraint 外键名;

三.唯一性约束

1.唯一性约束简介

(1)唯一性约束和主键的相同点

①唯一性约束和主键都可以限制表中记录的唯一性

②唯一性约束和主键都可以建立在单列或列的组合上

(2)唯一性约束和主键的不同点

①表中允许的个数不同.在一个表中,主键是唯一的,而唯一性约束没有数量上的限制

②唯一性约束的列值允许空值

③唯一性约束创建时不会连带创建索引

2.创建唯一性约束

(1)创建唯一性约束

alter table 表名 add constraint 约束名 unique(列名1,列名2,...);

(2)查询唯一性约束的详细信息

select table_name,constraint_name,constraint_type from user_constraints;

唯一性约束的列信息:

select constraint_name,table_name,column_name from user_cons_columns;

3.修改唯一性约束

(1)删除唯一性约束

alter table 表名 drop constraint 约束名;

(2)重命名

altre table 表名 rename constraint 旧名 to 新名;

(3)禁用/启用

alter table 表名 disable/enable constraint 约束名;

4.总结

唯一性约束可以建立在列或列的组合上,可以作为主键约束的补充.最常见的使用场景是:主键建立在与实际业务无关的列上,而业务逻辑上保证记录的唯一性往往使用唯一性约束.

四.检查约束

1.检查约束简介

检查约束的实质是一个布尔表达式,一旦在数据表上创建了检查约束,那么该检查约束将在数据更新时计算布尔表达式的值,如果结果为真,则校验通过,并成功更新数据,否则,oracle将禁止数据的更新操作.

2.创建检查约束

(1)创建检查约束

alter table 表名 add constraint 约束名  check(布尔表达式)

(2)查询检查约束的详细信息

select table_name,constraint_name,constraint_type,search_condition from user_constraints;

五.默认值约束

1.创建默认值约束

(1)创建默认值

alter table 表名 modify 列名 default 默认值;

(2)查看默认值约束信息

select table_name,column_name,data_type,data_length,data_default from user_tab_columns;

2.修改默认值约束

alter table 表名 modify(列1 default 默认值1,列2 default 默认值2);

六.非空约束

1.创建非空约束

(1)创建非空约束

create table 表名 modify (列名 not null);

(2)查看非空约束

select table_name,column_name,data_type,nullable from user_tab_columns;

2.修改非空约束

alter table 表名 modify (列名 null);

Oracle约数,oracle 约束相关推荐

  1. Oracle约数,Oracle约束简介

    整理自<OCP认证指南> 001 概述 表约束是数据库能够实施业务规则以及保证数据遵循实体--关系模型的一种手段,其中,实体--关系模型由定义应用程序数据结构的系统分析所确定. 在针对定义 ...

  2. 小议Oracle外键约束修改行为

    小议Oracle外键约束修改行为(一) Oracle的外键用来限制子表中参考的字段的值,必须在主表中存在.而且在主表的记录发生变化导致外键参考唯一约束值发生了变化时,定义了一系列的动作. 在SQL92 ...

  3. oracle中check约束性别,关于Oracle Check类型约束的导入与启用

    今天有朋友问,Oracle的Check约束在indexfile中是否存在,导入后没有检查到. 我测试了一下,事实证明是可以的,Oracle的Check Constraints可以通过imp,使用ind ...

  4. 企业实战06:Oracle数据库_约束

    Oracle数据库专栏 命令后面可以不加;分号 SQL语句后面一定要加;分号 文章目录 约束 5-1 Oracle 约束概述 5-2 Oracle 非空约束 5-3 Oracle 主键约束 5-4 O ...

  5. Oracle维护数据完整性——约束

    Oracle维护数据完整性--约束 维护数据的完整性--约束 约束用于确保数据库数据满足特定的规则.在oracle和sql server等数据库中,not null(非空).unique(唯一).pr ...

  6. oracle能不能改外键属性,CSS_小议Oracle外键约束修改行为(五), Oracle的外键用来限制子表 - phpStudy...

    小议Oracle外键约束修改行为(五) Oracle的外键用来限制子表中参考的字段的值,必须在主表中存在.而且在主表的记录发生变化导致外键参考唯一约束值发生了变化时,定义了一系列的动作. 前面几篇文章 ...

  7. Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句

    Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...

  8. oracle 外键约束 权限,ORACLE外键约束(FORIGEN KEY)

    外键约束的定义是,让另一张表的记录来约束自己.这里的另一张表就是主表. 当主表的记录删除时,我们可以跟随主表删除记录(ON DELETE CASCADE).或者相应字段设置为空(ON DELETE S ...

  9. oracle外键约束强行insert,oracle 禁用外键约束

    1.ORACLE数据库中的外键约束名都在表user_constraints中可以查到.其中constraint_type='R'表示是外键约束. 2.启用外键约束的命令为:alter table ta ...

最新文章

  1. POJ 1189 记忆化搜索
  2. Linux Mint 19 安装Gnome Boxes 新建失败
  3. 谁会为小扎的AI管家配音:网民选了这位老帅哥
  4. java 企业门户网站 源码 自适应响应式 freemarker 静态引擎 html5 SSM
  5. markdown学习/mou
  6. er图外键怎么表示_本周话题:取消考研复试最能实现相对公平?你怎么看?
  7. Android开发指南中文版(十三)User Interface-Notifications
  8. 【Docker】使用介绍
  9. 同步和异步的区别、例子
  10. 健身管理系统一站式智能化健身管理体验
  11. 经典的850棋牌游戏搭建教学
  12. Google产品设计师:从二维界面到虚拟现实
  13. LabVIEW色彩匹配实现颜色识别、颜色检验(基础篇—13)
  14. 【ARM 嵌入式 C 入门及渐进 2 -- 向上取整向下取整 linux roundup/round_up】
  15. 无法加载文件C:\Users\TANG\AppData\Roaming\npm\nrm.ps1,因为在此系统上禁止运行脚本
  16. 数据挖掘十大经典算法个人总结
  17. 六边形地图生成(1)——基础地形
  18. python(进阶篇):正则表达式常用语法
  19. 实验二、贪吃蛇游戏开发
  20. 使用命令行统计代码行数

热门文章

  1. 计算机科学与技术社会实践活动,计算机科学与技术学院社会实践团队寻根之旅...
  2. Android自定义分割线_水平及垂直分割线的两种实现方法
  3. Http代理服务器—Netty版
  4. 软件测试笔试题(四)
  5. 神经网络的核心——寻优Wi权重系数
  6. 查看linux所有空间说说,说说:Linux查看空间使用情况
  7. Word文件删除后怎么恢复?好用的恢复方法分享
  8. sendmail.php,PHP sendmail 邮件发送失败,如何调试
  9. 几种常用加密算法比较
  10. uniapp实现微信小程序用户实时位置定位并显示地图