mysql的基本约束

本文深入解析MySQL中的各种约束,包括主键、自动增长列、非空约束、唯一约束等,详细介绍了如何添加、删除这些约束,以及它们在数据库设计中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql约束

1.主键约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。

添加主键约束
方式一:创建表时,在字段描述处,声明指定字段为主键:

CREATE TABLE persons
(
id_p int PRIMARY KEY,
lastname varchar(255),
firstname varchar(255),
address varchar(255),
city varchar(255)
)

方式二:创建表时,在constraint约束区域,声明指定字段为主键:
格式: [constraint 名称] primary key (字段列表)
关键字constraint可以省略,如果需要为主键命名,constraint不能省略,主键名称一般没用。
字段列表需要使用小括号括住,如果有多字段需要使用逗号分隔。声明两个以上字段为主键,我们称为联合主键。

CREATE TABLE persons
(
firstname varchar(255),
lastname varchar(255),
address varchar(255),
city varchar(255),
CONSTRAINT pk_personID PRIMARY KEY (firstname,lastname)
)

方式三:创建表之后,通过修改表结构,声明指定字段为主键:
格式: ALTER TABLE persons ADD [CONSTRAINT 名称] PRIMARY KEY (字段列表)

CREATE TABLE persons
(
firstname varchar(255),
lastname varchar(255),
address varchar(255),
city varchar(255)
)
ALTER TABLE persons ADD PRIMARY KEY (firstname,lastname)

删除主键约束
如需撤销 PRIMARY KEY 约束,请使用下面的 SQL

ALTER TABLE persons DROP PRIMARY KEY

2.自动增长列
我们通常希望在每次插入新记录时,数据库自动生成字段的值。
我们可以在表中使用 auto_increment(自动增长列)关键字,自动增长列类型必须是整形,自动增长列必须为键
(一般是主键)。

下列 SQL 语句把 “persons” 表中的 “p_id” 列定义为 auto_increment 主键

CREATE TABLE persons
(
p_id int PRIMARY KEY AUTO_INCREMENT,
lastname varchar(255),
firstname varchar(255),
address varchar(255),
city varchar(255)
)

向persons添加数据时,可以不为p_id字段设置值,也可以设置成null,数据库将自动维护主键值:

INSERT INTO persons (firstname,lastname) VALUES ('Bill','Gates')
INSERT INTO persons (p_id,firstname,lastname) VALUES (NULL,'Bill','Gates')

扩展:默认AUTO_INCREMENT 的开始值是 1,如果希望修改起始值,请使用下列 SQL 语法:

ALTER TABLE persons AUTO_INCREMENT=100

3.非空约束
NOT NULL 约束强制列不接受 NULL 值。
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

下面的 SQL 语句强制 “id_p” 列和 “lastname” 列不接受 NULL 值:

CREATE TABLE persons
(
id_p int NOT NULL,
lastname varchar(255) NOT NULL,
firstname varchar(255),
address varchar(255),
city varchar(255)
)

4.唯一约束
UNIQUE 约束唯一标识数据库表中的每条记录。 UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保
证。 PRIMARY KEY 拥有自动定义的 UNIQUE 约束。 请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能
有一个 PRIMARY KEY 约束。

添加唯一约束
与主键添加方式相同,共有3种
方式一:创建表时,在字段描述处,声明唯一:

CREATE TABLE persons
(
id_p int UNIQUE,
lastname varchar(255) NOT NULL,
firstname varchar(255),
address varchar(255),
city varchar(255)
)

方式二:创建表时,在约束区域,声明唯一:

CREATE TABLE persons
(
id_p int,
lastname varchar(255) NOT NULL,
firstname varchar(255),
address varchar(255),
city varchar(255),
CONSTRAINT 名称 UNIQUE (Id_P)
)

方式三:创建表后,修改表结构,声明字段唯一:

ALTER TABLE persons ADD [CONSTRAINT 名称] UNIQUE (Id_P)

删除唯一约束
如需撤销 UNIQUE 约束,请使用下面的 SQL:
ALTER TABLE persons DROP INDEX 名称

如果添加唯一约束时,没有设置约束名称,默认是当前字段的字段名。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值