MySQL數據庫如何給表設置約束詳解
一、PK(主鍵約束)
1、什麼是主鍵?
- 在瞭解主鍵之前,先瞭解一下什麼是關鍵字
- 關鍵字:在表中具有唯一性的字段,比如一個人的身份證號,學號。一個表中可以有多個關鍵字。
- 主鍵也叫主關鍵字,就是由一個或多個關鍵字組成的,並且可以通過主鍵獲得整個表的信息。比如訂單表,通過訂單編號可以獲取到訂單中的姓名,商品,價格等信息。
註意:關鍵字不一定是主鍵,主鍵一定是關鍵字
特點:主鍵不能為空,具有唯一性不能重復。一個表要麼隻有一個主鍵,要麼沒有主鍵,不可以有多個主鍵。
2、怎麼設置主鍵?
方法一:在創建表時設置主鍵
-- 建立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;
二、FK(外鍵約束)
1、什麼是外鍵
- 外鍵又叫外關鍵字,代表兩個表直接的聯系。一張表的外鍵一定是另一張表的主鍵,以另一個關系的外鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。
- 比如訂單表中包含瞭商品ID,用戶ID兩個外鍵。其中商品ID是商品信息表的主鍵,用戶ID是用戶表的主鍵。
註意:一個表中的外鍵可以有多個,也可以沒有。
2、怎麼設置外鍵
方法一:創建表時設置外鍵約束
在前面設置主鍵的基礎上來舉例,前面創建瞭一個用戶表,那麼現在創建一個訂單表。
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)
註意:建立瞭主外鍵關系後,主表中的數據不能隨意刪除。比如訂單中有一條數據包含瞭某個用戶,那麼用戶表中就不能把該用戶的信息刪除,否則會報錯。
三、unique(唯一約束)
1、什麼是唯一約束?
某個字段如果設置瞭唯一約束,那麼該字段要麼不寫,要寫就不能重復。
2、如何設置唯一約束
還是創建一個用戶表,這次表中多瞭郵箱字段。設置郵箱不能重復
CREATE TABLE User( User_id int NOT NULL, User_name VARCHAR(20), User_pwd VARCHAR(18), User_Email VARCHAR(40) UNIQUE )
四、not null(非空)
意思就是這個字段不能為空
接著上面唯一約束來寫,這裡規定郵箱不僅不能重復而且不能為空
CREATE TABLE User( User_id int NOT NULL, User_name VARCHAR(20), User_pwd VARCHAR(18), User_Email VARCHAR(40) UNIQUE not null )
五、default(默認值)
意思就是這個字段如果你不寫,那麼會默認給你一個值
繼續上面的User表來寫,在這裡添加一個性別字段,如果你不寫性別那麼默認為男
CREATE TABLE User( User_id int NOT NULL, User_name VARCHAR(20), User_pwd VARCHAR(18), User_gender enum('男','女') default '男' )
六、auto_increment(自增)
自增就是自動遞增,也就是說如果你在這個字段沒有填寫數據,系統會自動根據上一條數據加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數據庫如何給表設置約束詳解的文章就介紹到這瞭,更多相關MySQL 設置約束內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!