-- 建立db2資料庫
create
database db2;
-- 使用db2資料庫
use db2;
/* 外來鍵約束
標準語法:
constraint 外鍵名 foreign key (本表外來鍵列名) references 主表名(主表主鍵列名)
*/-- 建表時新增外來鍵約束
-- 建立user使用者表
create
table
user
( id int
primary
keyauto_increment
,-- id
name varchar(20
)not
null
-- 姓名);
-- 新增使用者資料
insert
into
user
values
(null
,'張三'),
(null
,'李四');
-- 建立orderlist訂單表
create
table orderlist(
id int
primary
keyauto_increment
,-- id
number varchar(20
)not
null
,-- 訂單編號
uid int
,-- 外來鍵列
constraint ou_fk1 foreign
key(uid)
references
user
(id));
-- 新增訂單資料
insert
into orderlist values
(null
,'hm001',1
),(null
,'hm002',1
),(null
,'hm003',2
),(null
,'hm004',2
);-- 新增乙個訂單,但是沒有真實使用者。新增失敗
insert
into orderlist values
(null
,'hm005',3
);-- 刪除李四使用者。刪除失敗
delete
from
user
where name=
'李四';/*
刪除外來鍵約束
標準語法:
alter table 表名 drop foreign key 外鍵名;
*/-- 刪除外來鍵約束
alter
table orderlist drop
foreign
key ou_fk1;
/* 建表後單獨新增外來鍵約束
標準語法:
alter table 表名 add constraint 外鍵名 foreign key (本表外來鍵列名) references 主表名(主鍵列名);
*/-- 新增外來鍵約束
alter
table orderlist add
constraint ou_fk1 foreign
key(uid)
references
user
(id)
;
/*
新增外來鍵約束,同時新增級聯更新 標準語法:
alter table 表名 add constraint 外鍵名 foreign key (本表外來鍵列名) references 主表名(主鍵列名)
on update cascade;
新增外來鍵約束,同時新增級聯刪除 標準語法:
alter table 表名 add constraint 外鍵名 foreign key (本表外來鍵列名) references 主表名(主鍵列名)
on delete cascade;
新增外來鍵約束,同時新增級聯更新和級聯刪除 標準語法:
alter table 表名 add constraint 外鍵名 foreign key (本表外來鍵列名) references 主表名(主鍵列名)
on update cascade on delete cascade;
*/-- 刪除外來鍵約束
alter
table orderlist drop
foreign
key ou_fk1;
-- 新增外來鍵約束,同時新增級聯更新和級聯刪除
alter
table orderlist add
constraint ou_fk1 foreign
key(uid)
references
user
(id)
onupdate
cascade
ondelete
cascade
;-- 將李四這個使用者的id修改為3,訂單表中的uid也自動修改
update
user
set id=
3where id=2;
-- 將李四這個使用者刪除,訂單表中的該使用者所屬的訂單也自動刪除
delete
from
user
where id=
3;
DQL 外來鍵約束,級聯更新
1 create table emp 建立emp表 2 id int primary keyauto increment,3 name varchar 30 4 age int 5 dep name varchar 30 部門名稱 6 dep location varchar 30 部門位址7 8 ...
mysql外來鍵和外來鍵約束
1.mysql中 鍵 和 索引 的定義相同,所以外來鍵和主鍵一樣也是索引的一種。不同的是mysql會自動為所有表的主鍵進行索引,但是外來鍵字段必須由使用者進行明確的索引。用於外來鍵關係的字段必須在所有的參照表中進行明確地索引 2.如果表a的主關鍵字是表b中的字段,則該字段稱為表b的外來鍵,表a稱為主...
mysql 外來鍵和外來鍵約束
1.外來鍵 如果公共關鍵字在乙個關係中是主關鍵字,那麼這個公共關鍵字被稱為另乙個關係的外來鍵。就是a表的主鍵,被用到了b表中,此時它就成了外來鍵 2.外來鍵約束 如果想要插入或者更新外來鍵的值,資料庫會和引用表中字段的資料進行驗證,如果插入或更改的值不在被引用的表中,則插入失敗 外來鍵的作用就是保證...