資料庫四種約束條件例項講解

2021-12-30 09:44:52 字數 1912 閱讀 3283

create table person(

id number,

name nvarchar2(30) not null

);insert into person(id) values(1); -- error

主鍵不能為空,且不能重複

create table person(

id number primary key,

name nvarchar2(30) not null

);create table person (

pid number,

name nvarchar2(30)

);create table book(

bid number,

name nvarchar2(30),

pid number

)-- 為 person、book 分別新增 「主鍵」

alter table person add constraint person_pid_pk primary key(pid);

alter table book add constraint book_bid_pk primary key(bid);

如果存在子表引用父表主鍵,則無法刪除父表記錄

-- 為 book 新增外來鍵 = person.pid

alter table book add constraint book_bid_fk foreign key(pid) references person(pid);

-- 在 book 中插入資料,前提:外來鍵 pid 對應的主表中必須有值

insert into person(pid, name) values(1, 'a'); -- 有值

insert into book(bid, name, pid) values(1, 'a', 1);

-- 刪除 book 的父紀錄

delete from person where pid = 1; -- error

刪除存在引用的父表記錄,而且同時把所有有引用的子表記錄也刪除

-- 刪除 person 時,book 對應pid資料情況,反之則不會

delete from person where pid = 1; -- person,book中 pid=1的,全部清空

delete from book where pid = 1; -- person 中pid=1的,依然存在

可刪除存在引用的父表記錄,同時將子表中引用該父表主鍵的外來鍵字段自動設為null,但該字段應允許空值

alter table book add constraint book_pid_fk foreign key(pid) references person(pid) on delete set null;create table person(

id number primary key,

name nvarchar2(30) not null,

tel varchar2(50) unique

);create table person(

id number primary key,

name nvarchar2(30) not null,

tel varchar2(50) unique

age number check(age between 0 and 150)

);

01 2資料庫約束條件

約束的分類 1 主鍵 pk primary key 2 唯一約束 uk unique key 3 外來鍵約束 fk foreign key 4 非空約束 nn not null 5 檢查約束 ck check 6 預設值約束 default ps 1 pk uk nn 唯一且非空 2 實現方法 co...

資料庫之約束條件

約束條件 python primary key pk 標識該字段為該錶的主鍵,可以唯一的標識記錄 foreign key fk 標識該字段為該錶的外來鍵 not null 標識該欄位不能為空 unique key uk 標識該字段的值是唯一的 auto increment 標識該字段的值自動增長 整...

資料庫表的約束條件

主鍵約束可以用兩種方式定義 列級主鍵約束和表級主鍵約束 列級主鍵約束演示 create table dept htlwk deptno varchar 20 primary key,列級約束條件 dname varchar 20 location varchar 40 表級主鍵約束演示 create...