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

MySQL AUTO_INCREMENT 主鍵自增長的實現(xiàn)

 更新時間:2023年11月03日 16:00:39   作者:Itmastergo  
本文主要介紹了MySQL AUTO_INCREMENT 主鍵自增長的實現(xiàn),每增加一條記錄,主鍵會自動以相同的步長進行增長,具有一定的參考價值,感興趣的可以了解一下

在 MySQL 中,當(dāng)主鍵定義為自增長后,這個主鍵的值就不再需要用戶輸入數(shù)據(jù)了,而由數(shù)據(jù)庫系統(tǒng)根據(jù)定義自動賦值。每增加一條記錄,主鍵會自動以相同的步長進行增長。

通過給字段添加 AUTO_INCREMENT 屬性來實現(xiàn)主鍵自增長。語法格式如下:

字段名 數(shù)據(jù)類型 AUTO_INCREMENT

  • 默認情況下,AUTO_INCREMENT 的初始值是 1,每新增一條記錄,字段值自動加 1。
  • 一個表中只能有一個字段使用 AUTO_INCREMENT 約束,且該字段必須有唯一索引,以避免序號重復(fù)(即為主鍵或主鍵的一部分)。
  • AUTO_INCREMENT 約束的字段必須具備 NOT NULL 屬性。
  • AUTO_INCREMENT 約束的字段只能是整數(shù)類型(TINYINT、SMALLINT、INT、BIGINT 等)。
  • AUTO_INCREMENT 約束字段的最大值受該字段的數(shù)據(jù)類型約束,如果達到上限,AUTO_INCREMENT 就會失效。

例 1

定義數(shù)據(jù)表 tb_student,指定表中 id 字段遞增,SQL 語句和運行結(jié)果如下:

mysql> CREATE TABLE tb_student(
    -> id INT(4) PRIMARY KEY AUTO_INCREMENT,
    -> name VARCHAR(25) NOT NULL
    -> );
Query OK, 0 rows affected (0.07 sec)

上述語句執(zhí)行成功后,會創(chuàng)建名為 tb_student 的數(shù)據(jù)表。其中,id 為主鍵,每插入一條新記錄,id 的值就會在前一條記錄的基礎(chǔ)上自動加 1。name 為非空字段,該字段的值不能為空值(NULL)。

向 tb_student 表中插入數(shù)據(jù),SQL 語句如下所示:

INSERT INTO tb_student(name) VALUES('Java')('MySQL')('Python');

語句執(zhí)行完后,tb_student 表中增加了 3 條記錄,在這里并沒有輸入 id 的值,但系統(tǒng)已經(jīng)自動添加該值,使用 SELECT 命令查看記錄,如下所示。

mysql> SELECT * FROM tb_student;
+----+--------+
| id | name   |
+----+--------+
|  1 | Java   |
|  2 | MySQL  |
|  3 | Python |
+----+--------+
4 rows in set (0.01 sec)

拓展

加上 AUTO_INCREMENT 約束條件后,字段中的每個值都是自動增加的。因此,這個字段不可能出現(xiàn)相同的值。通常情況下,AUTO_INCREMENT 都是作為 id 字段的約束條件,并且將 id 字段作為表的主鍵。

指定自增字段初始值

如果第一條記錄設(shè)置了該字段的初始值,那么新增加的記錄就從這個初始值開始自增。例如,如果表中插入的第一條記錄的 id 值設(shè)置為 5,那么再插入記錄時,id 值就會從 5 開始往上增加。

例 2

下面創(chuàng)建表 tb_student2,指定主鍵從 100 開始自增長。SQL 語句和運行結(jié)果如下:

mysql> CREATE TABLE tb_student2 (
    -> id INT NOT NULL AUTO_INCREMENT,
    -> name VARCHAR(20) NOT NULL,
    -> PRIMARY KEY(ID)
    -> )AUTO_INCREMENT=100;
Query OK, 0 rows affected (0.03 sec)

向 tb_student2 表中插入數(shù)據(jù),并使用 SELECT 命令查詢表中記錄。 

mysql> INSERT INTO tb_student2 (name)VALUES('Java');
Query OK, 1 row affected (0.07 sec)

mysql> SELECT * FROM tb_student2;
+-----+------+
| id  | name |
+-----+------+
| 100 | Java |
+-----+------+

由結(jié)果可以看出,id 值從 100 開始自動增長。

自增字段值不連續(xù)

下面我們通過一個實例分析自增字段的值為什么不連續(xù)。

例 3

創(chuàng)建表 tb_student3,其中 id 是自增主鍵字段,name 是唯一索引,SQL 語句和執(zhí)行結(jié)果語句如下:

mysql> CREATE TABLE tb_student3(
    -> id INT PRIMARY KEY AUTO_INCREMENT,
    -> name VARCHAR(20) UNIQUE KEY,
    -> age INT DEFAULT NULL
    -> );
Query OK, 0 rows affected (0.04 sec)

向 tb_student3 表中插入數(shù)據(jù),SQL 語句如下:

INSERT INTO tb_student3 VALUES(1,1,1);

此時,表 tb_student3 中已經(jīng)有了(1,1,1)這條記錄,這時再執(zhí)行一條插入數(shù)據(jù)命令:

mysql> INSERT INTO tb_student3 VALUES(null,1,1);
ERROR 1062 (23000): Duplicate entry '1' for key 'name'

由于表中已經(jīng)存在 name=1 的記錄,所以報 Duplicate key error(唯一鍵沖突)。在這之后,再插入新的數(shù)據(jù)時,自增 id 就是 3,這樣就出現(xiàn)了自增字段值不連續(xù)的情況。

到此這篇關(guān)于MySQL AUTO_INCREMENT 主鍵自增長的實現(xiàn)的文章就介紹到這了,更多相關(guān)MySQL AUTO_INCREMENT 主鍵自增長內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL中UUID主鍵的優(yōu)化小結(jié)

    MySQL中UUID主鍵的優(yōu)化小結(jié)

    UUID可以唯一標(biāo)識記錄,因此有些場景可能會用來作為表的主鍵,本文主要介紹了MySQL中UUID主鍵的優(yōu)化小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-09-09
  • MySQL 的啟動選項和系統(tǒng)變量實例詳解

    MySQL 的啟動選項和系統(tǒng)變量實例詳解

    這篇文章主要介紹了MySQL 的啟動選項和系統(tǒng)變量,結(jié)合實例形式詳細分析了MySQL 啟動選項和系統(tǒng)變量具體原理、功能、用法及操作注意事項,需要的朋友可以參考下
    2020-05-05
  • 詳解MySQL連接掛死的原因

    詳解MySQL連接掛死的原因

    本次分享的是一次關(guān)于 MySQL 高可用問題的定位過程,其中曲折頗多但問題本身卻比較有些代表性,遂將其記錄以供參考。
    2021-05-05
  • 解決mysql的賦權(quán)操作之GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION問題

    解決mysql的賦權(quán)操作之GRANT ALL PRIVILEGES ON *.*

    這篇文章主要介紹了解決mysql的賦權(quán)操作之GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION問題,本文給大家分享兩種情況分析分享解決方案,感興趣的朋友一起看看吧
    2022-11-11
  • MySQL記錄操作日志常用的幾種實現(xiàn)方法

    MySQL記錄操作日志常用的幾種實現(xiàn)方法

    這篇文章主要介紹了MySQL記錄操作日志常用的幾種實現(xiàn)方法,文中介紹的方法包括啟用通用查詢?nèi)罩?、二進制日志、使用審計插件和觸發(fā)器,每種方法都有其適用場景和優(yōu)缺點,選擇合適的方法可以有效跟蹤和管理數(shù)據(jù)庫操作,需要的朋友可以參考下
    2024-11-11
  • mysql語法之DQL操作詳解

    mysql語法之DQL操作詳解

    大家好,本篇文章主要講的是mysql語法之DQL操作詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • MySQL死鎖使用詳解及檢測和避免方法

    MySQL死鎖使用詳解及檢測和避免方法

    這篇文章主要介紹了MySQL死鎖使用詳解及檢測和避免方法,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • MySQL延時復(fù)制庫方法詳解

    MySQL延時復(fù)制庫方法詳解

    我相信很多人都遭遇過MySQL主從復(fù)制延遲的問題,處理方案基本上就是你能搜索到的那些,那么我今天卻要說說如何讓MySQL延遲復(fù)制。對于剛組建的團隊來說,這可能會救了你的項目
    2020-02-02
  • mysql 根據(jù)時間范圍查詢數(shù)據(jù)的操作方法

    mysql 根據(jù)時間范圍查詢數(shù)據(jù)的操作方法

    這篇文章主要介紹了mysql 根據(jù)時間范圍查詢數(shù)據(jù)的操作方法,下面是一些常見的時間范圍查詢示例代碼,需要的朋友可以參考下
    2024-01-01
  • MySQL 8.0.18 穩(wěn)定版發(fā)布! Hash Join如期而至

    MySQL 8.0.18 穩(wěn)定版發(fā)布! Hash Join如期而至

    MySQL 8.0.18 穩(wěn)定版發(fā)布! Hash Join 如期而至,這篇文章帶大家快速瀏覽一下MySQL 8.0.18 穩(wěn)定版的各個亮點,感興趣的小伙伴們可以學(xué)習(xí)參考一下
    2019-10-10

最新評論