如果公共關鍵字在乙個關係中是主關鍵字,那麼這個公共關鍵字被稱為另乙個關係的外來鍵。
由此可見,外來鍵表示了兩個關係之間的相關聯絡。以另乙個關係的外來鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。外來鍵又稱作外關鍵字。
表間關係有一對一,一對多和多對多。
首先我們舉個簡單的栗子
學生表,老師表,班級表
乙個學生屬於乙個班級,乙個班裡有多個學生。乙個學生可以被多個老師授課,乙個老師也可以教多個學生,因此是多對多的關係。
建表如下:
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.外來鍵關係的兩個表的列...