Oracle数据库对象-约束

为什么需要约束:
因为一张表只能存在一个主键,外键和字段可存在多个,但可能会存在不为空的情况!所以在创建一个表的时候肯定要对表进行重重约束,使得表更规范!但在使用没有约束语句的sql语句创建的表是无法区分主外键和判断是否可空的问题,所以在创建表的sql语句上加入约束语句来直接给表与表的列进行非空性约束,唯一性约束,主键约束,外键约束,判断性约束,使得表更规范,用起来也不容易出现漏洞!

not null 约束
作用:只能定义在列级,并且保证列值不能为空

unique约束
作用:唯一约束,允许出现多个空值:null。
使用范围:可以定义在表级或列级

primary key约束
作用:约束外键
使用范围:可以定义在表级或列级

foreign key约束
作用:使用foreign key在表级指定子表中的外键列,在使用references标示在父表中的主键列
on delete cascade(级联删除): 当父表中的列被删除时,子表中相对应的列也被删除
on delete set null(级联置空): 子表中相应的列置空
使用范围:可以定义在表级或列级

check约束
作用:定义每一行必须满足的条件
使用范围:可以定义在表级或列级

注意:只有unique约束不仅可以直接在声明列的后面进行约束,还可以在声明完所有列后再使用约束语句进行约束
例子:Oracle数据库对象-约束

add添加约束
使用 alter table 语句:
添加或删除约束,但是不能修改约束,仅能对约束进行有效化或无效化起到修改的作用
添加not null约束要使用 modify语句
例子:Oracle数据库对象-约束
drop constraint删除约束
alter table employees
drop constraint emp_manager_fk;
例子:
Oracle数据库对象-约束

disable constraint无效化约束
在alter table 语句中使用 disable子句将约束无效化。
例子:
Oracle数据库对象-约束
enable constraint**约束
enable 子句可将当前无效的约束**
当定义或**unique或 primary key约束时系统会自动创建unique或 primary key索引
例子:
Oracle数据库对象-约束
查询约束
查询约束具体信息:可使用数据字典视图 user_constraints
查询定义约束的列:可使用数据字典视图 user_cons_columns
例子:
Oracle数据库对象-约束
重点难点:
not null 约束是只定义在列级的约束,
unique约束,primary key约束,foreign key约束,check约束既可以定义在列级,也可以定义在表级