oracle约束+disable与enable约束+为表添加约束+修改表约束的状态+primary key+not null+unique+foreign key+外键删除数据,可以使用的级联操作
来源:互联网 发布:北京圆之翰大数据 编辑:程序博客网 时间:2024/06/06 18:32
oracle约束
分类
表级约束:应用于表,对表的多个列起作用。或者说定义所有列后,再定义约束,not null 约束只能在列级上。
列级约束:应用于表的一列,只对该列起作用。或者说定义列的同时定义约束。
disable与enable约束
控制约束的约束
控制表的约束是禁用还是激活状态
disable:禁止状态,相当于该列没有约束
enable:激活状态,默认新创建的约束状态是激活状态
为表添加约束
修改表约束的状态
语法1
alter table tableName modify constraint restrainName disable | enable ;
alter table student3 modify constraint uniSname disable;
primary key:主键由一列或多列组成
主键,非空,不能重复
完整性约束
实现主键约束:
1.建表的时候在列后面添加primary key
constraint 约束名 primary key(列明));
constraint pk_id primary key(id));
多次插入同一个数据违反约束条件
2.已存在的表添加约束:
alter table 表名 add contraint 约束名 约束;
前提:列的值要满足约束条件
alter table people add constraint pk_id primary key(id);
测试的时候我是删了数据在加上约束
not null
非空;
列的所有值不能为空
语法:
建表的时候 列后面加上not null;
表存在的时候:alter table B modify 列名 not null;
删除not null 约束
alter table B modify 列名 null;
unique
唯一:
指定一列或一组列只能存储唯一的值(多列情况,只要保证不全部相同就可以)
语法:
建表的时候在列后面加上unique
表存在的时候:alter table B add constraint 唯一约束名 unique(列名)
删除unique约束
alter table tableName drop unique(列名)
alter table tableName drop constraint 约束名
foreign key
外键:维护子表和父表之间的引用完整性
引用完整性约束;
用于引用本表或者另一个表的一列或者一组列。
引用列或者被引用列可以在同一个表中,这种情况称自引用
1被引用的列或者列组应该具有主键约束或者唯一约束
2引用列的取值只能为被引用列的值或者null值
3可以为一列或一组列定义为foreign key
4如果引用列中存储了被引用列的某个值,则不能删除被引用列的某个值,
否则与2相矛盾,如果要删除,先删除引用列的值,才删除被引用列的值。
1建表的时候添加约束
列名1 数据类型【default 默认值】 【【constrant 约束名】
references tableName2(列名2)
create table class(
cno varchar2(10) primary key,
cname varchar2(20),
cnum number(2)
);
create table student2(
sno varchar2(10) primary key,
sname varchar2(20),
sage number(2),
cno varchar2(2) constraint fk_sno references class(cno)
);
或者
create table tableName1(
columnName1 数据类型【default 默认值】
constraint 约束名 foreign key(列名1) references 父表(列名2)
】)
列名1 :本表的列
列名2:父表的主键列
references :用于定义列名1指向其他表中的列名2
create table class(
cno varchar2(10) primary key,
cname varchar2(20),
cnum number(2)
);
create table student2(
sno varchar2(10) primary key,
sname varchar2(20),
sage number(2),
cno varchar2(2),
constraint fk_sno foreign key(cno) references class(cno)
);
2为以存在的表中的列添加外键
alter table tableName add 【constraint 约束名 】
foreign key(列名1) references 父表(列名2)
create table class(
cno varchar2(10) primary key,
cname varchar2(20),
cnum number(2)
);
create table student2(
sno varchar2(10) primary key,
sname varchar2(20),
sage number(2),
cno varchar2(10)
);
alter table student2
add
constraint fk_sno foreign key(cno) references class(cno)
注意:
创建的时候先建父表,在建子表
删除表的时候的先删子表,再删父表
插入有数据的值,值需要在父表中可以被找到
允许外键为空
删除父表数据的时候:父表的数据必须没有被子表使用
外键删除数据,可以使用的级联操作
on delete cascade:当删除父表被引用的数据时,级联删除子表中相应的数据行
on delete set null:当删除父表被引用的数据时,级联设置子表中相应的引用列的值为null,前提该列支持设置为null
on delete no action:当删除父表被引用的数据时,如果子表的引用列包含该值,禁止删除操作,默认为此选项
on delete set null操作
create table class(
cno varchar2(10) primary key,
cname varchar2(20),
cnum number(2)
);
create table student2(
sno varchar2(10) primary key,
sname varchar2(20),
sage number(2),
cno varchar2(2),
constraint fk_sno foreign key(cno) references class(cno) on delete set null
);
添加数据
insert into class values(‘1’,’一班’,55);
insert into student2 values(‘1’,’lili’,18,’1’);
删除父表被引用的数据
delete class where cno=’1’;
查看子表的数据是否因为父表的数据被删除导致相应列的值被设置为null,
结果:子表中相应的引用列的值为null
select * from student2;
on delete cascade操作
- oracle约束+disable与enable约束+为表添加约束+修改表约束的状态+primary key+not null+unique+foreign key+外键删除数据,可以使用的级联操作
- SQL约束(主键约束 primary key、外键约束 foreign key、唯一约束unique 、CHECK约束)
- oracle的完整性约束:check/not null/unique/primary/foreign key
- SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,今天使用SQL Server2008来演示下这几种约束的
- oracle约束总结(not null/unique/primary key/foreign key/check)
- oracle中五中约束详解(CHECK,UNIQUE,PRIMARY KEY,FOREIGN KEY,NOT NULL)
- SQL 约束 (Constraints):NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHE
- SQLite 约束NOT NULL,DEFAULT,UNIQUE,PRIMARY KEY, CHECK
- primary key 与 unique 约束的区别与作用
- 第五章、数据库设计(三范式、主键约束 primary key、外键约束 foreign key、唯一约束unique 、CHECK约束)
- UNIQUE 约束和 PRIMARY KEY 约束
- 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)
- oracle的primary key主键约束
- SQL FOREIGN KEY 约束的建立与删除(转)
- SQL PRIMARY KEY 约束、SQL FOREIGN KEY 约束
- SQL 数据库 学习 010 表和约束的区别、check约束、default约束、unique约束、not null约束
- 聊聊Oracle外键约束(Foreign Key)的几个操作选项
- FOREIGN KEY 约束
- 什么是Http?
- UVA 11722 概率几何
- 中断
- linux运维-第三方软件仓库的搭建
- 插入排序
- oracle约束+disable与enable约束+为表添加约束+修改表约束的状态+primary key+not null+unique+foreign key+外键删除数据,可以使用的级联操作
- 神经网络实现手写字符识别系统
- 你学不来的硅谷成功秘诀
- Maven编译报不兼容类型
- Python + Allure(报告)+ Jenkins(持续集成)接口自动化测试环境搭建
- U
- 关于生产环境出现tomcat的jvm 内存溢出问题的解决
- [LeetCode]239. Sliding Window Maximum
- Docker快速入门