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

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