Skip to main content

字段约束

字段约束

字段约束主要在数据存储时对字段进行相关约束。

非空约束

非空约束 not null 限制字段不能空,即必填字段。

create table table_name (
id int not null,
);
  • 如果没有限制 not null,该字段未填写,则该字段为 null
  • 如果限制该字段为 not null,该字段未填写,则会报错。
field doesn't have a default value.

唯一约束

唯一约束 unique 限制该字段的数据不能重复。

create table table_name (
phone varchar(11) unique,
);

主键约束

主键约束 primary key 也是一种唯一性约束,用于确保表中的每一行记录都有一个唯一标识符,主键列的值必须是唯一的,且不能为空。

create table table_name (
id char(10),
PRIMARY KEY (id)
);
/*
create table table_name (
id char(10) PRIMARY KEY
);
*/

主键约束可以认为是非空约束和唯一约束的组合,如果一个字段既有非空约束又有唯一约束,则会自动转为主键:

create table table_name (
id char(10) not null unique
);

主键约束可以修改或删除,但一个表中只能有一个主键:

alter table table_name modify <字段> <数据类型> primary key;

alter table table_name drop primary key;

主键可以进行自增,需要将该字段义为 int 类型,每次添加数据时,让该字段自动增加并填入,默认从 1 开始自增。如果删除了数据,不影响原先自增的规则。

create table table_name (
id int primary key auto_increment;
);

外建约束

外建约束 foreign key 用于与其他表关联,在两张表之间建立关系,确保引用完整性。它定义了一列或多列的值必须与另一表中某列的值相匹配,或者为 NULL (如果允许),通常用于一对多、多对多关系。

详细可查看

联合主键

联合主键是指由多个列组合起来作为表的主键,确保每一行数据的唯一性。

create table table_name (
field1 int not null,
field2 int not null,
grade VARCHAR(5),
primary key (field1, field2) -- 联合主键
);

在实际开发中,联合主键使用较少,因为完全可以使用主键来保持唯一性。