外來鍵約束(重要)

2022-09-19 11:27:07 字數 1227 閱讀 4448

7.6、外來鍵約束(foreign key,簡稱fk) (重要)

外來鍵約束涉及到:

外來鍵約束

外來鍵字段

外鍵值業務背景:請設計資料庫表,來描述「班級和學生」的資訊?

第一種方案:班級和學生儲存在一張表中

上述方案資料冗餘,空間浪費

第二種方案:班級一張表,學生一張表

沒有給cno班級編號新增約束,可能會導致資料無效,可能出現乙個102,但是102不存在

所以為了保證cno欄位中的值是100和101,需要誒cno欄位新增外來鍵約束。

那麼:cno欄位就是外來鍵字段,cno欄位中的每乙個值都是外鍵值

注意: 

t_class是父表

t_student是子表

刪除表的順序?

先刪子,再刪父

建立表的順序?

先創父,後創子

刪除資料的順序?

先刪子,後刪父

插入資料的順序?

先創父,後創子  

drop  table if exists t_student;

drop table if exists t_class;

create table t_class(

classno int primary key,

classname varchar(255)

create table t_student(

no int primary key auto_increment,

name varchar(255),

cno int,

foreign key(cno) references t_class(classno) //引用外來鍵約束

insert into t_class(classno,classname) values(100,'...');

insert into t_class(classno,classname) values(101,'...');

思考:子表中的外來鍵引用父表中的某個字段,被引用的這個字段必須是主鍵嗎?

不一定是主鍵,但至少具有unique約束

思考:外來鍵可以為null嗎?

外鍵值可以為null

mysql外來鍵和外來鍵約束

1.mysql中 鍵 和 索引 的定義相同,所以外來鍵和主鍵一樣也是索引的一種。不同的是mysql會自動為所有表的主鍵進行索引,但是外來鍵字段必須由使用者進行明確的索引。用於外來鍵關係的字段必須在所有的參照表中進行明確地索引 2.如果表a的主關鍵字是表b中的字段,則該字段稱為表b的外來鍵,表a稱為主...

mysql 外來鍵和外來鍵約束

1.外來鍵 如果公共關鍵字在乙個關係中是主關鍵字,那麼這個公共關鍵字被稱為另乙個關係的外來鍵。就是a表的主鍵,被用到了b表中,此時它就成了外來鍵 2.外來鍵約束 如果想要插入或者更新外來鍵的值,資料庫會和引用表中字段的資料進行驗證,如果插入或更改的值不在被引用的表中,則插入失敗 外來鍵的作用就是保證...

外來鍵約束 外來鍵級聯操作

建立db2資料庫 create database db2 使用db2資料庫 use db2 外來鍵約束 標準語法 constraint 外鍵名 foreign key 本表外來鍵列名 references 主表名 主表主鍵列名 建表時新增外來鍵約束 建立user使用者表 create table u...