欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中使用auto_increment修改初始值和步長(zhǎng)

 更新時(shí)間:2024年05月22日 10:30:28   作者:Clearlove7·11  
本文主要介紹了MySQL中使用auto_increment修改初始值和步長(zhǎng),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1、如何查看auto_increment的初始值和步長(zhǎng)

打開黑窗口,登錄管理員賬號(hào)和密碼后,執(zhí)行以下命令:

show variables like 'auto_inc%'; -- 查看當(dāng)前數(shù)據(jù)庫的自增長(zhǎng)設(shè)置

執(zhí)行結(jié)果如下:

即 auto_increment的初始值(offset)是1, 步長(zhǎng)(increment)是1. (步長(zhǎng)指每次的遞增量)。即每次遞增1.

2、如何修改auto_increment的初始值和步長(zhǎng)

在黑窗口中執(zhí)行以下命令:

set @@auto_increment_increment=2; --設(shè)置步長(zhǎng)為2
set @@auto_increment_offset=2;    --設(shè)置初始值為3

接下來做個(gè)測(cè)試:

   --創(chuàng)建測(cè)試表test
   create table test(
	id int(10) primary key auto_increment,
	name varchar(50)
   );
   -- 插入測(cè)試數(shù)據(jù)
   insert into test (name) values ('張三');
   insert into test (name) values ('李四');
   insert into test (name) values ('王五');

我們看下執(zhí)行結(jié)果:

可以看到,修改auto_increment的初始值和步長(zhǎng)成功 !

3、auto_increment的問題

這里以 auto_increment的默認(rèn)情況為例(初始值為1,步長(zhǎng)為1) 

有一種特殊的情況,我們一起看以下示例。

在黑窗口執(zhí)行以下指令:

   -- 刪除表test
   drop table test;
   -- 創(chuàng)建表test
   create table test(
	id int(10) primary key,
	name varchar(50)
   );
   insert into test values (1,'張三');
   insert into test values (3,'李四');
   insert into test values (5,'王五');

執(zhí)行結(jié)果如下圖:

接下來,我們?yōu)閠est表的id列添加 auto_increment

alter table test change id tid int(10) auto_increment;

因?yàn)閠est表中的數(shù)據(jù) id 的值時(shí) 1、3、5 , 所以我們希望通過修改auto_increment的初始值和步長(zhǎng),來補(bǔ)充中間空缺的id的值, 

比如 2、4 ,所以 我們可以修改auto_increment的默認(rèn)設(shè)置。如下指令:

   -- 修改auto_increment的初始值和步長(zhǎng)
   set @@auto_increment_increment=2; --設(shè)置步長(zhǎng)為2
   set @@auto_increment_offset=2;    --設(shè)置初始值

查看修改后的auto_increment相關(guān)信息:

接下來我們?cè)俅螢閠est表插入測(cè)試數(shù)據(jù):

   insert into test (name) values ('薛之謙');
   insert into test (name) values ('毛不易');
   insert into test (name) values ('鄧紫棋');

 查詢下最終的結(jié)果:

大家發(fā)現(xiàn),并不是我們想要的結(jié)果。其實(shí)auto_increment在使用時(shí),會(huì)對(duì)初始值與添加了auto_increment語法的列中的值進(jìn)行比較,當(dāng) auto_increment的當(dāng)前值(此處值是2)小于 添加了該語法的列的值時(shí),auto_increment會(huì)拿當(dāng)前值2 根據(jù)步長(zhǎng)(2)遞增,知道auto_increment的當(dāng)前值大于添加了該語法的列(id)的值時(shí),才會(huì)將最終的這個(gè)值作為初始插入數(shù)據(jù)的值。也就是說,執(zhí)行以下流程:

auto_increment    初始值     2      步長(zhǎng)2

插入第一條數(shù)據(jù) '薛之謙 ' 時(shí),會(huì)拿2跟表中數(shù)據(jù)的id的值進(jìn)行比較  

2>1

2<3    auto_increment 此時(shí)會(huì)遞增一次,遞增后的結(jié)果是4

4>3

4<5  auto_increment 此時(shí)會(huì)繼續(xù)遞增一次,遞增后的值是6

6>5  

此時(shí)表中已經(jīng)沒有其他的數(shù)據(jù),6最大,此時(shí)才執(zhí)行插入 第一條數(shù)據(jù) '薛之謙',因此,'薛之謙' 的 id = 6,

因?yàn)椴介L(zhǎng)是2,所以后面id的值依是 id = 8 ,id= 10 . 所以才會(huì)發(fā)生剛剛大家的那種情況。

auto_increment 在插入數(shù)據(jù)時(shí),真正一開始可以插入表中的值得計(jì)算公式:

假設(shè) a 為 表中id列的最大值, b為auto_increment的初始值,c 為步長(zhǎng),則auto_increment真正的初始值為:

auto_increment_real  =  int( a/b) * c + c  ;

即 auto_increment_real =(5 % 2)*2 + 2 = 6

參考mysql官方文檔地址:官方文檔在此,公式出自此處

到此這篇關(guān)于MySQL中使用auto_increment修改初始值和步長(zhǎng)的文章就介紹到這了,更多相關(guān)MySQL修改初始值和步長(zhǎng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Mysql多表連接查詢的執(zhí)行細(xì)節(jié)

    淺談Mysql多表連接查詢的執(zhí)行細(xì)節(jié)

    這篇文章主要介紹了淺談Mysql多表連接查詢的執(zhí)行細(xì)節(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • mysql中Innodb 行鎖實(shí)現(xiàn)原理

    mysql中Innodb 行鎖實(shí)現(xiàn)原理

    InnoDB的行鎖是通過索引項(xiàng)加鎖實(shí)現(xiàn)的,分為使用索引和非索引字段檢索的情況,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • MySQL函數(shù)與存儲(chǔ)過程字符串長(zhǎng)度限制的解決

    MySQL函數(shù)與存儲(chǔ)過程字符串長(zhǎng)度限制的解決

    本文主要介紹了MySQL函數(shù)與存儲(chǔ)過程字符串長(zhǎng)度限制的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 巧用mysql提示符prompt清晰管理數(shù)據(jù)庫的方法

    巧用mysql提示符prompt清晰管理數(shù)據(jù)庫的方法

    隨著管理mysql服務(wù)器越來越多,同樣的mysql>的提示符有可能會(huì)讓你輸入錯(cuò)誤的命令到錯(cuò)誤的數(shù)據(jù)庫,這時(shí)候需要巧用mysql的提示符,這是我的提示符root@localhost(mysql) 08:55:21> 用prompt命令實(shí)現(xiàn)(適用于windows和linux環(huán)境)
    2009-08-08
  • Mysql| 使用通配符進(jìn)行模糊查詢?cè)斀?like,%,_)

    Mysql| 使用通配符進(jìn)行模糊查詢?cè)斀?like,%,_)

    這篇文章主要介紹了Mysql| 使用通配符進(jìn)行模糊查詢?cè)斀?like,%,_),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • MySQL 動(dòng)態(tài)分區(qū)管理自動(dòng)化與優(yōu)化實(shí)踐記錄

    MySQL 動(dòng)態(tài)分區(qū)管理自動(dòng)化與優(yōu)化實(shí)踐記錄

    本文將詳細(xì)介紹如何通過 MySQL 的存儲(chǔ)過程和事件調(diào)度器實(shí)現(xiàn)動(dòng)態(tài)分區(qū)管理,確保分區(qū)表能夠自動(dòng)適應(yīng)數(shù)據(jù)增長(zhǎng),同時(shí)避免分區(qū)沖突,感興趣的朋友一起看看吧
    2025-05-05
  • MySql存儲(chǔ)表情報(bào)錯(cuò)的排查解決

    MySql存儲(chǔ)表情報(bào)錯(cuò)的排查解決

    隨著互聯(lián)網(wǎng)的發(fā)展,產(chǎn)生了許多新類型的字符,例如emoji這種類型的符號(hào),也就是我們通常在聊天時(shí)發(fā)的小黃臉表情,下面這篇文章主要給大家介紹了關(guān)于MySql存儲(chǔ)表情報(bào)錯(cuò)的排查解決,需要的朋友可以參考下
    2022-07-07
  • 關(guān)于Mysql隔離級(jí)別、鎖與MVCC介紹

    關(guān)于Mysql隔離級(jí)別、鎖與MVCC介紹

    本篇文章給大家詳細(xì)介紹了一下關(guān)于Mysql隔離級(jí)別、鎖與MVCC的相關(guān)知識(shí),有這方面興趣的朋友參考下。
    2018-01-01
  • 徹底刪除MySQL步驟介紹

    徹底刪除MySQL步驟介紹

    大家好,本篇文章主要講的是徹底刪除MySQL步驟介紹,感興趣的趕緊來看看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • MySQL查詢優(yōu)化--調(diào)整內(nèi)部變量的詳解

    MySQL查詢優(yōu)化--調(diào)整內(nèi)部變量的詳解

    本篇文章是對(duì)MySQL查詢優(yōu)化中的調(diào)整內(nèi)部變量進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評(píng)論