iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL【AUTO_INCREMENT 】自增列
  • 309
分享到

MySQL【AUTO_INCREMENT 】自增列

mysql数据库sql 2023-09-17 07:09:24 309人浏览 八月长安
摘要

使用案例场景再现:  创建一个为test的数据库,为数据库test创建一个数据表student ,其中包含的字段有 id name sex,admission_time,其中要求student表中的人员id必须连续排列。 create da

使用案例场景再现: 

创建一个为test的数据库,为数据库test创建一个数据表student ,其中包含的字段有 id name sex,admission_time,其中要求student表中的人员id必须连续排列。

create database test        use test       

create table student (

id   int primary key auto_increment

name varchar(15)

sex varhcar(5)

admission_time  data

其中 auto_increment 就是自增列,具体功能是当需要产生唯一标识符或顺序值时,可设置自增长,一般使用于一张表中的主键

关键字 :   auto_increment   主要被用于主键

注意点:一个表最多只能有一个自增长列

(2)自增长列约束的列必须是键列(主键列,唯一键列)

(3)自增约束的列的数据类型必须是整数类型

(4)如果自增列指定了 0 和 null,会在当前最大值的基础上自增;

案例测试一:(一个表最多只能有一个自增长列)

错误示例:

CREATE TABLE student (

id   int PRIMARY KEY AUTO_INCREMENT,

NAME varchar(15),

sex varhcar(5),

admission_time  DATA UNIQUE AUTO_INCREMENT

)

错误示例:自增长列约束的列必须是(主键列或 唯一键列)

CREATE TABLE emp2(
id INT AUTO_INCREMENT,
`NAME` VARCHAR(20),
pwd VARCHAR(15)
)

错误代码: 1075
Incorrect table definition; there can be only one auto column and it must be defined as a key
         (表定义不正确;只能有一个自动列,并且必须将其定义为键)

错误示例2:自增长列约束的列必须是(主键列或 唯一键列

CREATE TABLE emp2(
id INT primary key,
`NAME` VARCHAR(20) ,
pwd int     AUTO_INCREMENT   

# 没有声明密码的唯一性如果改为

pwd int  unique   AUTO_INCREMENT   # 正确的
)

为什么AUTO_INCREMENT,建议被用于 主键 而且数据类型必须为 int ,首先要从它作用看,它是被用来对某一字段自增加1的,比如你需要给你们班级建立一个表,从第一个学生开始,你每入一个学生信息,是不是需要修改一下它的id号,将其写为 1 ,2,  3,4,..... 

如果你将它的id号设置了自增,那是不是就不用管id了,你每插入新的记录它都会增。

案例:

创建一个表

CREATE TABLE emp2(
id INT PRIMARY KEY AUTO_INCREMENT,
`NAME` VARCHAR(20),
pwd VARCHAR(15)
)

插入三条数据

INSERT INTO emp2(`name`,pwd) VALUES
("李四","xcvb"),
("王麻子","xcvb"),
("刘栋","xcvb");

因为我们将 id字段设置了自增 (AUTO_INCREMENT) 所以 emp2表的id字段会自动增长,我们就不用在给她赋值例如:

INSERT INTO emp2(`name`,pwd) VALUES
  (1,"李四","xcvb"),

(2,"王麻子","xcvb"),
(3,"刘栋","xcvb");

注意: 如果我们已经将id号设置为了自增列,就不建议再次对自增列复新值了

INSERT INTO emp2(id,`name`,pwd) VALUES
(10,"周记","xcvb")

我们在插入新的排列顺序时,会出现问题 

INSERT INTO emp2(`name`,pwd) VALUES
("马林","xcvb")

name = 马林 这条数据会从id = 11 开始,而不是我们刚按顺序排列的4 插入完成后应该是 id = 5 

注意:在对已经设置了自增列的表插入新的数据时,一定要考虑好里面的数据,如果在后续出现问题的话,删除这条信息 ,在重新插入的时候会出现裂缝

我们来删除 id = 4 name = "刘栋" 这条数据 
DELETE FROM emp3 WHERE id = 4

重新插入一条数据 :INSERT INTO emp3(`name`,pwd) VALUES
("周记","xcvb")

如果按照常规理解 id = 4被删掉了,重新按照顺序插入的话应该是4,其实不是。

通过查看表内数据,id是从5开始排列,这样操作有的时候会造成主键冲突及其一些其他问题,(主键冲突的原因就是,列表中存在这样一条数据,我们重新相同id的数据插入的话会发现插入不成功,出现这种问题的原因是因为我删除了某些数据,经过一段时候后人为的记忆就会忘记一些数据信息),当然你也可以在后面另行补上。   insert into 表名(4,`name`,pwd)。

这叫自增变量持久化。Mysql 8.0 不会初始化,自增列的排列数据信息,会将历史的自增后删除了数据操作记录保留在重做日志中。

总结:(论语二则)

“君子食无求饱,居无求安,敏于事而慎于言,就有道而正焉学可谓好学也已。”

君子吃饭不求填饱肚子,居住不追求安逸宽大的房子,勤快的做自己该做的事情,和他人谈话要谨而慎之,接近有道德有学问的人并向他学习,纠正自己的缺点,就可以称得上是好学了

子曰,质胜文则野,文胜质则史,文质彬彬,然后君子

“质朴超过文采就会显得粗狂野蛮,文采超过质朴就会过于浮华。文采与质朴搭配适中,才能成为君子。”

来源地址:https://blog.csdn.net/weixin_59131972/article/details/128510419

您可能感兴趣的文档:

--结束END--

本文标题: MySQL【AUTO_INCREMENT 】自增列

本文链接: https://www.lsjlt.com/news/410798.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • sql怎么查看表的索引
    通过查询系统表,可以获取表的索引信息,包括索引名称、是否唯一、索引类型、索引列和行数。常用系统表有:mysql 的 information_schema.statistics、postg...
    99+
    2024-05-14
    mysql oracle
  • sql怎么查看索引
    您可以使用 sql 通过以下方法查看索引:show indexes 语句:显示表中定义的索引列表及其信息。explain 语句:显示查询计划,其中包含用于执行查询的索引。informat...
    99+
    2024-05-14
  • sql怎么查看存储过程
    如何查看 sql 存储过程的源代码:使用 show create procedure 语句直接获取创建脚本。查询 information_schema.routines 表的 routi...
    99+
    2024-05-14
  • sql怎么查看视图表
    要查看视图表,可以使用以下步骤:使用 select 语句获取视图中的数据。使用 desc 语句查看视图的架构。使用 explain 语句分析视图的执行计划。使用 dbms 提供...
    99+
    2024-05-14
    oracle python
  • sql怎么查看创建的视图
    可以通过sql查询查看已创建的视图,具体步骤包括:连接到数据库并执行查询select * from information_schema.views;查询结果将显示视图的名称、...
    99+
    2024-05-14
    mysql
  • sql怎么用循环语句实现查询
    可以通过 do 和 while 语句创建循环,并在循环内执行查询,详细步骤包括:定义循环变量设置循环初始值循环执行查询更新循环变量执行查询循环退出条件 SQL 中使用循环语句实现查询 ...
    99+
    2024-05-14
  • sql怎么用代码修改表中数据
    通过 sql 代码修改表中数据的方法包括:修改单个记录:使用 update 语句设置列值并指定条件。修改多条记录:在 update 语句中指定多个条件来修改满足条件的所有记录。增加新列:...
    99+
    2024-05-14
  • sql怎么用命令创建数据库
    在 sql 中使用 create database 命令创建新数据库,其语法包含以下步骤:指定数据库名称。指定数据库文件和日志文件的位置(可选)。指定数据库大小、最大大小和文件增长(可选...
    99+
    2024-05-14
  • sql怎么用身份证提取年龄
    sql 中提取身份证号码中的年龄的方法:提取出生日期部分(身份证号码中第 7-14 位);使用 to_date 函数转换为日期格式;使用 extract 函数计算与当前日期之间的年差。 ...
    99+
    2024-05-14
  • sql怎么看字段长度
    有两种方法可查看 sql 中的字段长度:使用 information_schema 架构,其中包含元数据信息,可用于查询字段长度。使用内建函数,如 length(),其适用于字符串数据类...
    99+
    2024-05-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作