MySQL 外來鍵及外來鍵的使用

2021-09-23 17:23:07 字數 2450 閱讀 1888

如果公共關鍵字在乙個關係中是主關鍵字,那麼這個公共關鍵字被稱為另乙個關係的外來鍵。

由此可見,外來鍵表示了兩個關係之間的相關聯絡。以另乙個關係的外來鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。外來鍵又稱作外關鍵字。

表間關係有一對一,一對多和多對多。

首先我們舉個簡單的栗子

學生表,老師表,班級表

乙個學生屬於乙個班級,乙個班裡有多個學生。乙個學生可以被多個老師授課,乙個老師也可以教多個學生,因此是多對多的關係。

建表如下:

create table teachers (

id int primary key auto_increment,

name varchar(20) not null

);create table classes (

id int primary key auto_increment,

name varchar(20) not null

);create table students (

id int primary key auto_increment,

name varchar(20) not null,

class_id int not null,

foreign key (class_id) references classes(id)

);

插入資料:

insert into classes (name) values ('1班'), (2班');

insert into students (name, class_id) values

('小a', 2),

('小b', 1);

delete from classes where name = '1班'; //會失敗,因為有外來鍵的約束

delete from students where name = '小b';//先刪除小b同學

delete from classes where name = '1班'; //此時刪除1班會成功,因為沒有外來鍵的約束了

根據上圖建立商品表

商品表

create table goods (

id int unsigned primary key auto_increment comment '商品編號',

name varchar(30) not null comment '商品名稱',

price int not null comment '單價,單位是分',

category varchar(20) not null default '' comment '商品類別',

provider varchar(50) not null default '' comment '**商'

) comment '商品資訊';

客戶表

create table customers (

id int unsigned primary key auto_increment comment '客戶編號',

name varchar(20) not null comment '姓名',

address varchar(100) comment '位址',

email varchar(100) comment '郵箱',

gender tinyint not null comment '性別:0 保密 1 女 2 男',

idcard char(18) not null comment '身份證號碼,實名制'

) comment '客戶資訊';

訂單表

create table purchases (

id int unsigned primary key auto_increment comment '訂單號',

customer_id int unsigned not null comment '客戶編號',

goods_id int unsigned not null comment '商品編號',

num int not null default 0 comment '購買數量',

foreign key (customer_id) references customers(id),//設定外來鍵

foreign key (goods_id) references goods(id)//設定外來鍵

) comment '訂單資訊';

mysql 外來鍵說明 MySQL外來鍵使用及說明詳解

一 外來鍵約束 mysql通過外來鍵約束來保證表與表之間的資料的完整性和準確性。外來鍵的使用條件 1.兩個表必須是innodb表,myisam表暫時不支援外來鍵 據說以後的版本有可能支援,但至少目前不支援 2.外來鍵列必須建立了索引,mysql 4.1.2以後的版本在建立外來鍵時會自動建立索引,但如...

mysql外來鍵教程 MySQL外來鍵使用詳解

最近有開始做乙個實驗室管理系統,因為分了幾個表進行儲存 所以要維護表間的關聯 研究了一下mysql的外來鍵 1 只有innodb型別的表才可以使用外來鍵,mysql預設是myisam,這種型別不支援外來鍵約束 2 外來鍵的好處 可以使得兩張表關聯,保證資料的一致性和實現一些級聯操作 3 外來鍵的作用...

mysql是否推薦使用外來鍵 MySQL 外來鍵使用

mysql 外來鍵使用 外來鍵的使用條件 1.兩個表必須是innodb表,myisam表暫時不支援外來鍵 據說以後的版本有可能支援,但至少目前不支援 2.外來鍵列必須建立了索引,mysql 4.1.2以後的版本在建立外來鍵時會自動建立索引,但如果在較早的版本則需要顯示建立 3.外來鍵關係的兩個表的列...