19、数据表 约束

非空约束
非空约束就是限制必须为某个列提供值。空(null)即不存在未知的情况。

create table BOOKS(
	BookNo number(4) not null, --非空
	BookName varchar2(30) ,
	ISBN varchar2(30) not null
);

--使用 later table modify 修改重新定义非空约束
alter table BOOKS modify BookName not null;
alter table BOOKS modify BookName null;

主键约束
主键约束用于唯一的标识表中的每一行记录,最多只能由一个主键约束,可以由一个列组成也可以由两个或两个以上的列组成(联合主键)。

create table BOOKS(
	BookNo number(4) not null, --非空
	BookName varchar2(30) ,
	ISBN varchar2(30) not null,
	constraint BOOK_PK primary key(BookNo)
);
create table BOOKS(
	BookNo number(4) primary key,
	BookName varchar2(30) ,
	ISBN varchar2(30) not null
);
--如果创建表时未创建主键,后续添加主键
alter table BOOKS add constraint BOOK_PK primary key(BookNo);
alter table BOOKS add primary key(BookNo);
--删除主键
alter table BOOKS drop constraint BOOK_PK;

唯一性约束
唯一性约束强调所在的列不允许有相同的值,但是可以为空。
由于unique 约束可以存在重复 null 值,因此可以添加 not null 约束相当于主键约束

create table BOOKS(
	BookNo number(4) primary key,
	BookName varchar2(30) ,
	ISBN varchar2(30) not null,
	QQ varchar2(20) constraint QQ_UK unique--唯一性约束
);
--添加唯一约束,如果添加多个约束,则在括号里使用逗号分隔多个列
alter table BOOKS add constraint EMAIL_UK unique(email);
--删除唯一约束、
alter table BOOKS drop constraint EMAIL_UK;

外键约束
外键约束会使用两个表进行管联或一个表自然连接的情况。外键值“当前表”(外键表)引用”另一个表“(被引用表)的某个列或几个列,而“另一个表”中被引用的列必须具有主键约束或者唯一约束。在“另一个表”中不存在的数据不能出现在“当前表”对应列中。一般情况下当删除被引用表中的数据时,该数据也不应该存在外键表的外键列中。

--employees   department 表   外键表employees中的外键列department_id 将被引用表department中的department_id列
alter table employee add constraint DEPT_FK 
	foreign key(department_id) 
	references department(department_id);--创建外键约束,外键列为 department_id;
--如果外键表的外键列与被引用表的被引用列名相同
alter table employee add constraint DEPT_FK 
	foreign key(department_id) 
	references department;
--删除外键约束
alter table employee drop constraint DEPT_FK;	

1.在定义外键约束时,如果使用了关键字 NO ACTION 那么当删除被引用表中被引用列的数据时将违反外键约束,该操作将被禁止执行,也是外键的默认引用类型。
2.在定义外键约束时,如果使用了关键字SET NULL 那么当删除被引用表中被引用列的数据时外键表中的外键列被设置为null 要使这个关键字起作用,外键列必须支持null值。
3.在定义外键约束时,如果使用了关键字CASCADE 那么当删除被引用表中被引用列的数据时外键表中的外键列也将被删除,这种方式通称“级联删除”,实际在开发过程中广泛使用。

alter table employees add constraint DEPT_FK 
	foreign key(department_id)
	references department(department_id) on delete cascade;--级联删除 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值