字段约束
字段约束
字段约束主要在数据存储时对字段进行相关约束。
非空约束
非空约束 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) -- 联合主键
);
在实际开发中,联合主键使用较少,因为完全可以使用主键来保持唯一性。