MySQL约束-自增长约束(auto_increment)、非空约束(not null)、唯一约束(unique)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: MySQL约束-自增长约束(auto_increment)、非空约束(not null)、唯一约束(unique)

自增长约束概念

MySQL 中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键会自动以相同的步长进行增长。

通过给字段添加 auto_increment 属性来实现主键自增长:比如我们指定id为主键自增长,这样会自动给其进行赋值。

字段名 数据类型 auto_increment
create table t_user1( 
  id int primary key auto_increment, 
  name varchar(20) 
);

特点

默认情况下,auto_increment的初始值是 1,每新增一条记录,字段值自动加 1。

一个表中只能有一个字段使用 auto_increment约束,且该字段必须有唯一索引,以避免序号重复(即为主键或主键的一部分)。


auto_increment约束的字段必须具备 NOT NULL 属性。


auto_increment约束的字段只能是整数类型(TINYINT、SMALLINT、INT、BIGINT 等


auto_increment约束字段的最大值受该字段的数据类型约束,如果达到上限,auto_increment就会失效。在前面的数据类型,我们对字段的最大值进行说明,可以查看前面的文章。


在MySQL中删除主键需要两步.


(1)如果有auto_increment,先删除之;


(2)删除主键约束 primary key


1、alter table t9 modify id int(11);


这里用的modify,只改变数据类型,也可以用change,改变列名的同时输入新的数据类型。


2、alter table t9 drop primary key;


删除主键


那么我们可以指定初始值吗?答案是可以的!


自增字段初始值

如果第一条记录设置了该字段的初始值,那么新增加的记录就从这个初始值开始自增。


例如,如果表中插入的第一条记录的 id 值设置为 5,那么再插入记录时,id 值就会从 5 开始往上增加


auto_increment=
-- 方式1,创建表时指定
create table t_user2 ( 
  id int primary key auto_increment, 
  name varchar(20)
)auto_increment=100;
-- 方式2,创建表之后指定
create table t_user3 ( 
  id int primary key auto_increment, 
  name varchar(20)
);
alter table t_user2 auto_increment=100;

delete和truncate在删除后自增列的变化

delete数据之后自动增长从断点开始


truncate数据之后自动增长从默认起始值开始


非空约束概念

MySQL 非空约束(not null)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。


方式1:<字段名><数据类型> not null;


方式2:alter table 表名 modify 字段 类型 not null;


-- 方式1,创建表时指定

create table t_user6 ( 
  id int , 
  name varchar(20) not null, 
  address varchar(20) 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;
alter table 表名 modify 字段名 类型(长度)not null


删除非空约束

删除非空约束,不可以向之前的自增长约束那样,直接就可以使用命令,不需要指定就可以删除了,因为非空约束在数据表中可以存在多个


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

我们也发现这个规律们;也就是再创建的命令,删除not null 即可


唯一约束概念

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


方式1:<字段名> <数据类型> unique


方式2: alter table 表名 add constraint 约束名 unique(列);


-- 创建表时指定
create table t_user8 ( 
 id int , 
 name varchar(20) , 
 phone_number varchar(20) unique -- 指定唯一约束 
);
create table t_user9 ( 
  id int , 
  name varchar(20) , 
  phone_number varchar(20) -- 指定唯一约束 
); 
alter table t_user9 add constraint unique_ph unique(phone_number);

注意:这里使用的alter 是和add constraint一起使用的


-- alter table <表名> drop index <唯一约束名>;
alter table t_user9 drop index unique_ph;

总结:我们学习了自增长约束,非空约束,唯一约束,我们需要知道如何创建这些约束,以及如何修改删除这些约束


非空约束:alter table 表名 modify 字段 类型 not null;


删除:alter table 表名 modify 字段 类型


唯一约束:alter table 表名 add constraint 约束名 unique(列);


删除:alter table <表名> drop index <唯一约束名>;


文末资源推荐

🍓 🍑 🍈 🍌 🍐 🍍 🍠 🍆 🍅 🌽


image.png


点击下方即可下载 ⤵️⤵️⤵️⤵️⤵️

国家社科基金数据库爬取与可视化分析.rar_国家社会科学基金-Python文档类资源-CSDN下载


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
SQL 关系型数据库 MySQL
MySQL----约束
MySQL----约束
9 1
|
12天前
|
数据采集 关系型数据库 MySQL
MySQL数据库基础第三篇(约束)
MySQL数据库基础第三篇(约束)
|
2天前
|
SQL 关系型数据库 MySQL
MySQL外键约束行为解析:CASCADE, NO ACTION, RESTRICT, SET NULL
MySQL外键约束行为解析:CASCADE, NO ACTION, RESTRICT, SET NULL
8 0
|
13天前
|
关系型数据库 MySQL
MySQL中如何处理NULL值以及如何使用正则表达式
MySQL中如何处理NULL值以及如何使用正则表达式
|
3天前
|
存储 关系型数据库 MySQL
|
2天前
|
存储 关系型数据库 MySQL
|
2天前
|
存储 SQL 关系型数据库
|
3天前
|
SQL 运维 关系型数据库
|
3天前
|
存储 关系型数据库 MySQL
|
4天前
|
关系型数据库 MySQL 数据库
Django与MySQL:配置数据库的详细步骤
Django与MySQL:配置数据库的详细步骤