oracle 约束
约束是表中列的属性,用来维护数据结构完整性的一种手段
约束的种类:
NOT NULL
UNIQUE
PARIAMRY KEY
FOREIGN KEY
CHECK
enble validate 检查现有数据和新数据是否符合约束
enable novlidate 检查新数据是否符合约束
disable validate 给表加锁
disable novalidate
创建表的时候带有约束信息:
create table e (empno number(4) constraint pk_e_empno(约束名) primary key,
ename varchar2(10) not null, not null只能在列级别
email varchar2(30),
constraint uk_e_email unique (email)); 约束写在后面为表级别约束,要指定列名
查看约束信息:
select constraint_name,
constraint_type,
SEARCH_CONDITION,
R_CONSTRAINT_NAME
from user_constraints
where table_name='E';
select constraint_name,column_name from user_cons_columns
where table_name='E';
添加约束:
alter table e add (sal number(7,2),deptno number(2));
alter table e add constraint ck_e_sal check (sal>999 and sal is not null);
alter table e add constraint fk_e_deptno foreign key(deptno) references dept (deptno);
注意:not null 约束只能在列级别指定不能在表级别指定!
alter table e modify (ename varchar2(10) constraint nn_e_ename not null);
select table_name,constraint_type from user_constraints where constraint_name='PK_DEPT';
select table_name,column_name from user_cons_columns
where constraint_name='PK_DEPT';
insert into e values (1,'X1','x1@uplooking.com',1000,10);
insert into e values (2,'X2','x2@uplooking.com',2000,20);
insert into e values (3,'X3','x3@uplooking.com',2000,40);
commit;
测试数据依赖关系:
delete dept where deptno=40;
删除约束:
alter table e drop constraint fk_e_deptno;
外键约束的两种特殊情况(主键删除有级联)
alter table e add constraint fk_e_deptno foreign key(deptno) references dept (deptno) on delete set null;
alter table e add constraint fk_e_deptno foreign key(deptno) references dept (deptno) on delete cascade;
约束的状态:
select constraint_name,
status
from user_constraints
where table_name='E';
禁止约束:
alter table e modify constraint UK_E_EMAIL disable;
启用约束:
alter table e modify constraint UK_E_EMAIL enable;
删除外键,重新建立父子关系(子表为e,父表为d,d表拷贝dept表数据):
alter table e drop constraint fk_e_deptno;
create table d as select * from dept;
alter table d add constraint pk_d_deptno primary key (deptno);
alter table e add constraint fk_e_deptno foreign key(deptno) references d (deptno);
父子关系建立后对父表结构修改的影响:
alter table d drop (deptno);
ORA-12992: cannot drop parent key column
强制删除父表主键:
alter table d drop (deptno) cascade constraints;
oracle 约束的更多相关文章
- ORACLE约束总结
你对ORACLE约束的了解如何?比较模糊还是相当透彻?如果你对下面几个问题了如指掌的话,恭喜你,你已经对约束掌握得比较好了,不用看这篇文章了.ORACLE的约束有啥功能作用? 有哪些类型约束(不同版本 ...
- 【Oracle】Oracle约束的总结
你对ORACLE约束的了解如何?比较模糊还是相当透彻?如果你对下面几个问题了如指掌的话,恭喜你,你已经对约束掌握得比较好了,不用看这篇文章了.ORACLE的约束有啥功能作用? 有哪些类型约束(不同版本 ...
- oracle约束约束状态和设计习惯
oracle约束状态有几个项目,会让人迷惑,分别是: enable/disable--是否启用/禁用 validate/invalidate--确认/不确认 deferrable/not deferr ...
- 转 ORACLE约束总结
https://www.cnblogs.com/kerrycode/archive/2012/05/13/2454614.html 你对ORACLE约束的了解如何?比较模糊还是相当透彻?如果你对下面几 ...
- Oracle约束(Constraint)详解
概述 约束是数据库用来确保数据满足业务规则的手段,不过在真正的企业开发中,除了主键约束这类具有强需求的约束,像外键约束,检查约束更多时候仅仅出现在数据库设计阶段,真实环境却很少应用,更多是放到程序逻辑 ...
- Oracle 约束类型
在Oracle中的约束类型:NOT NULLUNIQUE KeyPRIMARY KEYFOREIGN KEYCHECK create table emp--创建表格 ,注意约束( empno numb ...
- Oracle约束操作
约束的概念: 约束是在表中定义的用于维护数据库完整性的一些规则.通过为表中的字段定义约 束,可以防止将错误的数据插入到表中. 注意: 1.如果某个约束只作用于单独的字段,既可以在字段级定义约束,也可以 ...
- 十五、oracle 约束
一.维护数据的完整性数据的完整性用于确保数据库数据遵从一定的商业和逻辑规则,在oracle中,数据完整性可以使用约束.触发器.应用程序(过程.函数)三种方法来实现,在这三种方法中,因为约束易于维护,并 ...
- [Oracle]约束(constraint)
(一)约束的概念 在Oracle中,可以通过设置约束来防止无效数据进入表中.Oracle一共有5种约束: 主键约束(primary key) 外键约束(foreign key) 唯一性约束(uniqu ...
- Oracle约束、索引
Oracle中的约束有五种,分别为: 非空:not null 主键:primary key 外键:foreign key 唯一:unique 检查:check 在数据字典视图 user_constra ...
随机推荐
- Centos7 Openstack - (第一节)基本环境配置
Centos7 install Openstack - (第一节)基本环境配置 我的blog地址:http://www.cnblogs.com/caoguo 根据openstack官方文档配置 官方文 ...
- C#中的委托,匿名方法和Lambda表达式
简介 在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆.我想下面的代码能证实这点.下面哪一个First会被编译?哪一个会返回我们需要的结果?即Customer.ID=.答案是6个Firs ...
- 手游设备ID
android: imei: IMEI(International Mobile Equipment Identity)是国际移动设备标识的缩写,IMEI由15位数字(英文字母)组成. mac: 是指 ...
- 学习练习 java20160507作业
第一题 求水仙花的个数: //求水仙花数 int zongshu = 0; for(int i =100; i<=999;i++) { int bai = i/100; //求百位上面的数字 i ...
- 使用Servlet处理请求<http://blog.sina.com.cn/s/blog_5d3fb3cc0100ep9q.html>
一.GET和POST的区别 1.GET提交的是文本内容,规定其数据长度不超过255个字符.在GET方式提交的URL中会显示出提交的查询数据而却提交数据的缓存会在浏览器的URL历史状态中,这样我们往往在 ...
- .net HttpClient类(System.Net.Http) c#并发使用测试、压测
.net HttpClient类(System.Net.Http) c#并发使用测试.压测
- Loadrunner:集合点(Rendezvous)
集合点:等到特定的用户数后再一起执行某个操作,比如一起登录.一起发信,一般情况下使用不到集合点,不过,订票系统或者促销类需要用到,比如说某个促销品的促销时间在8点到8点30,这样的话,就可能出现在8点 ...
- Recover deleted pictures in iOS 9
A case about business secret. The suspect is an engineer in Hitec company, and compeitiors pay lots ...
- WEB跨域的实现
同源策略/SOP(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS.CSFR等攻击(可以参考我的这篇文章). SOP要求 ...
- projecteuler Smallest multiple
2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any rema ...