1、創(chuàng)建表時(shí)指定AUTO_INCREMENT自增值的初始值(即起始值):
創(chuàng)新互聯(lián)公司長(zhǎng)期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為邯山企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站設(shè)計(jì),邯山網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
CREATE TABLE XXX (ID INT(5) PRIMARY KEY AUTO_INCREMENT) AUTO_INCREMENT=100;
2、通過 ALTER TABLE 修改初始值(但是要大于表中的 AUTO_INCREMENT 自增值,否則設(shè)置無(wú)效):
ALTER TABLE XXX AUTO_INCREMENT=100;
3、如果自增序列的最大值被刪除了,則在插入新記錄時(shí),該值被重用:
就是說如果表中原本有AUTO_INCREMENT屬性值連續(xù)為78、100的值,但100這個(gè)數(shù)據(jù)被刪除了,下此再添加數(shù)據(jù)的時(shí)候自增值為101,100被重用了。
即使在你將整個(gè)表中的所有數(shù)據(jù)delete清空后,之前的自增序列最大值還是會(huì)被重用。
解決辦法是:
使用 ALTER TABLE XXX AUTO_INCREMENT=0; 重新設(shè)置自增初始值。
清空MySQL表,使ID重新從1自增的步驟如下:
我們需要準(zhǔn)備的材料分別是:電腦、Mysql查詢器。
1、首先,打開Mysql查詢器,連接上相應(yīng)的mysql連接。
2、鼠標(biāo)右擊需要清空自增ID的表,選擇“設(shè)計(jì)表”,再將選項(xiàng)卡切換到“設(shè)置”欄,會(huì)發(fā)現(xiàn)雖然清空了表,但是自動(dòng)遞增的數(shù)值仍然沒有變回1。
3、在自動(dòng)遞增欄,將數(shù)值更改為數(shù)字1,并點(diǎn)擊“保存”按鈕。
4、此時(shí)會(huì)發(fā)現(xiàn),再新增數(shù)據(jù)時(shí),ID自動(dòng)從1開始遞增了。
1.
支持設(shè)置自增列的值
ALTER
TABLE
table_name
AUTO_INCREMENT
=
1;
不過這種方式只能設(shè)置大于當(dāng)前使用的值,不能設(shè)置小于等于當(dāng)前已經(jīng)使用的自增列的值。myisam如果設(shè)置小于等于,則自增列的值會(huì)自動(dòng)設(shè)置為當(dāng)前最大值加1。innodb則不會(huì)改變。
2.通過TRUNCATE把自增列設(shè)置為0,從MySQL
5.0.13開始TRUNCATE就能重置自增列為0.myisam和innode都是如此。
TRUNCATE
TABLE
table_name;
注意:TRUNCATE
會(huì)清空表中數(shù)據(jù)
3.drop和create重建表方式重置自增列為0
DROP
TABLE
table_name;
CREATE
TABLE
table_name
{
...
};
設(shè)置自增列
MYSQL的自增列一定要是有索引的列,設(shè)置種子值要在表的后面設(shè)置
--mysql
-- 設(shè)置自增ID從N開始
CREATE TABLE empautoinc(
ID INT PRIMARY KEY AUTO_INCREMENT
) AUTO_INCREMENT = 100 ; --(設(shè)置自增ID從100開始)
insert into empautoinc(id) values(null);
Query OK, 1 row affected (0.00 sec)
mysql select * from empautoinc;
+-----+
| ID |
+-----+
| 100 |
+-----+
1 row in set (0.00 sec)
show table status like 'empautoinc'G;
*************************** 1. row ***************************
Name: empautoinc
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 1
Avg_row_length: 16384
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: 101
Create_time: 2016-10-27 01:50:32
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
設(shè)置自增列的步長(zhǎng),可以分為全局級(jí)別和會(huì)話級(jí)別
如果是會(huì)話級(jí)別,那么當(dāng)用戶新建一個(gè)會(huì)話的時(shí)候,那么步長(zhǎng)又回到了全局級(jí)別,所以mysql的步長(zhǎng)跟sqlserver的步長(zhǎng)有很大的不同
mysql不能設(shè)置為 表級(jí)別 的步長(zhǎng)
私信666領(lǐng)取資料
前提,需保證設(shè)置了自增:
alter table table1 add id int auto_increment primary key
方式1,修改現(xiàn)有自增ID:
alter table users AUTO_INCREMENT=10000;
方式2,建表時(shí)指定:
CREATE TABLE TABLE_1 ( ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, // ID列為無(wú)符號(hào)整型,該列值不可以為空,并不可以重復(fù),而且自增。 NAME VARCHAR(5) NOT NULL ) AUTO_INCREMENT = 100;(ID列從100開始自增)
方式3,從默認(rèn)值開始:
TRUNCATE TABLE table1
重置 MySQL 自增列 AUTO_INCREMENT 初時(shí)值 (注意,使用以下任意方法都會(huì)將現(xiàn)有數(shù)據(jù)刪除。)
方法一:
delete from tb1;
ALTER TABLE tbl AUTO_INCREMENT = 100; (好處,可以設(shè)置 AUTO_INCREMENT 為任意值開始) 提示:如果表列和數(shù)據(jù)很多, 速度會(huì)很慢,如90多萬(wàn)條,會(huì)在10分鐘以上。
方法二:
truncate tb1; (好處, 簡(jiǎn)單, AUTO_INCREMENT 值重新開始計(jì)數(shù).)
怎么重置mysql的自增列:
1. 支持設(shè)置自增列的值
ALTER TABLE table_name AUTO_INCREMENT = 1;
不過這種方式自能設(shè)置大于當(dāng)前使用的值,不能設(shè)置小于等于當(dāng)前已經(jīng)使用的自增列的值。myisam如果設(shè)置小于等于,則自增列的值會(huì)自動(dòng)設(shè)置為
當(dāng)前最大值加1。innodb則不會(huì)改變。
2.通過TRUNCATE把自增列設(shè)置為0,從MySQL 5.0.13開始TRUNCATE就能重置自增列為0.myisam和innode都是如此。
TRUNCATE TABLE table_name;
3.drop和create重建表方式重置自增列為0
DROP TABLE table_name;
CREATE TABLE table_name { ... };