亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL AUTO_INCREMENT 主鍵自增長(zhǎng)的實(shí)現(xiàn)

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

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

通過(guò)給字段添加 AUTO_INCREMENT 屬性來(lái)實(shí)現(xiàn)主鍵自增長(zhǎng)。語(yǔ)法格式如下:

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

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

例 1

定義數(shù)據(jù)表 tb_student,指定表中 id 字段遞增,SQL 語(yǔ)句和運(yùn)行結(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)

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

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

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

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

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

拓展

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

指定自增字段初始值

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

例 2

下面創(chuàng)建表 tb_student2,指定主鍵從 100 開(kāi)始自增長(zhǎng)。SQL 語(yǔ)句和運(yùn)行結(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 開(kāi)始自動(dòng)增長(zhǎng)。

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

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

例 3

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

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 語(yǔ)句如下:

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

此時(shí),表 tb_student3 中已經(jīng)有了(1,1,1)這條記錄,這時(shí)再執(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 的記錄,所以報(bào) Duplicate key error(唯一鍵沖突)。在這之后,再插入新的數(shù)據(jù)時(shí),自增 id 就是 3,這樣就出現(xiàn)了自增字段值不連續(xù)的情況。

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

相關(guān)文章

  • Mysql數(shù)據(jù)庫(kù)的QPS和TPS的意義和計(jì)算方法

    Mysql數(shù)據(jù)庫(kù)的QPS和TPS的意義和計(jì)算方法

    今天小編就為大家分享一篇關(guān)于Mysql數(shù)據(jù)庫(kù)的QPS和TPS的意義和計(jì)算方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Mysql報(bào)錯(cuò)Duplicate?entry?'值'?for?key?'字段名'的解決方法

    Mysql報(bào)錯(cuò)Duplicate?entry?'值'?for?key?'字段名&

    今天在使用數(shù)據(jù)庫(kù)的過(guò)程中,發(fā)現(xiàn)一直報(bào)Duplicate?entry?'值'?for?key?'字段名'的錯(cuò)誤,所以下面這篇文章主要給大家介紹了關(guān)于Mysql報(bào)錯(cuò)Duplicate?entry?'值'?for?key?'字段名'的解決方法,需要的朋友可以參考下
    2023-04-04
  • MYSQL數(shù)據(jù)庫(kù)中的現(xiàn)有表增加新字段(列)

    MYSQL數(shù)據(jù)庫(kù)中的現(xiàn)有表增加新字段(列)

    MYSQL 增加新字段的sql語(yǔ)句,需要的朋友可以參考下。
    2010-05-05
  • MySQL數(shù)據(jù)遷移至達(dá)夢(mèng)數(shù)據(jù)庫(kù)的詳細(xì)教程

    MySQL數(shù)據(jù)遷移至達(dá)夢(mèng)數(shù)據(jù)庫(kù)的詳細(xì)教程

    這篇文章主要為大家詳細(xì)介紹了MySQL數(shù)據(jù)遷移至達(dá)夢(mèng)數(shù)據(jù)庫(kù)的詳細(xì)教程,文中通過(guò)示例圖片進(jìn)行了詳細(xì)的介紹,有需要的小伙伴可以參考一下
    2025-03-03
  • 在IntelliJ IDEA中使用Java連接MySQL數(shù)據(jù)庫(kù)的方法詳解

    在IntelliJ IDEA中使用Java連接MySQL數(shù)據(jù)庫(kù)的方法詳解

    這篇文章主要介紹了在IntelliJ IDEA中使用Java連接MySQL數(shù)據(jù)庫(kù)的方法詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 查一次left?join沒(méi)有走索引以及原因分析

    查一次left?join沒(méi)有走索引以及原因分析

    這篇文章主要介紹了查一次left?join沒(méi)有走索引以及原因分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 全面講解MySQL子查詢

    全面講解MySQL子查詢

    子查詢就是將一個(gè)查詢結(jié)果作為判斷條件或者作為一張?zhí)摂M表在這個(gè)結(jié)果的基礎(chǔ)上進(jìn)行另一個(gè)查詢,本文就詳細(xì)的介紹了MySQL子查詢 ,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • mysql 悲觀鎖與樂(lè)觀鎖的理解及應(yīng)用分析

    mysql 悲觀鎖與樂(lè)觀鎖的理解及應(yīng)用分析

    這篇文章主要介紹了mysql 悲觀鎖與樂(lè)觀鎖的理解及應(yīng)用,結(jié)合實(shí)例形式分析了MySQL數(shù)據(jù)庫(kù)悲觀鎖與樂(lè)觀鎖相關(guān)概念、原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • MySQL如何刪除mysql數(shù)據(jù)表內(nèi)的重復(fù)數(shù)據(jù)

    MySQL如何刪除mysql數(shù)據(jù)表內(nèi)的重復(fù)數(shù)據(jù)

    這篇文章主要介紹了MySQL如何刪除mysql數(shù)據(jù)表內(nèi)的重復(fù)數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • mysql5.7 設(shè)置遠(yuǎn)程訪問(wèn)的實(shí)現(xiàn)

    mysql5.7 設(shè)置遠(yuǎn)程訪問(wèn)的實(shí)現(xiàn)

    這篇文章主要介紹了mysql5.7 設(shè)置遠(yuǎn)程訪問(wèn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02

最新評(píng)論