mysql學習(5) 多表之間的關係

2021-07-25 17:52:52 字數 1772 閱讀 4164

mysql相互關聯的表之間存在一對一,一對多(多對一),多對多的關係。

1,一對一的關係

這種關係即多個表具有相同的主鍵,實際中用的並不多,因為完全可以將這種關係的合併為同一張表。

2,一對多(多對一)的關係

其中表1的主鍵是表2的外來鍵(即表1的某欄位作為主鍵,表2的相同欄位字段繫結到表1的主鍵欄位上),舉個簡單的例子:

有學生表和成績表如下:

create table stu(

stuid int,

name varchar(10) not null,

primary key(stuid)

);

create table score(

stuid int,

score int,

foreign key (stuid) references stu(stuid)

);

stu表中以stuid為主鍵。score表中同樣有stuid欄位,將兩個stuid欄位相關聯。

foreign key (stuid) references stu(stuid)  //這句話表示將當前表的stuid欄位關聯到stu表的stuid欄位,作為stu表的外來鍵
於是,兩張表就產生了關係:

(1)在建立資料時,要先在stu表中指定stuid,才能在score表中新增對應stuid的成績。反之,想要在score表中建立stuid(而stu表中沒有該stuid)的話,就會報錯。

(2)在刪除表時,要先刪除score表,再刪stu表。反之會報錯。

3,多對多的關係

這種關係在實際中也很常見,比如:乙個老師教很多學生的課,乙個學生選了很多老師的課。那麼,老師和學生之間就是多對多的關係。

多對多的關係要借助於第3張表。舉個簡單的例子:

(1)首先建立老師表,設定id為主鍵

create table teacher(

teacherid int,

name varchar(10) not null,

primary key(teacherid)

);

(2)然後建立學生表,同樣設定id為主鍵

create table stu(

stuid int,

name varchar(10) not null,

primary key(stuid)

);

(3)最後建立一張表,將前兩張表關係起來,如建立乙個課程表:

create table score(

stuid int,

teacherid int,

foreign key (stuid) references stu(stuid),

foreign key (teacherid) references teacher(teacherid)

);

將課程表的字段分別設定為教師表和學生表的外來鍵,關係如下:

這樣就可以形成多對多的關係了,使用方法同一對多。

(1)首先保證教師表和學生表中有資料,再建立課程表中的資料。

(2)刪除表時,先刪除課程表,再刪除其他表。

mysql 多表及其之間的關係

一對多關係 客戶和訂單 分類和商品 部門和員工。一對多建表原則 在多的一方建立乙個字段,字段作為外來鍵指向一方的主鍵。商品表 product 多 pid 分類表 category 一 cid 通過外來鍵約束,如下 alter table product add foreign key pid ref...

MySQL資料庫操作(四) 多表之間的關係

個人部落格 haichenyi.com。感謝關注 1 一張表可以有多個外來鍵 2 外來鍵是表的主鍵,可以是別的表,也可以是本身 少見 3 外來鍵可以為null,可以重複,但是不能不存在,必須要查的到 建立語法foreign key 本表的列名 references 關聯的表名 關聯表的主鍵 建立乙個...

學習 類之間的關係

類之間的關係 1 種類 generalization 泛化 dependency 依賴關係 association 關聯關係 aggregation 聚合關係 composition 合成關係 2 其中aggregation 聚合關係 composition 合成關係 屬於association 關...