參考:
主鍵用法&意義
主鍵,是表中一列或者多列的組合,主鍵約束(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)
)
語句執行後,會將name和deptid字段組合成為表t_emp2的多字段組合主鍵。
主外鍵鍵用法&意義
外部關鍵字
在以後我們統一將外部關鍵字叫做外來鍵,外來鍵就是另一張表中的主鍵。
問:外來鍵有啥用啊?
答:外來鍵的主要作用就是保持資料的一致性,完整性。
再問:怎麼保證的呢?
答:看圖。
如圖有兩張表,classid
是t_student
的外來鍵,是t_class
表的主鍵, 如果我們要刪除t_class
表中classid
為1
的字段,程式是會報錯的,因為t_student
表中有資料和classid
為1
的字段關聯了,是不能刪除的,這樣子就保證了資料的一致性和完整性。
繼續問:那怎麼才能刪除呢?
接著答:需要先刪除t__student
表中classid
為1的兩個字段。
如何給表新增外部關鍵字
在mysql中給表中字段新增外來鍵約束的語法規則如下:
constraint 外鍵名 foreign key 欄位名 references 主表名(主鍵名)
舉個例子:現在有兩張表,t_emp
、t_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主鍵 外來鍵
主鍵是能確定一條記錄的唯一標識,主鍵字段必須唯一,必須非空,乙個表中只能有乙個主鍵,主鍵可以包含乙個或多個字段。打個比方,一條記錄包括身份正號,姓名,年齡,學校,國籍,性別等。身份證號是唯一能確定你這個人的,其他都可能有重複,所以,身份證號是主鍵。外來鍵表示了兩個關係之間的相關聯絡。以另乙個關係的外...