1. mysql的auto_increment的特性


之前學過oracle,現在在學習mysql, 剛好兩個數據庫可以對比一下, 

oracle的自增使用的是序列sequence,插入數據時使用sequence, 

而mysql使用的是auto_increment,來實現自動增加,是跟着字段走的,范圍是字段的訪問,如果字段id 類型為 bigint, 占了8字節, 范圍是2^(2*8) 無符號的取值范圍

》》》》》》》》》》》》》》》》》

引用他人的

創建數據表時,經常會出現auto_increment這個詞,下面就來了解一下它吧。

MySQL的中AUTO_INCREMENT類型的屬性用於為一個表中記錄自動生成ID功能,可在一定程度上代替Oracle,PostgreSQL等數據庫中的sequence。

在數據庫應用,我們經常要用到唯一編號,以標識記錄。在MySQL中可通過數據列的AUTO_INCREMENT屬性來自動生成。

可在建表時可用“AUTO_INCREMENT=n”選項來指定一個自增的初始值。
可用alter table table_name AUTO_INCREMENT=n命令來重設自增的起始值。

當插入記錄時,如果為AUTO_INCREMENT數據列明確指定了一個數值,則會出現兩種情況,
情況一,如果插入的值與已有的編號重復,則會出現出錯信息,因為AUTO_INCREMENT數據列的值必須是唯一的;
情況二,如果插入的值大於已編號的值,則會把該插入到數據列中,並使在下一個編號將從這個新值開始遞增。也就是說,可以跳過一些編號。
如果自增序列的最大值被刪除了,則在插入新記錄時,該值被重用。
如果用UPDATE命令更新自增列,如果列值與已有的值重復,則會出錯。如果大於已有值,則下一個編號從該值開始遞增。


AUTO_INCREMENT是數據列的一種屬性,只適用於整數類型數據列。
設置AUTO_INCREMENT屬性的數據列應該是一個正數序列,所以應該把該數據列聲明為UNSIGNED,這樣序列的編號個可增加一倍。
AUTO_INCREMENT數據列必須有唯一索引,以避免序號重復(即是主鍵或者主鍵的一部分)。
AUTO_INCREMENT數據列必須具備NOT NULL屬性。
AUTO_INCREMENT數據列序號的最大值受該列的數據類型約束,如TINYINT數據列的最大編號是127,如加上UNSIGNED,則最大為255。一旦達到上限,AUTO_INCREMENT就會失效。

當進行全表刪除時,MySQL AUTO_INCREMENT會從1重新開始編號。

這是因為進行全表操作時,MySQL(和PHP搭配之最佳組合)實際是做了這樣的優化操作:先把數據表里的所有數據和索引刪除,然后重建數據表。

如果想刪除所有的數據行又想保留序列編號信息,可這樣用一個帶where的delete命令以抑制MySQL(和PHP搭配之最佳組合)的優化:delete from table_name where 1;

可用last_insert_id()獲取剛剛自增過的值。

 

 

》https://www.cnblogs.com/jingjingzhou/p/6015425.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM