数据库常见的约束

数据库通过约束(constraints)防止无效的数据进入到表中,以保护数据的实体完整性。

约束分为字段级别约束表级别约束

字段级约束:只为单个字段添加约束; 表级约束:为一个或多个字段添加约束 

常见约束

primary key(不重复且不为null),not null,unique(不重复但是可以有多个null),auto_incremenrt,foreign key(name)reference table_ame(name)等

创建一个数据库表

create table user_info(
  id char(36) primary key comment'主键',
  user_name varchar(30) unique comment'唯一的',
  password varchar(30) not null
)

primary key

指定主键。该约束强制字段或字段组合必须具有唯一性且每个字段不能为空。可以为字段级别约束,也可以为表级别约束。

insert into user_info(id,user_name,password) values ('00023000-027a-42b8-8a76-ce03d411bd5d','000','000');

 

当添加的数据的id和数据库中的一致,则会报错,行使了主键的作用:

insert into user_info(id,user_name,password) values ('00023000-027a-42b8-8a76-ce03d411bd5d','001','001');

数据库常见的约束_第1张图片

 当添加的数据的id为空字符串能添加成功:

insert into user_info(id,user_name,password) values ('','111','001');

数据库常见的约束_第2张图片 

数据库常见的约束_第3张图片 

 当添加的数据的id为空null,则会报错,行使了主键的作用:

insert into user_info(id,user_name,password) values (null,'006','001');

数据库常见的约束_第4张图片

not null

指定字段不能为空,只能定义为字段级约束

insert into user_info(id,user_name,password) values ('66623000-027a-42b8-8a76-ce03d411bd5d','666','');
insert into user_info(id,user_name,password) values ('06623000-027a-42b8-8a76-ce03d411bd5d','888','888');

数据库常见的约束_第5张图片 

这两条的password都不属于空,可以添加成功到数据库中,而下面的则不行:

insert into user_info(id,user_name,password) values ('47823001-027a-42b8-8a76-ce03d411bd5f','222',null);

数据库常见的约束_第6张图片

 unique

指定字段的值(或字段组合的值)对于表中所有的行必须是唯一的。对于无非空约束的字段,唯一键约束允许输入空值,且包含空值的行可以有多个。可以为字段级别约束,也可以为表级别约束,表级约束时可以定义复合唯一键。

添加两条数据,user_name的值都是999,会报错,unique行使了作用

insert into user_info(id,user_name,password) values ('06623000-027a-42b8-8a76-ce04d411bd5d','999','888');
insert into user_info(id,user_name,password) values ('11623000-027a-42b8-8a76-c114d411bd5d','999','000');

数据库常见的约束_第7张图片

 添加两条数据,user_name的值都是空字符串,会报错,unique行使了作用

insert into user_info(id,user_name,password) values ('06623000-027a-42b8-8111-ce04d411bd5d','','888');
insert into user_info(id,user_name,password) values ('11623000-027a-42b8-8a76-c114d411bd5d','','000');

 数据库常见的约束_第8张图片

包含空值的行可以有多个 ,user_name的值都是空null,正常执行

insert into user_info(id,user_name,password) values ('06623000-027a-42b8-8111-ce04d411175d',null,'111');
insert into user_info(id,user_name,password) values ('11623000-027a-42b8-8a76-c1122411bd5d',null,'111');

数据库常见的约束_第9张图片 

 default

设置默认值

将下列数据库表中的性别sex列中设置默认值为0

create table user(
id char(36) primary key comment '主键',
user_name varchar(17) unique comment '用户名',
password varchar(15) comment '密码',
sex char(2) default 0 comment '性别'
)

当 添加数据时没有添加sex列的值时,但由于有默认值则数据库中的sex列中有默认值数据,如果没有默认值添加相同的语句则sex列为null

insert into user_m(id,user_name,password) values ('00023000-027a-42b8-8a76-ce03d411bd5d','000','000');

 数据库常见的约束_第10张图片

数据库常见的约束_第11张图片

check

指定列值必须满足check中条件,否则无法进行添加或修改;一个字段可以定义多个check约束。注意:MySQL数据库不支持该约束! 

你可能感兴趣的:(sql)