主键约束
创建主键约束(一)
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 );