詳細(xì)聊聊MySQL中auto_increment有什么作用
問(wèn)題來(lái)源
很多時(shí)候,MySQL語(yǔ)句中會(huì)出現(xiàn)【auto_increment】這個(gè)詞匯,大多數(shù)時(shí)候,表都是自動(dòng)生成的,剛開始學(xué)習(xí)MySQL數(shù)據(jù)庫(kù)時(shí)會(huì)學(xué)習(xí)到,后來(lái),漸漸地可能會(huì)忘記,那么這個(gè)語(yǔ)句的作用到底是什么意思?下面,來(lái)匯總一下:
解釋
auto_increment是用于主鍵自動(dòng)增長(zhǎng)的,從1開始增長(zhǎng),當(dāng)你把第一條記錄刪除時(shí),再插入第二條數(shù)據(jù)時(shí),主鍵值是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)建一個(gè)表test,id為自增列
– 執(zhí)行語(yǔ)句 insert into test (name) values (‘名字’);
– 就可以插入一行數(shù)據(jù)為: 1 ‘名字’
注意事項(xiàng)
在使用AUTO_INCREMENT時(shí),應(yīng)注意以下幾點(diǎn):
1、AUTO_INCREMENT是數(shù)據(jù)列的一種屬性,只適用于整數(shù)類型數(shù)據(jù)列。
2、設(shè)置AUTO_INCREMENT屬性的數(shù)據(jù)列應(yīng)該是一個(gè)正數(shù)序列,所以應(yīng)該把該數(shù)據(jù)列聲明為UNSIGNED,這樣序列的編號(hào)個(gè)可增加一倍。
3、AUTO_INCREMENT數(shù)據(jù)列必須有唯一索引,以避免序號(hào)重復(fù)(即是主鍵或者主鍵的一部分)。
AUTO_INCREMENT數(shù)據(jù)列必須具備NOT NULL屬性。
4、AUTO_INCREMENT數(shù)據(jù)列序號(hào)的最大值受該列的數(shù)據(jù)類型約束,如TINYINT數(shù)據(jù)列的最大編號(hào)是127,如加上UNSIGNED,則最大為255。一旦達(dá)到上限,AUTO_INCREMENT就會(huì)失效。
5、當(dāng)進(jìn)行全表刪除時(shí),MySQL AUTO_INCREMENT會(huì)從1重新開始編號(hào)。
這是因?yàn)檫M(jìn)行全表操作時(shí),MySQL(和PHP搭配之最佳組合)實(shí)際是做了這樣的優(yōu)化操作:先把數(shù)據(jù)表里的所有數(shù)據(jù)和索引刪除,然后重建數(shù)據(jù)表。
如果想刪除所有的數(shù)據(jù)行又想保留序列編號(hào)信息,可這樣用一個(gè)帶where的delete命令以抑制MySQL(和PHP搭配之最佳組合)的優(yōu)化:delete from table_name where 1;
可用last_insert_id()獲取剛剛自增過(guò)的值。
說(shuō)明:部分內(nèi)容來(lái)自搜索整理,目的是為了記錄總結(jié),學(xué)習(xí)使用~
總結(jié)
到此這篇關(guān)于MySQL中auto_increment有什么作用的文章就介紹到這了,更多相關(guān)MySQL中auto_increment作用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL自增鎖(Auto-Increment Lock) 的原理使用
- mysql?自增長(zhǎng)約束(auto_increment)的使用
- MySQL自增列解析(Auto_increment)
- MySQL中使用auto_increment修改初始值和步長(zhǎng)
- MySQL AUTO_INCREMENT 主鍵自增長(zhǎng)的實(shí)現(xiàn)
- MySQL 序列 AUTO_INCREMENT詳解及實(shí)例代碼
- MySQL查詢和修改auto_increment的方法
- 解析mysql中的auto_increment的問(wèn)題
- 怎么重置mysql的自增列AUTO_INCREMENT初時(shí)值
- MySQL 設(shè)置AUTO_INCREMENT 無(wú)效的問(wèn)題解決
相關(guān)文章
MySql如何使用not in實(shí)現(xiàn)優(yōu)化
這篇文章主要介紹了MySql如何使用not in實(shí)現(xiàn)優(yōu)化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03MySQL數(shù)據(jù)庫(kù)CPU飆升到100%的詳細(xì)解決方案
在監(jiān)控線上數(shù)據(jù)庫(kù)的運(yùn)行是否安全、正常的過(guò)程中,cpu使用率是一個(gè)重要的指標(biāo),一旦cpu使用率飆升至90%+甚至達(dá)到100%,必然會(huì)對(duì)數(shù)據(jù)庫(kù)的正常工作產(chǎn)生影響,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)CPU飆升到100%的詳細(xì)解決方案,需要的朋友可以參考下2023-05-05Mysql varchar大小長(zhǎng)度問(wèn)題介紹
如果被 varchar 超過(guò)上述的 b 規(guī)則,被強(qiáng)轉(zhuǎn)成 text 類型,則每個(gè)字段占用定義長(zhǎng)度為 11 字節(jié),當(dāng)然這已經(jīng)不是 varchar 了2011-10-10Mybatis中的動(dòng)態(tài)SQL語(yǔ)句解析
這篇文章主要介紹了Mybatis中的動(dòng)態(tài)SQL語(yǔ)句解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11mysql5.7版本因?yàn)閟ql_mode設(shè)置導(dǎo)致的問(wèn)題以及解決
這篇文章主要介紹了mysql5.7版本因?yàn)閟ql_mode設(shè)置導(dǎo)致的問(wèn)題以及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09