数据库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

 

posted @ 2026-11-05 21:25  da呼吸家  阅读(2)  评论(0)    收藏  举报