当前位置:   article > 正文

Mysql04——非空、唯一、默认约束

默认约束

MySQL约束

概念
约束英文:constraint
约束实际上就是表中数据的限制条件

作用
表在设计的时候加入约束的目的就是为了保证表中的记录完整性和有效性,比如用户表有些列的值(手机号)不能为空,有些列的值(身份证号)不能重复。

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。
表的约束很多,这里主要介绍如下几个:

null/not null,default, comment, zerofill,primary key,auto_increment,unique key。

分类

  • 主键约束(primary key) PK
  • 自增长约束(auto_increment)
  • 非空约束(not null)
  • 唯一性约束(unique)
  • 默认约束(default)
  • 零填充约束(zerofill)
  • 外键约束(foreign key)

MySQL约束-非空约束(not null)

在 MySQL 中,非空约束是一种用于确保列不为空的约束。当为某个列定义了非空约束后,在插入或更新数据时,如果该列的值为空,将会触发错误。

要在 MySQL 中添加非空约束,可以在创建表时或者修改表结构时使用NOT NULL关键字来指定列的非空约束。下面是一些示例:

创建表时添加非空约束:

添加非空约束-方式

create table t_user7 ( 
  id int , 
  name varchar(20) , -- 指定非空约束 
  address varchar(20) -- 指定非空约束 
); 
alter table t_user7 modify name varchar(20) not null; 
alter table t_user7 modify address varchar(20) not null;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

删除非空约束

-- alter table 表名 modify 字段 类型 
alter table t_user7 modify name varchar(20) ; 
alter table t_user7 modify address varchar(20) ;

  • 1
  • 2
  • 3
  • 4

需要注意的是,添加非空约束可能会导致以下情况之一:

  • 如果表中已存在数据,且该列含有空值,添加非空约束会失败,因为该操作会违反约束。
  • 如果添加非空约束后,更新表中已有的数据时遇到该列为空的情况,会触发错误。

确保在添加非空约束之前,先处理好已有数据的情况,或者在添加非空约束后,使用适当的默认值或者NULL来更新已有数据,以符合约束条件。

MySQL约束-唯一约束(unique)

概念
唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如,为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。

在 MySQL 中,唯一约束是一种用于确保某列或某组列的取值在表中是唯一的约束条件。唯一约束可以用于单个列或多个列的组合。

要在 MySQL 中添加唯一约束,可以在创建表时或修改表结构时使用UNIQUE关键字来指定列的唯一约束。下面是一些示例

语法

方式1<字段名> <数据类型> unique
方式2alter table 表名 add constraint 约束名 unique();
  • 1
  • 2

添加唯一约束-方式1

-- 创建表时指定
create table mytable  ( 
 id int , 
 name varchar(20) , 
 phone_number varchar(20) unique -- 指定唯一约束 
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

添加唯一约束-方式2

create table mytable  ( 
  id int , 
  name varchar(20) , 
  phone_number varchar(20) -- 指定唯一约束 
); 

alter table mytable  add constraint unique_ph unique(phone_number);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

删除唯一约束

-- alter table <表名> drop index <唯一约束名>;
alter table mytable drop index unique_ph;
  • 1
  • 2

可以为单个列或者多个列同时添加唯一约束。

注意:

对于已存在的数据,添加唯一约束时,如果已有数据存在重复值,将会触发错误。因此,在添加唯一约束之前,需要确保已有数据符合唯一约束的条件。

唯一约束可以保证一个或一组列中的值是唯一的,当插入或更新数据时,如果违反唯一约束,会触发错误,确保数据的一致性和正确性。

MySQL约束-默认约束(default)

概念
MySQL 默认值约束用来指定某列的默认值。

在 MySQL 中,默认约束是一种用于在插入数据时为列提供默认值的约束。当插入数据时,如果未指定某个列的值,将会使用默认约束定义的默认值。

要在 MySQL 中添加默认约束,可以在创建表时或修改表结构时使用DEFAULT关键字来指定列的默认值。下面是一些示例:

语法

方式1<字段名> <数据类型> default <默认值>;
方式2: alter table 表名 modify 列名 类型 default 默认值;
  • 1
  • 2

添加默认约束-方式1

create table mytable  ( 
  id int , 
  name varchar(20) , 
  address varchar(20) default ‘北京’ -- 指定默认约束 
);
  • 1
  • 2
  • 3
  • 4
  • 5

添加默认约束-方式2

-- alter table 表名 modify 列名 类型 default 默认值; 

create table mytable  ( 
  id int , 
  name varchar(20) , 
  address varchar(20)  
);
alter table mytable  modify address varchar(20) default  ‘北京’;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

删除默认约束

-- alter table <表名> modify column <字段名> <类型> default null; 

alter table mytable  modify column address varchar(20) default null;
  • 1
  • 2
  • 3

注意:

需要注意的是,添加默认约束只会影响后续插入的数据,不会对已存在的数据产生影响。如果需要对已存在的数据应用默认约束,可以使用UPDATE语句来更新数据。

默认约束可以为列提供一个默认值,当插入数据时,如果未指定该列的值,将会使用默认值。这可以确保数据的完整性和一致性,并简化插入数据的操作。

MySQL约束- 零填充约束(zerofill)

概念
1、插入数据时,当该字段的值的长度小于定义的长度时,会在该值的前面补上相应的0
2、zerofill默认为int(10)
3、当使用zerofill 时,默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围是原值的2倍,

操作

create table t_user12 ( 
  id int zerofill , -- 零填充约束
  name varchar(20)   
);
  • 1
  • 2
  • 3
  • 4

删除

alter table t_user12 modify id int;
  • 1
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号