MySQL主键约束-PRIMARY KEY

主键即主键约束。分为单字段主键和多字段组合主键。
使用主键时,应注意:
      1.每个表只能有一个主键
      2.主键不能为NULL,不允许重复,必须唯一标识一条记录
      3.联合主键需唯一且最小,即去掉联合主键中的任一字段,剩余字段构成的主键值不唯一
接下来,介绍设置主键约束和删除主键约束的方法

建表时设置主键约束

1.单字段主键

(1) 在定义字段时,指定主键

# 语法1:
CREATE TABLE <数据表>
(
	<字段名> <数据类型> PRIMARY KEY  -- 在定义字段时指定主键
);
# 示例1:
# 在数据库中创建数据表table_example1,主键为id
CREATE TABLE table_example1
(
	id INT(10) PRIMARY KEY,
	name VARCHAR(20)
);

表结构如下图所示

desc结果

(2) 在定义完字段后指定主键

# 语法2:
CREATE TABLE <数据表>
(
	<字段名> <数据类型> ,
	PRIMARY KEY(<字段名>)  -- 在定义完字段后指定主键
);
# 示例2:
# 在数据库中创建数据表table_example2,主键为id
CREATE TABLE table_example2
(
	id INT(10),
	name VARCHAR(20),
	PRIMARY KEY(id),
);

表结构如下图所示

desc结果

说明:语法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的表结构如下图所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值