1. 程式人生 > >mysql auto_increment 自動增長 清空表 自動增長情況

mysql auto_increment 自動增長 清空表 自動增長情況

 

 

清空表情況:

mysql> delete from t20;
Query OK, 7 rows affected (0.00 sec)

mysql> show create table t20\G;
*************************** 1. row ***************************
       Table: t20
Create Table: CREATE TABLE `t20` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(16) DEFAULT
NULL, UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 1 row in set (0.00 sec)

 

清空表後   AUTO_INCREMENT=11 沒有改變 自增長欄位的值沒有置為1

 

對於自增欄位,在用delete刪除後,再插入值,該欄位仍然按照刪除前的位置增長

從11開始

 

mysql> insert into t20(name) values('mike');
Query OK, 
1 row affected (0.01 sec) mysql> select * from t20; +----+------+ | id | name | +----+------+ | 11 | mike | +----+------+ 1 row in set (0.00 sec)

 

清空表不要用delete清 
delete 用在和where語句配合
delete from t20 where id=3;
用在刪除固定的記錄

用truncate
truncate是直接清空表,在刪除大表時用它


mysql> show create table t20\G;
***************************
1. row *************************** Table: t20 Create Table: CREATE TABLE `t20` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(16) DEFAULT NULL, UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 1 row in set (0.00 sec) ERROR: No query specified mysql> truncate t20; Query OK, 0 rows affected (0.02 sec)

 


自增長欄位沒有了

 

mysql> show create table t20\G;
*************************** 1. row ***************************
       Table: t20
Create Table: CREATE TABLE `t20` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(16) DEFAULT NULL,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

再插入記錄
mysql> insert into t20(name) values('jack');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t20;
+----+------+
| id | name |
+----+------+
|  1 | jack |
+----+------+
1 row in set (0.00 sec)

 

從1開始了

 

 

清空表:

 

delete from t1; #如果有自增id,新增的資料,仍然是以刪除前的最後一樣作為起始。

 

truncate table t1;資料量大,刪除速度比上一條快,且直接從零開始,