数据库中的约束条件,在数据库中使用约束条件可以定义规则使得数据能够朝我们希望的方向发展,也就是可以保证数据的完整性。在数据库中有五大约束条件,分别为主键约束,非空约束,唯一约束,检查性约束,外键约束。
1)主键约束(primary key)
主键约束通常都是在id字段上使用,它有两个特点,不能为空,不能重复。
例如:create table p(
uid number(20) primary key,
uname varchar2(6)
//主键也可以自己指定
constraint primary_key_name primary key (uid)
);
2)非空约束(not null)
非空约束,就是保证一个字段不能为空,不能有空值存在,如果插入空值,则会报错。
3)唯一约束(unique)
如果想让某个字段唯一,则为它加上unique唯一约束,当插入了相同的值时会报错。
例如:create table p3(
uname varchar2(6) unique,
uid number(10) primary key
//唯一约束也可以自定义
constraint unique_name unique(字段)
);
4)检查性约束(check (字段名 in (一个合法范围)))
使用检查性约束可以用来约束某个字段值的合法范围。例如用1表示男,2表示女。
create table p4(
gender number(1) check (gender in(1,2)),
//检查约束也可以自己指定
constraint check_name check(字段 in(1,2))
);
5)外键约束
外键约束用于两张表之间,用来保证关联数据的完整性。例如订单和订单明细表,一对多关系。
创建订单表:
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),//在order表中是主键
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) referencs orders(order_id)|on delete cascade|on update cascade
);
外键关联时要注意的是:1.外键一定是主表的主键,2.删除表时要先删子表在删主表。
可以强制删除,而不用管约束条件:drop table orders cascade constraint;
可以使用级联更新和级联删除,这样在主表中进行更新或者删除操作,子表中的数据也会保证同步更新或者删除。on delete cascade|on update cascade。