詳細聊聊MySQL中auto_increment有什么作用
問題來源
很多時候,MySQL語句中會出現(xiàn)【auto_increment】這個詞匯,大多數(shù)時候,表都是自動生成的,剛開始學習MySQL數(shù)據(jù)庫時會學習到,后來,漸漸地可能會忘記,那么這個語句的作用到底是什么意思?下面,來匯總一下:
解釋
auto_increment是用于主鍵自動增長的,從1開始增長,當你把第一條記錄刪除時,再插入第二條數(shù)據(jù)時,主鍵值是2,不是1。
例如:
create table test ( id int(10) not null auto_increment, – 表示自增列 name varchar(20) not null, primary key(id) )
auto_increment = 1; – 表示自增起始大小-- 這樣就可以創(chuàng)建一個表test,id為自增列
– 執(zhí)行語句 insert into test (name) values (‘名字’);
– 就可以插入一行數(shù)據(jù)為: 1 ‘名字’

注意事項
在使用AUTO_INCREMENT時,應注意以下幾點:
1、AUTO_INCREMENT是數(shù)據(jù)列的一種屬性,只適用于整數(shù)類型數(shù)據(jù)列。
2、設置AUTO_INCREMENT屬性的數(shù)據(jù)列應該是一個正數(shù)序列,所以應該把該數(shù)據(jù)列聲明為UNSIGNED,這樣序列的編號個可增加一倍。
3、AUTO_INCREMENT數(shù)據(jù)列必須有唯一索引,以避免序號重復(即是主鍵或者主鍵的一部分)。
AUTO_INCREMENT數(shù)據(jù)列必須具備NOT NULL屬性。
4、AUTO_INCREMENT數(shù)據(jù)列序號的最大值受該列的數(shù)據(jù)類型約束,如TINYINT數(shù)據(jù)列的最大編號是127,如加上UNSIGNED,則最大為255。一旦達到上限,AUTO_INCREMENT就會失效。
5、當進行全表刪除時,MySQL AUTO_INCREMENT會從1重新開始編號。
這是因為進行全表操作時,MySQL(和PHP搭配之最佳組合)實際是做了這樣的優(yōu)化操作:先把數(shù)據(jù)表里的所有數(shù)據(jù)和索引刪除,然后重建數(shù)據(jù)表。
如果想刪除所有的數(shù)據(jù)行又想保留序列編號信息,可這樣用一個帶where的delete命令以抑制MySQL(和PHP搭配之最佳組合)的優(yōu)化:delete from table_name where 1;
可用last_insert_id()獲取剛剛自增過的值。
說明:部分內(nèi)容來自搜索整理,目的是為了記錄總結(jié),學習使用~
總結(jié)
到此這篇關于MySQL中auto_increment有什么作用的文章就介紹到這了,更多相關MySQL中auto_increment作用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySql如何使用not in實現(xiàn)優(yōu)化
這篇文章主要介紹了MySql如何使用not in實現(xiàn)優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03
MySQL數(shù)據(jù)庫CPU飆升到100%的詳細解決方案
在監(jiān)控線上數(shù)據(jù)庫的運行是否安全、正常的過程中,cpu使用率是一個重要的指標,一旦cpu使用率飆升至90%+甚至達到100%,必然會對數(shù)據(jù)庫的正常工作產(chǎn)生影響,下面這篇文章主要給大家介紹了關于MySQL數(shù)據(jù)庫CPU飆升到100%的詳細解決方案,需要的朋友可以參考下2023-05-05
mysql5.7版本因為sql_mode設置導致的問題以及解決
這篇文章主要介紹了mysql5.7版本因為sql_mode設置導致的問題以及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-09-09

