MySQL 之主鍵
- 2020 年 1 月 1 日
- 筆記
本文標識 : MQ0021
本文編輯 : 長安月下賞美人兒
編程工具 : MySQL、DBeaver
閱讀時長 : 4分鐘
前言
小編在查詢相關的學習資料的同時,偶爾會遇到關於主鍵的信息,也是一直沒有很清晰的認知,所以,這篇學習筆記,主要是和大家一起分享有關主鍵的知識。
什麼是主鍵
- 含義:表中經常有一個列或多列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列稱為表的主鍵。
- 定義:PRIMARY KEY
- 注意:主鍵之於數據表相當於口紅之於女人,可以不用,但最好還是有
主鍵選擇的遵循原則
- 任何兩行都不具有相同的主鍵值
- 每行必須具有一個主鍵值,且不允許設置為NULL
- 主鍵應當是對用戶沒有意義的
- 永遠不要更新主鍵,主鍵除了唯一標識一行之外再無其他意義
- 主鍵不應包含動態變化的數據,如時間戳、創建/修改時間列等
- 主鍵應當由計算機自動生成
主鍵的作用
- 保證實體的完整性
- 加快數據庫的操作速度
- 在表中添加新記錄時,DBMS會自動檢查新記錄的主鍵值,不允許該值與其他記錄的主鍵值重複
- DBMS自動按主鍵值的順序顯示錶中的記錄
- 如果沒有定義主鍵,則按輸入記錄的順序顯示錶中的記錄
主鍵的選擇
- 編號為主鍵 方法:選擇唯一字段「編號」作為主鍵設計 場景:多用於小型項目 缺點:若修改編號,後果嚴重;若允許編號重複,則徹底懵逼
- 自動編號為主鍵 方法:新建一個 ID 字段,自動增長 優點:便於檢索傳遞、空間小、無主鍵重複問題 缺點:插入指定 ID 記錄會麻煩、與非數字型主鍵系統對接麻煩
- Max加一 方法:無自動增長的數字型,採用 Insert時,讀取 Max 值後加一 優點:避免自動編號的問題 缺點:記錄多會嚴重影響效率、會出現相同值的情況
設置主鍵的方法
在創建數據表的同時決定是否有主鍵
#帶主鍵 CREATE TABLE test1( id INT NOT NULL PRIMARY KEY, name CHAR(20) ); #帶複合主鍵 CREATE TABLE test2( id INT NOT NULL, name CHAR(20), PRIMARY KEY(id,name) ); #主鍵自增 CREATE TABLE test3( id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(20), time TIMESTAMP DEFAULT CURRENT_TIMESTAM );
在創建數據表完成後再決定主鍵
CREATE TABLE test4( id INT NOT NULL, name VARCHAR(20)NOT NULL, time TIMESTAMP DEFAULT CURRENT_TIMESTAM ); ALTER TABLE test4 ADD PRIMARY KEY(id);


