MySql 主鍵和外來鍵怎麼使用?

2021-10-10 08:36:20 字數 2640 閱讀 4529

參考:

主鍵用法&意義

主鍵,是表中一列或者多列的組合,主鍵約束(primary key constraint)要求主鍵列的資料唯一,並且不允許為空,主鍵能夠唯一的標識表中的每一條記錄,可以結合外來鍵來定義與不同資料表之間的關係。

怎麼理解主鍵呢?我們知道資料庫中的表可以存放很多資料,如果把表中的每乙個資料比作乙個人的話,那麼表的主鍵就可以看做是人的身份證。

(1) 在定義列的同時指定主鍵:

create table if not exist usr_info(

mid int primary key,

uname varchar(40)

);

(2) 在定義完所有列之後指定主鍵。

create table if not exists user_info(

mid int,

uname varchar(20),

primary key(mid)

);

多欄位聯合主鍵

在開發中還有一種情況很常見,就是將幾個字段聯合在一起作為主鍵,那這個在**中怎麼實現呢?

舉個例子,我們將員工的名字和部門id聯合起來作為主鍵:

下面展示一些

create table t_emp2

( name varchar(32),

deptid int,

salary float,

primary key(name,deptid)

)

語句執行後,會將namedeptid字段組合成為表t_emp2的多字段組合主鍵。

主外鍵鍵用法&意義

外部關鍵字

在以後我們統一將外部關鍵字叫做外來鍵,外來鍵就是另一張表中的主鍵

問:外來鍵有啥用啊?

答:外來鍵的主要作用就是保持資料的一致性,完整性。

再問:怎麼保證的呢?

答:看圖。

如圖有兩張表,classidt_student的外來鍵,是t_class表的主鍵, 如果我們要刪除t_class表中classid1的字段,程式是會報錯的,因為t_student表中有資料和classid1的字段關聯了,是不能刪除的,這樣子就保證了資料的一致性和完整性

繼續問:那怎麼才能刪除呢?

接著答:需要先刪除t__student表中classid為1的兩個字段。

如何給表新增外部關鍵字

在mysql中給表中字段新增外來鍵約束的語法規則如下:

constraint 外鍵名 foreign key 欄位名 references 主表名(主鍵名)

舉個例子:現在有兩張表,t_empt_dept如下。

t_dept表

欄位名稱	    資料型別	    備註

deptld int 部門編號

name varchar(22) 部門名稱

location varchar(50) 部門位置

t_emp表

欄位名稱	        資料型別	        備註

id int 員工編號

name varchar(22) 員工名稱

location varchar(50) 部門id(外來鍵型別必須和對應主鍵型別一致)

我們來建立兩張表,並給員工表(t_emp)新增外來鍵:

create table t_dept

( deptid int primary key,

name varchar(22),

location varchar(50)

);create table t_emp

( id int primary key,

name varchar(22),

deptid int,

constraint fk_emp_dept1 foreign key(deptid) references t_dept(deptid)

);

實際操作如圖:

mysql主鍵和外來鍵

主鍵是本張表的主鍵,是唯一且非空的,而外鍵是另一張表中與這張表的某個欄位的型別,欄位名相同的字段,一般是用作關聯兩張或兩張以上的資料表時用的。以下面三張表為例 有三張表,一張表是讀者資訊,有乙個屬性為 readno 一張表是圖書的資訊,有乙個屬性是 bookno 一張表是借閱關係,有兩個屬性分別以讀...

mysql 主鍵 外來鍵

1 候選鍵 關係中的乙個屬性組,其值能唯一標識乙個元組,若從該屬性組中去掉任何乙個屬性,它就不具有這一性質了,這樣的屬性組稱作候選碼。比如人的自然屬性 身高,體重,年齡,指紋樣式.2 主鍵 當有多個候選碼時,可以選定乙個作為主碼,選定的候選碼稱主鍵。主鍵是能確定一條記錄的唯一標識 比如上面例子中的指...

mysql主鍵 外來鍵

主鍵是能確定一條記錄的唯一標識,主鍵字段必須唯一,必須非空,乙個表中只能有乙個主鍵,主鍵可以包含乙個或多個字段。打個比方,一條記錄包括身份正號,姓名,年齡,學校,國籍,性別等。身份證號是唯一能確定你這個人的,其他都可能有重複,所以,身份證號是主鍵。外來鍵表示了兩個關係之間的相關聯絡。以另乙個關係的外...