-- SQL PRIMARY約束
-- ① SQL 在 "Persons" 表創建時在 "Id_P" 列創建 PRIMARY KEY 約束
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(25) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
-- PRIMARY KEY (Id_P)
)
DROP TABLE persons;
DESC Persons; -- 建表後查看數據結構
ALTER TABLE Persons DROP PRIMARY KEY -- MYSQL 撤銷 PRIMARY KEY 約束
DESC Persons; -- 查看撤銷後的狀態,發現字段已經無主鍵;
-- 如果在表已存在的情況下爲 "Id_P" 列創建 PRIMARY KEY 約束,請使用下面的 SQL:
-- 適用於:MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Persons ADD PRIMARY KEY (Id_P)
DESC Persons; -- 查看上一步操作是否添加了主鍵
ALTER TABLE Persons ADD PRIMARY KEY (LastName) -- 再次添加新的主鍵
/* ALTER TABLE Persons ADD PRIMARY KEY (LastName)
> 1068 - Multiple primary key defined
> 時間: 0s */
DESC Persons; -- 驗證主鍵是否修改成功,結果發現無法單個添加2個及以上的主鍵
-- 首先預處理:撤銷所有主鍵:
ALTER TABLE Persons DROP PRIMARY KEY
-- 爲多個列定義 PRIMARY KEY 約束
ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
-- 設置雙主鍵:
CREATE TABLE Persons01
(
Id_P int NOT NULL,
LastName varchar(225) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName) -- pk_PersonID 是主鍵約束的名稱
)
DESC Persons01;-- 查看數據結構
DROP TABLE Persons01;
/*
注意這個報錯,一般是和設置主鍵的字符長度有關
1071 - Specified key was too long; max key length is 1000 bytes
*/
1.1 設置單主鍵
1.2 設置雙主鍵:
參考文獻:https://www.w3school.com.cn/sql/sql_primarykey.asp