MySQL【AUTO_INCREMENT 】自增列

news2024/11/14 15:06:12

使用案例场景再现: 

创建一个为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 不会初始化,自增列的排列数据信息,会将历史的自增后删除了数据操作记录保留在重做日志中。

总结:(论语二则)

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/133030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SCI论文解读复现【NO.1】基于Transformer-YOLOv5的侧扫声纳图像水下海洋目标实时检测

此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮助…

三旗舰焕新发布引领品牌向上 长城汽车登陆2022广州车展

近日,长城汽车携哈弗、魏牌、欧拉、坦克、长城炮以及沙龙六大品牌,登陆第二十届广州国际汽车展览会(以下简称“2022广州车展”)。魏牌全新旗舰蓝山DHT-PHEV、坦克500 PHEV长续航版、大型高性能豪华皮卡山海炮等车型联袂而至&#…

创建静态库存文件 ansible(3)

目录 创建一个名为/home/student/ansible/inventory的静态库存文件如下所示: (1)node1是dev主机组的成员 (2)node2是test主机组的成员 (3)node1和node2是prod主机组的成员 (4&am…

【Qt】控件——QPlainTextEdit使用简单介绍:常用方法及信号、逐行读取编辑框的内容、使用自带的快捷菜单、作为日志显示窗口

Qt控件-QPlainTextEdit使用 参考链接: https://blog.csdn.net/seniorwizard/article/details/109726147; https://blog.csdn.net/seniorwizard/article/details/109726147 文章目录Qt控件-QPlainTextEdit使用QPlainTextEdit控件简单介绍1. 逐行读取文本编辑框的内容…

【PCB专题】什么是金属化孔(PTH)和非金属化孔(NPTH)

计出来的,并不是放在那里好看的,每个不同的孔洞都有其目的。一般来说孔洞越多,PCB的成本也越高。 PCB中的孔类型大体上可以被区分为PTH(Plating Through Hole)电镀导通孔,和NPTH(None Plating Through Hole)非电镀导通孔两大类。这里说的通孔是指从PCB的一面直接贯穿到…

Spark数据倾斜性能调优

目录 调优概述 数据倾斜发生时的现象 数据倾斜发生的原理 如何定位导致数据倾斜的代码 某个task执行特别慢的情况 某个task莫名其妙内存溢出的情况 查看导致数据倾斜的key的数据分布情况 知识拓展 coalesce 和 repartition 的区别 数据倾斜的解决方案 解决方案一&am…

【哈工大大一年度项目经验与感想】立项篇 中(2021.9.17~2021.11.17)

第四步:立项报告书写 立项报告的目的在于向答辩老师或者投资方阐述你的项目是什么?做什么的?解决什么问题?打算怎么解决这些问题?有什么创新点、特色?目标?所以一篇立项报告正文需要包括以下内容…

21级数据结构考前模拟题

说明: 此试卷为21级数据结构考前模拟题,老师并未给出标准答案,故以下所有答案均为博主给出,并只供参考,不保证其正确性!!! 只更新了部分,还在写题中!&#xf…

同步+异步日志系统(C++实现)

对于一个服务器而言,不论是在调试中还是在运行中,都需要通过打日志的方式来记录程序的运行情况。本文设计的日志系统实现了同步与异步两种功能,原理见下图: 同步日志:日志写入函数与工作线程串行执行,由于涉…

人脸识别与美颜算法实战-基于机器学习的人脸识别

机器学习根据输出的类型一般分为两类,分类和回归。分类的输出一般是离散值,回归输出的值一般是连续的。比如,人脸识别这种就属于分类问题,房价预测一般是一个回归问题。 鸢尾花分类 # -*- coding: UTF-8 -*- # 导入数据集 from sklearn.datasets import load_iris iris =…

InnoDB事务原理理解(redo log,undo log,锁,MVCC的理解)

目录事务事务的四大特性ACID事务相关SQL语句事务原理事务如何解决隔离性隔离性总结事务如何解决原子性、一致性、持久性redo log 重做日志CheckPoint 检查点机制Double Writer 双写磁盘undo log 回滚日志锁表级锁表读锁、表写锁元数据锁MDL意向锁行级锁行读锁,行写锁…

coremail邮件安全网关产品详细学习笔记(上)

声明 本文是学习中国企业邮箱安全性研究报告. 下载地址而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 钓鱼邮件 钓鱼邮件的规模 在本章内容中,钓鱼邮件是指含有恶意欺诈信息的邮件,包括OA钓鱼邮件、鱼叉邮件、钓鲸邮件、CEO仿…

PHP代码审计

1. "" 与 “” 在进行比较的时候,会先将字符串类型转化成相同,如果整型跟字符型比较字符或从左往右提取整型直到遇到字符结束,再比较。 在进行比较的时候,会先判断两种字符串的类型是否相等,当等号两边类…

nodejs调用matlab的.m文件

1、问题的提出: 在一些web服务中,后台采用nodejs轻量化服务器接口,而matlab的.m文件编写了算法模块,两者调用时,官方没有提供相应的文档(当然也可能我没找到)。因此,本文提出了matl…

上岸学姐的浙大MPA复试流程和内容经验介绍

管理类考研笔试落下帷幕,大家有没有因为周末不上课,平时不刷题而感到生活好像缺了些啥呢?没关系,复试已经可以开始准备啦,尤其是对于我们报考MPA项目的同学们来说。 预计二月份下旬笔试成绩会先出来了&#xff0c…

逻辑回归-sklearn

1.概述 逻辑回归,是一种线性分类器。其本质是由线性回归变化而来的,一种广泛使用于分类问题中的广义回归算法。 最小二乘法就是用来求解线性回归中参数的数学方法。 2.sklearn中的逻辑回归 (1)逻辑回归分类器(又叫l…

Eth08-EthCtrlConfig:以太网控制器的硬件操作的timeout值配置

文章目录 1 EthCtrlConfig:以太网控制器的硬件操作的timeout值配置传送门 ==>> AutoSAR入门和实战系列总目录 1 EthCtrlConfig:以太网控制器的硬件操作的timeout值配置 /MICROSAR/Eth_Enet/Eth/EthConfigSet/EthCtrlConfig: Configuration of the individual control…

【Python应用】tkinter简介

简介 tkinter是Python自带的GUI库。 tkinter的全称是Tk Interface。 其中Tk是开发桌面应用的GUI工具库,它是Tcl的标准GUI,而Tcl全称Tool Command Language,是一种动态编程语言,可用于桌面应用开发。关于Tk和Tcl,可以…

顺序表中基本操作的具体思路与实现(C语言版)

顺序表中基本操作的具体思路与实现(C语言版)一、操作前的准备工作(1)定义操作算法中用到的预定义常量和类型(2)定义线性表中可能拥有的元素的最大个数(3)定义顺序表类型二、具体操作…

ZC706P+ADRV9009连接RADIOVERSE详解之一

第一步是:安装WINDOWS软件。 从下面网页里面下载所需要的软件和文件: https://www.analog.com/en/design-center/landing-pages/001/transceiver-evaluation-software.html 下载下图中的软件,这是运行在WINDOWS系统上的,通过网…