SQL主鍵設置

-- 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章