Oracle学习笔记基础-002-约束

Oracle学习笔记基础-002-约束

约束的作用

定义规则:对字段的规则,比如必填项,默认值等。
确保完整性:确保数据的完整性,可以限制一些错误或无效的信息的插入。

非空约束
  1. 在创建表时设置非空约束
    (默认是可以为NULL的)
CREATE TABLE table_name (
	column_name datatype NOT NULL, ...
);
  1. 在修改表时添加非空约束
ALTER TABLE table_name
MODIFY column_name datatype NOT NULL;
  1. 在修改表时去除非空约束
ALTER TABLE table_name
MODIFY column_name datatype NULL;
主键约束

作用:确保表中每一行数据的唯一性
非空 唯一
一张表只能设计一个主键约束
主键约束可以由多个字段构成(联合主键或复合主键)

  1. 在创建表时设置主键约束
--法一: 列级约束
CREATE TABLE table_name(
	column_name datatype PRIMARY KEY, ...
)

--法二、表级约束:在所有的字段写完之后,再设置约束
CONSTRAINT constraint_name
PRIMARY KEY(column_name1, ...)

:创建完约束之后忘记约束名称了,可以在数据字典user_constraints中查询

select constraint_name from user_constraints where table_name='table_name';
  1. 在修改表时添加主键约束
--在添加时,最好表中是没有数据的
ALTER TABLE table_name

ADD CONSTRAINT constraint_name
PRIMARY KEY(column_name1, ...);
  1. 更改约束名称
--该方法还可以修改其他任何约束的名称
ALTER TABLE table_name

RENAME CONSTRAINT old_name to new_name;
  1. 删除约束

ALTER TABLE table_name
--禁用/启用约束
DISABLE|ENABLE CONSTRAINT constraint_name
--删除约束
DROP CONSTRAINT constraint_name
--直接用名称删除,[CASECADE]是级联约束,可以将关联的其他约束也一起删掉,一般在删除外键的时候有效
DROP PRIMARY KEY [CASECADE]

:查看主键是否禁用

SELECT constraint_name , status from user_constraints where TABLE_NAME = 'table_name';
外键约束

唯一一个涉及两个表的字段关系的一个约束

  1. 在创建表时设置外键约束
--法一:列级约束
--1.设置外键约束时,主表的字段必须是主键
--2.主从表中相应额字段必须是同一种数据类型
--3.从表 中外键字段的值必须来自 主表 中相应字段的值,或者为NULL值
CREATE TABLE table1(从表)
(
column_name datatype REFERENCES
table2(column_name), ...  (主表)
);

--法二:表级约束,表创建时定义完所有字段之后,
--[ON DELETE CASCADE]级联删除:主表中的一条数据被删除之后,从表中使用这条数据的字段的数据也会被删除
CONSTRAINT constraint_name FOREIGN
KEY(column_name) REFERENCES
table_name(column_name) [ON DELETE CASCADE] (主表)
  1. 在修改表时添加外键约束
ALTER TABLE table_name

ADD CONSTRAINT constraint_name FOREIGN
KET(column_name) REFERENCES
table_name(column_name) [ON DELETE CASCADE] (主表)
  1. 删除外键约束
ALTER TABLE table_name

--禁用外键约束
DISABLE|ENABLE CONSTRAINT constraint_name

--彻底删除外键约束
DROP CONSTRAINT constraint_name

唯一约束

作用:保证字段的唯一性
唯一约束和主键约束的区别:

  • 主键字段值必须时非空的,唯一约束允许有一个空值。
  • 主键在每张表中只允许有一个,而唯一约束可以有多个。

1.在创建表时设置唯一约束

--列级约束
CREATE TABLE table_name 
(column_name datatype UNIQUE, ...);

--表级约束
--如果一个表里要创建多个唯一约束,就要写多条如下语句,因为每个唯一约束的名称时不一样的。
CONSTRAINT constraint_name
UNIQUE(column_name)
  1. 在修改表时添加唯一约束
ALTER TABLE table_name

ADD CONSTRAINT constraint_name
UNIQUE(column_name);
  1. 删除唯一约束
ALTER TABLE table_name

--禁用/启用唯一约束
DISABLE|ENABLE constraint_name

--彻底删除唯一约束
DROP CONSTRAINT constraint_name
检查约束

作用:使表中的值具有实际意义

  1. 在创建表时设置检查约束
--列级约束, 约束名是系统自定义的
--expressions表达式, 如工资大于0:salary>0
CREATE TABLE table_name 
(column_name datatype CHECK(expressions), ...);

--表级约束
--如果一个表里要创建多个唯一约束,就要写多条如下语句,因为每个唯一约束的名称时不一样的。
CONSTRAINT constraint_name
CHECK(expressions)
  1. 在修改表时添加检查约束
ALTER TABLE table_name

ADD CONSTRAINT constraint_name
CHECK(expressions);
  1. 删除检查约束
ALTER TABLE table_name

--暂时禁用/启用唯一约束
DISABLE|ENABLE constraint_name

--彻底删除唯一约束
DROP CONSTRAINT constraint_name
小结:
  1. 主键约束每张表只能有一个,可以由多个字段构成。
  2. 外键约束是唯一一个涉及两个表关系的约束。
  3. 在创建表时设置约束,非空约束只能在列级设置,不能在表级设置,非空约束是没有名字的。
  4. 数据字典:user_constraints
  5. 删除主键约束有一种特殊的写法,不同于其他,因为主键一个只有唯一一个:DROP PRIMARY KEY

注:慕课网学习笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值