1 约束条件 constraint
1.1 主键(Primary key,简称 PK)
1) 主键约束(primary key) = 不能重复 (uk)+ 不能为null(nn)
2) 主键约束可以用两种方式定义:列级约束和表级约束
注意:建议约束命名规则: 表名_列名_约束条件类型
因为当插入重复编码时,将提示出错的约束条件名称
1.1.1 列级约束
例子:主键约束
create table dept_xxx1(
deptno number(2) dept_xxx2_deptno_pk primary key,
dname varchar2(20),
location varchar2(40)
);
1.1.2 表级约束( 可以定义联合主键)
例子:主键约束
create table dept_xxx2(
deptno number(2),
dname varchar2(20),
location varchar2(40),
constraint dept_xxx2_deptno_pk primary key(deptno)
);
例子:联合主键
create table test(
c1 number(4),
c2 number(2),
constraint test_c1_c2_pk primary key(c1,c2)
);
1.2 非空约束(not null,简称NN)
注意:非空约束只能定义在列级
例子:
create table test(
id number(4) not null
);
例子:给非空约束命名
create table test(
id number(4) constraint test_in_nn not null;
);
1.3唯一约束(Unique,简称UK)
unique特点:
唯一,可以为空,一张表可以多个UK约束
1.3.1 列级约束
create table test(
id number(4) unique;
);
1.3.2 表级约束
create table test(
id number(4),
constraint test_id_uk unique(id)
);
1.4检查约束(Check,简称CK)
检查约束
check(条件)
例子:
create table text(
age number(2) check(age>10),
gender char(1) check(gander in('F','M'))
);
因为约束条件建立在列级时可读性不好,而且不方便定义约束条件名字,一般建议定义在表级.
例子:定义在表级
create table text(
age number(2),
gander char(c),
constraint text_age_ck
check(age > 10),
constraint text_gander_ck
check(gander in('F','M','f','m'))
);
1.5 外键(Foreign key,简称FK)
例子:
create table test(
id number(3),
constraint test_id_fk
foreign key (id) references test2(id)
);
test2代表另一张表
1.6 on delete set null
作用:一旦主表数据删除,从表关联的数据设置为NULL
create table test(
id number(3),
constraint test_id_fk
foreign key (id) references test2(id) on delete set null
);
1.7 on delete cascade
作用:一旦主表数据删除,从表关联的数据也删除
create table test(
id number(3),
constraint test_id_fk
foreign key (id) references test2(id) on delete cascade
);