外鍵約束


外鍵外鍵約束是指表中某個字段的值依賴於另一張表中某個字段的值,而被依賴的字段必須且有主鍵約束或者唯一約束

被依賴的表我們通常稱之為父表或者主表,設置外鍵約束的表稱為字表從表

外鍵約束:(FOREIGN KEY,縮寫FK)是用來實現數據庫表的參照完整性的

外鍵約束可以使兩張表緊密的結合起來,特別是針對修改或者刪除的級聯操作時,會保證數據的完整性

外鍵約束只有表級約束,沒有列級約束,當然也可以在創建表以后也能添加外鍵約束

如:

 

 代碼:

-- 先創建父表:班級表
create table t_class(
con int(4) primary key auto_increment,
cname varchar(10) not null,
room char(4)
);

-- 添加班級數據:
insert into t_class values (null,'Java001','r201');
insert into t_class values (null,'Java002','r203');
insert into t_class values (null,'大數據001','r301');

-- 查詢班級表
select * from t_class;

運行結果:

 

 

-- 創建子表,學生表    (注意添加外鍵約束)
create table t_student(
sno int(6) primary key auto_increment,
sname varchar(5) not null,
classno int(4),   -- 取值參考t_class表中的cno字段,不要求字段名字完全重復,但是類型長度定義,盡量相同

constraint fk_stu_classno foreign key (classno) references t_class(con)           -- 外鍵約束
);

-- 添加學生信息:
insert into t_student values (null,'張三',1),(null,'李四',1),(null,'王五',2),(null,'趙六',2);

-- 查看學生表
select * from t_student;

 運行結果:

 

 

也可以通過創建表后,添加外鍵約束,代碼:

create table t_student(
sno int(6) primary key auto_increment,
sname varchar(5) not null,
classno int(4)
);

alter table t_student add constraint fk_stu_classno foreign key (classno) references t_student(con);

 

 

設計外鍵時,mysql提供了4種外鍵關聯策略

 

外鍵策略: 1、RESTRICT   限制(默認策略)

                2、CASCADE   級聯

                3、NO ACTION   什么也不做

                4、SET NULL   置為NULL

應用場合:1.朋友圈刪除,點贊,留言刪除    --》級聯

               2.解散班級,對應的學生  置為班級為null就可以了  --》set null

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM