Oracle约数,oracle 约束
约束
■给约束改为中文名■
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 约束相关推荐
- Oracle约数,Oracle约束简介
整理自<OCP认证指南> 001 概述 表约束是数据库能够实施业务规则以及保证数据遵循实体--关系模型的一种手段,其中,实体--关系模型由定义应用程序数据结构的系统分析所确定. 在针对定义 ...
- 小议Oracle外键约束修改行为
小议Oracle外键约束修改行为(一) Oracle的外键用来限制子表中参考的字段的值,必须在主表中存在.而且在主表的记录发生变化导致外键参考唯一约束值发生了变化时,定义了一系列的动作. 在SQL92 ...
- oracle中check约束性别,关于Oracle Check类型约束的导入与启用
今天有朋友问,Oracle的Check约束在indexfile中是否存在,导入后没有检查到. 我测试了一下,事实证明是可以的,Oracle的Check Constraints可以通过imp,使用ind ...
- 企业实战06:Oracle数据库_约束
Oracle数据库专栏 命令后面可以不加;分号 SQL语句后面一定要加;分号 文章目录 约束 5-1 Oracle 约束概述 5-2 Oracle 非空约束 5-3 Oracle 主键约束 5-4 O ...
- Oracle维护数据完整性——约束
Oracle维护数据完整性--约束 维护数据的完整性--约束 约束用于确保数据库数据满足特定的规则.在oracle和sql server等数据库中,not null(非空).unique(唯一).pr ...
- oracle能不能改外键属性,CSS_小议Oracle外键约束修改行为(五), Oracle的外键用来限制子表 - phpStudy...
小议Oracle外键约束修改行为(五) Oracle的外键用来限制子表中参考的字段的值,必须在主表中存在.而且在主表的记录发生变化导致外键参考唯一约束值发生了变化时,定义了一系列的动作. 前面几篇文章 ...
- Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句
Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...
- oracle 外键约束 权限,ORACLE外键约束(FORIGEN KEY)
外键约束的定义是,让另一张表的记录来约束自己.这里的另一张表就是主表. 当主表的记录删除时,我们可以跟随主表删除记录(ON DELETE CASCADE).或者相应字段设置为空(ON DELETE S ...
- oracle外键约束强行insert,oracle 禁用外键约束
1.ORACLE数据库中的外键约束名都在表user_constraints中可以查到.其中constraint_type='R'表示是外键约束. 2.启用外键约束的命令为:alter table ta ...
最新文章
- POJ 1189 记忆化搜索
- Linux Mint 19 安装Gnome Boxes 新建失败
- 谁会为小扎的AI管家配音:网民选了这位老帅哥
- java 企业门户网站 源码 自适应响应式 freemarker 静态引擎 html5 SSM
- markdown学习/mou
- er图外键怎么表示_本周话题:取消考研复试最能实现相对公平?你怎么看?
- Android开发指南中文版(十三)User Interface-Notifications
- 【Docker】使用介绍
- 同步和异步的区别、例子
- 健身管理系统一站式智能化健身管理体验
- 经典的850棋牌游戏搭建教学
- Google产品设计师:从二维界面到虚拟现实
- LabVIEW色彩匹配实现颜色识别、颜色检验(基础篇—13)
- 【ARM 嵌入式 C 入门及渐进 2 -- 向上取整向下取整 linux roundup/round_up】
- 无法加载文件C:\Users\TANG\AppData\Roaming\npm\nrm.ps1,因为在此系统上禁止运行脚本
- 数据挖掘十大经典算法个人总结
- 六边形地图生成(1)——基础地形
- python(进阶篇):正则表达式常用语法
- 实验二、贪吃蛇游戏开发
- 使用命令行统计代码行数