约束


57. 定义非空约束
1). 非空约束只能定义在列级.

2). 不指定约束名

create table emp2 (name varchar2(30) not null, age number(3));

3). 指定约束名

create table emp3(name varchar2(30) constraint name_not_null not null, age number(3));

58. 唯一约束(但是可以插入多个空值)
1). 行级定义

①. 不指定约束名

create table emp2 (name varchar2(30) unique, age number(3));

②. 指定约束名

create table emp3 (name varchar2(30) constraint name_uq unique, age number(3));

2). 表级定义: 必须指定约束名
①. 指定约束名

create table emp3 (name varchar2(30), age number(3),constraint name_uq unique(name));

  


59. 外键约束
1). 行级定义

①. 不指定约束名

create table emp2(
       emp_id number(6), 
       name varchar2(25), 
       dept_id number(4) references dept2(dept_id))

②. 指定约束名

create table emp3(
       emp_id number(6), 
       name varchar2(25), 
       dept_id number(4) constraint dept_fk3 references dept2(dept_id))

2). 表级定义: 必须指定约束名


①. 指定约束名

create table emp4(
       emp_id number(6), 
       name varchar2(25), 
       dept_id number(4),
       constraint dept_fk2 foreign key(dept_id) references dept2(dept_id))

60. 约束需要注意的地方
1). ** 非空约束只能定义在列级


2). ** 唯一约束的列值可以为空


3). ** 外键引用的列起码要有一个唯一约束

61. 建立外键约束时的级联删除问题:
1). 级联删除:

create table emp2(
       id number(3) primary key, 
       name varchar2(25) unique, 
       dept_id references dept2(dept_id) on delete cascade)

2).级联置空

create table emp3(
       id number(3) primary key, 
       name varchar2(25) unique, 
       dept_id references dept2(dept_id) on delete set null)
原文地址:https://www.cnblogs.com/nbkyzms/p/5031434.html