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