數據庫中的約束條件,在數據庫中使用約束條件可以定義規則使得數據能夠朝我們希望的方向發展,也就是可以保證數據的完整性。在數據庫中有五大約束條件,分別為主鍵約束,非空約束,唯一約束,檢查性約束,外鍵約束。
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。