文章目录
建表时设置主键约束1.单字段主键2.联合主键 修改表属性时添加主键约束删除主键约束主键即主键约束。分为单字段主键和多字段组合主键。
使用主键时,应注意:
1.每个表只能有一个主键
2.主键不能为NULL,不允许重复,必须唯一标识一条记录
3.联合主键需唯一且最小,即去掉联合主键中的任一字段,剩余字段构成的主键值不唯一
接下来,介绍设置主键约束和删除主键约束的方法
建表时设置主键约束
1.单字段主键
(1) 在定义字段时,指定主键
# 语法1:CREATE TABLE <数据表>(<字段名> <数据类型> PRIMARY KEY -- 在定义字段时指定主键);
# 示例1:# 在数据库中创建数据表table_example1,主键为idCREATE TABLE table_example1(id INT(10) PRIMARY KEY,name VARCHAR(20));
表结构如下图所示
(2) 在定义完字段后指定主键
# 语法2:CREATE TABLE <数据表>(<字段名> <数据类型> ,PRIMARY KEY(<字段名>) -- 在定义完字段后指定主键);
# 示例2:# 在数据库中创建数据表table_example2,主键为idCREATE TABLE table_example2(id INT(10),name VARCHAR(20),PRIMARY KEY(id),);
表结构如下图所示
说明:语法1与语法2定义的表结构一样,且MySQL存储的建表语句一样,均为语法2所示
2.联合主键
联合主键表示该数据的主键有多个字段组成,一般在单字段主键无法满足需求时使用。
注意:联合主键只能在定义完所有的字段后指定,不能直接在字段明后指定主键(也无法指定)
# 语法3:CREATE TABLE <数据表>(<字段1> <数据类型>,<字段2> <数据类型>,PRIMARY KEY(<字段1>,<字段2>));
# 示例3:# 创建数据表table_example3,主键约束为id,name的联合主键CREATE TABLE table_example3(id INT(10),name VARCHAR(20),PRIMARY KEY(id,name));
table_example3表结构如下图所示:
修改表属性时添加主键约束
如在建表时未添加主键约束,可通过修改表属性 添加主键约束
此时,待设为主键的字段不允许有NULL、重复值
# 语法:ALTER TABLE <数据表> ADD PRIMARY KEY(<字段名>); -- 修改表属性时添加主键约束
# 示例:# 将字段id设为无主键表的主键约束# 1.新建无主键约束的数据表CREATE TABLE table_example4(id INT(10),name VARCHAR(20));
table_example4表结构如下图:
# 2.修改表table_example4,将id设为主键ALTER TABLE table_example4 ADD PRIMARY KEY(id);
修改主键约束后table_example4表结构如下:
注意id字段对应的Key列值的变化,有空白变为"PRI",即id被指定为主键
删除主键约束
# 语法:ALTER TABLE <数据表> DROP PRIMARY KEY(<字段名>);ALTER TABLE <数据表> DROP PRIMARY KEY; -- 一张表中只有一个主键,所以删除主键约束可以不用指定主键名,两行代码效果一样
# 示例:# 删除数据表table_example4中的主键约束ALTER TABLE table_example4 DROP PRIMARY KEY;
删除主键约束后table_example4的表结构如下图所示: