在了解主鍵之前,先了解什麼是關鍵字
關鍵字:在表中具有唯一性的字段,例如一個人的身分證號,學號。一個表格中可以有多個關鍵字。
主鍵是一個或多個關鍵字的組合,透過主鍵可以取得整張表的訊息,有時也被稱為主關鍵字。以訂單表為例,可以透過訂單編號取得訂單的收貨人姓名、商品資訊及價格等相關資訊。
注意:關鍵字不一定是主鍵,主鍵一定是關鍵字
#特點:主鍵不能為空,具有唯一性不能重複。一個表要麼只有一個主鍵,要麼沒有主鍵,不可以有多個主鍵。
方法一:建立表格時設定主鍵
-- 建立User表 CREATE TABLE User( User_id int NOT NULL, User_name VARCHAR(20), User_pwd VARCHAR(18), -- 在这里设置id为主键 PRIMARY KEY(User_id) )
CREATE TABLE Users( -- 也可以在字段中直接设置主键 User_id int NOT NULL PRIMARY KEY, User_name VARCHAR(20), User_pwd VARCHAR(18) )
以上兩種方式都可以建立主鍵,效果一樣。
方法二:建立表格時沒有設定主鍵,後續在表中設定主鍵
#先建一個沒有設定主鍵的表格
CREATE TABLE User( User_id int NOT NULL, User_name VARCHAR(20), User_pwd VARCHAR(18) )
然後再設定主鍵
原則是將PRIMARY KEY(User_id)
跟方法一中加入建立表格時的程式碼的第一個原理一樣
ALTER TABLE user ADD PRIMARY KEY(User_id)
原理是在User_id 欄位中加入PRIMARY KEY
跟方法一中的第二個原理一樣
ALTER TABLE users MODIFY User_id INT PRIMARY KEY;
外鍵又叫外關鍵字,代表兩個表直接的聯繫。一張表的外鍵一定是另一張表的主鍵,以另一個關係的外鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。
例如訂單表包含了商品ID,使用者ID兩個外鍵。其中商品ID是商品資訊表的主鍵,使用者ID是使用者表的主鍵。
注意:一個表格中的外鍵可以有多個,也可以沒有。
方法一:建立表格時設定外鍵約束
在前面設定主鍵的基礎上來舉例,前面建立了一個使用者表,那麼現在就建立一個訂單表。
CREATE TABLE dingdan( DDid INT PRIMARY KEY NOT NULL, User_id INT NOT null, DDname VARCHAR(20) NOT NULL, -- 设置约束关系,dingdan表中的User_id 与 user表中的User_id表示的是同一个数据 constraint fk FOREIGN KEY(User_id) REFERENCES user(User_id) )
方法二:建立表時沒有設定主鍵,後續在表中設定主鍵
alter table student add constraint stfk foreign key(stid) references teacher(tid)
注意:建立了主外鍵關係後,主表中的資料不能隨意刪除。如果某個使用者的資訊已包含在訂單資料中,那麼在刪除該使用者的資訊時會導致錯誤發生,因此需要保留該使用者的資訊。
某個欄位如果設定了唯一約束,那麼該欄位要不是不寫,要寫就不能重複。
或是建立一個使用者表,這次表中多了郵件信箱欄位。設定郵箱不能重複
CREATE TABLE User( User_id int NOT NULL, User_name VARCHAR(20), User_pwd VARCHAR(18), User_Email VARCHAR(40) UNIQUE )
意思就是這個欄位不能為空
接著上面唯一約束來寫,這裡規定信箱不只不能重複而且不能為空
CREATE TABLE User( User_id int NOT NULL, User_name VARCHAR(20), User_pwd VARCHAR(18), User_Email VARCHAR(40) UNIQUE not null )
意思就是這個欄位如果你不寫,那麼會預設給你一個值繼續上面的User表來寫,在這裡添加一個性別字段,如果你不寫性別那麼默認為男
CREATE TABLE User( User_id int NOT NULL, User_name VARCHAR(20), User_pwd VARCHAR(18), User_gender enum('男','女') default '男' )
#自增就是自動遞增,也就是說如果你在這個字段沒有填寫數據,系統會自動根據上一條數據加1
一般用在ID,編號
將用戶表中的ID設為自增
CREATE TABLE User( User_id int auto_increment, User_name VARCHAR(20), User_pwd VARCHAR(18), User_gender enum('男','女') default '男' )
注意:第一個資料如果不填,預設會給一個值。所以即便ID是主鍵,也可以不填資料
以上是MySQL資料庫怎麼給表格設定約束的詳細內容。更多資訊請關注PHP中文網其他相關文章!