约束

主键约束

创建主键约束(一)

create table person(
    pid number(10) primary key,
    pname varchar2(10),
    gender number(1) default 1,
    birthday date
);

创建主键约束(二)

create table person(
    pid number(10),
    pname varchar2(10),
    gender number(1) default 1,
    birthday date,
    constraint person_pk_pid primary key(pid)
);

主键约束的唯一性和非空性

非空约束

create table person(
    pid number(10) not null,
    pname varchar2(10) not null,
    gender number(1) default 1,
    birthday date
);

违反非空约束

唯一约束

创建唯一约束(一)

create table person(
    pid number(10),
    pname varchar2(10) unique,
    gender number(1),
    birthday date
);

创建唯一约束(二)

create table person(
    pid number(10),
    pname varchar2(10),
    gender number(1),
    birthday date,
    constraint person_pname_uk unique(pname)
);

违法唯一性约束

外键约束

创建外键约束

--创建主表
create table orders(
    order_id number(10),
    total_price number(10),
    order_time date,
    constraint orders_order_id_pk primary key(order_id)
);
--创建子表
create table order_detail(
    detail_id number(10),
    order_id number(10),
    item_name varchar2(10),
    quantity number(10),
    constraint order_detail_detail_id_pk primary key(detail_id),
    constraint order_detail_order_id_fk foreign key(order_id) references orders(order_id)
);

违反完整性

删除主表

1. 先删除子表,在删除主表

2. 在删除主表时,加上级联删除外键,不建议使用

drop table orders cascade constraint;

删除主表数据

1. 先删除子表数据,在删除主表数据

2. 先将子表相关列设置为null,在删除主表数据

3. 在创建表外键的时候,规定级联删除

--创建主表
create table orders(
    order_id number(10),
    total_price number(10,2),
    order_time date,
    constraint orders_order_id_pk primary key(order_id)
);
--创建子表
--删除主表数据时,同时删除子表相关数据
create table order_detail(
    detail_id number(10),
    order_id number(10),
    item_name varchar2(10),
    quantity number(10),
    constraint order_detail_detail_id_pk primary key(detail_id),
    constraint order_detail_order_id_fk foreign key(order_id) references orders(order_id) on delete cascade
);
--创建子表
--删除主表数据时,同事将子表相关数据列置为null
create table order_detail(
    detail_id number(10),
    order_id number(10),
    item_name varchar2(10),
    quantity number(10),
    constraint order_detail_detail_id_pk primary key(detail_id),
    constraint order_detail_order_id_fk foreign key(order_id) references orders(order_id) on delete set null
);

 

posted @ 2018-07-24 17:51  风雪夜_归人  阅读(148)  评论(0)    收藏  举报