约束

主键约束

创建主键约束(一)

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

 

转载于:https://www.cnblogs.com/zsh-wj/p/9361553.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值