数据库2——字段的约束
一、常用约束介绍
- 主键(primary key):值不能重复,auto_increment代表值自动增长;
- 非空(not null):此字段不允许填写空值;
- 唯一(unique):此字段的值不允许重复;
- 默认值(default):当不填写此值时会使用默认值,如果填写以填写为准。
二、创建带约束字段的语法格式
create table 表名(
字段名 数据类型 约束,
字段名 数据类型 约束,
......
);
三、主键与自增长
primary key值不能重复,重复insert该值会报错;
auto_increment代表值自动增长,插入数据若不指定该值(只针对插入部分字段,若插入全部字段却不指定该字段值则报错,此时应使用0或null占位)会自动增加1(对比上一条记录增加),若指定该值则按照指定值。
语法:
create table 表名(
字段名 数据类型 primary key auto_increment,
字段名 数据类型 约束,
......
);
例1:创建表d,字段要求如下:
id,数据类型为int unsigned,primary key,auto_increment;
name,数据类型为varchar,长度为10;
age,数据类型为tinyint unsigned
sql语句:
create table d(
id int unsigned primary key auto_increment,
name varchar(10),
age tinyint unsigned
);
例2:使用0或null占位符实现自增长
insert into d values(‘张三’,20);❌️
insert into d values(0,‘李四’,20);✅️自动id加1(对比上条记录)
insert into d values(null,‘王五’,30);✅️自动id加1(对比上条记录)
例3:truncate与delete对自增长字段的影响区别
delete from d;
insert into d values(0,‘张三’,10); id会从删除前的最后一条记录开始自增长
truncate table d;
insert into d values(0,‘张三’,10); id会恢复从1开始自增长
四、非空约束
not null:此字段不允许填写空值;
语法:
create table 表名(
字段名 数据类型 not null,
字段名 数据类型 约束,
......
);
例1:创建表e,字段要求如下:
id,数据类型为int unsigned;
name,数据类型为varchar,长度为10,not null(非空);
age,数据类型为tinyint unsigned
sql语句:
create table e(
id int unsigned ,
name varchar(10)not null ,
age tinyint unsigned
);
例2:插入一条数据
insert into e values(1,‘张三’,20);✅️
insert into e (id,age) values(0,10);❌️插入失败报错,name字段必须有值
五、唯一约束
unique:此字段的值不允许重复
语法:
create table 表名(
字段名 数据类型 unique,
字段名 数据类型 约束,
......
);
例1:创建表f,字段要求如下:
id,数据类型为int unsigned;
name,数据类型为varchar,长度为10,unique(唯一);
age,数据类型为tinyint unsigned
sql语句:
create table f(
id int unsigned ,
name varchar(10)unique ,
age tinyint unsigned
);
例2:插入一条数据
insert into f values(1,‘张三’,20);✅️
insert into f values(2,‘李四’,30);✅️
insert into f values(1,‘张三’,20);❌️已经存在该name值无法再次插入
insert into f values(3,‘张三’,50);❌️已经存在该name值无法再次插入
六、默认值约束
default:当不填写此值时会使用默认值,如果填写以填写为准。
语法:
create table 表名(
字段名 数据类型 default 值,
字段名 数据类型 约束,
......
);
例1:创建表g,字段要求如下:
id,数据类型为int unsigned;
name,数据类型为varchar,长度为10;
age,数据类型为tinyint unsigned,default(默认值)为30;
sql语句:
create table f(
id int unsigned ,
name varchar(10) ,
age tinyint unsigned default 30
);
例2:插入一条数据
insert into g values(1,‘张三’,20);✅️
insert into g (id,name) values(2,‘李四’);✅️默认age为30

浙公网安备 33010602011771号