只是小人物

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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
);

 

 

posted on 2012-05-16 01:04  只是小人物  阅读(197)  评论(0编辑  收藏  举报