1、清空表,恢复到初始值:
站在用户的角度思考问题,与客户深入沟通,找到福山网站设计与福山网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广、域名与空间、网站空间、企业邮箱。业务覆盖福山地区。
2、修改为任意值:
上述语句中,table_name为表名,15为要修改的值,这样下次插入的数据的自增列的值就是15。
若修改的值与现有数据冲突,会自动修改为当前最大值+1。
如图所示,修改自增列id为11,虽然显示修改成功,但是id=11已经是现有值,再插入时会自动把自增列的值变为当前最大值(14)加1,也就是15
方法一: 如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数
truncate table
表名
方法二: dbcc checkident ('table_name', reseed,
new_reseed_value) 当前值设置为 new_reseed_value。如果自创建表后没有将行插入该表,则在执行 DBCC CHECKIDENT
后插入的第一行将使用 new_reseed_value 作为标识。否则,下一个插入的行将使用 new_reseed_value + 1。如果
new_reseed_value 的值小于标识列中的最大值,以后引用该表时将产生 2627 号错误信息。
方法二不会清空已有数据,操作比较灵活,不仅可以将自增值归零,也适用于删除大量连续行后,重新设置自增值并插入新的数据;或从新的值开始,当然不能和已有的冲突。
$sql="delete from $table_vote";
mysql_query($sql, $link);
$sql="alter table $table_vote auto_increment=1";
mysql_query($sql,
$link);
truncate语句,是清空表中的内容,包括自增主键的信息。truncate表后,表的主键就会重新从1开始。
语法:
TRUNCATE
TABLE
table1
delete from table;
ALTER TABLE tbl AUTO_INCREMENT = 100; 100可以改成你想要重新开始自增的值
也就是说不用管每条记录的id会不会变咯?
方法一:使用select ...into outfile 和 load data infile ...
1.导出除了字段id的所有字段
2.清空表
3.导入数据
例子:
#建立测试表 lt1
mysql create table lt1(id int(10) auto_increment,v1 int(10) default 0,v2 int(10
) default 0,primary key(id))engine=innodb,default charset=utf8;
Query OK, 0 rows affected (0.11 sec)
#插入测试数据
mysql insert into lt1(v1,v2) values(1,1),(2,2),(3,3),(4,4),(5,5);
Query OK, 5 rows affected (0.06 sec)
Records: 5 Duplicates: 0 Warnings: 0
#删除id=4的数据
mysql delete from lt1 where id=4;
Query OK, 1 row affected (0.08 sec)
#查看测试表的数据,这时候id不连续。
mysql select * from lt1;
+----+------+------+
| id | v1 | v2 |
+----+------+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
| 5 | 5 | 5 |
+----+------+------+
4 rows in set (0.00 sec)
#将表中的v1,v2字段导出到lt1.xls中。
mysql select v1,v2 from lt1 into outfile 'd:/localdmp/data/lt1.xls';
Query OK, 4 rows affected (0.03 sec)
#清空lt1
mysql truncate table lt1;
Query OK, 0 rows affected (0.08 sec)
#从lt1.xls文件中导入数据到lt1中,注意指定字段名(v1,v2)。
mysql load data infile 'd:/localdmp/data/lt1.xls' into table lt1(v1,v2);
Query OK, 4 rows affected (0.08 sec)
Records: 4 Deleted: 0 Skipped: 0 Warnings: 0
#现在id连续了
mysql select * from lt1;
+----+------+------+
| id | v1 | v2 |
+----+------+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
| 4 | 5 | 5 |
+----+------+------+
4 rows in set (0.00 sec)
方法二:
使用临时表create table ...select ... 和 insert ...select ...
例子:
#还是lt1表,先清空
mysql truncate table lt1;
Query OK, 0 rows affected (0.08 sec)
#插入测试数据,id 1-5
mysql insert into lt1(v1,v2) values(1,1),(2,2),(3,3),(4,4),(
Query OK, 5 rows affected (0.06 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql select * from lt1;
+----+------+------+
| id | v1 | v2 |
+----+------+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
| 4 | 4 | 4 |
| 5 | 5 | 5 |
+----+------+------+
5 rows in set (0.00 sec)
#把id=4删除
mysql delete from lt1 where id=4;
Query OK, 1 row affected (0.06 sec)
mysql select * from lt1;
+----+------+------+
| id | v1 | v2 |
+----+------+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
| 5 | 5 | 5 |
+----+------+------+
4 rows in set (0.00 sec)
#创建临时表lt11
mysql create table lt11 select v1,v2 from lt1;
Query OK, 4 rows affected (0.11 sec)
Records: 4 Duplicates: 0 Warnings: 0
#临时表的数据
mysql select *from lt11;
+------+------+
| v1 | v2 |
+------+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 5 | 5 |
+------+------+
4 rows in set (0.00 sec)
#清空lt1
mysql truncate table lt1;
Query OK, 0 rows affected (0.06 sec)
#将临时表lt11的数据插入lt1中
mysql insert into lt1 (v1,v2) select v1,v2 from lt11;
Query OK, 4 rows affected (0.06 sec)
Records: 4 Duplicates: 0 Warnings: 0
#查看结果,id已经连续。
mysql select *from lt1;
+----+------+------+
| id | v1 | v2 |
+----+------+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
| 4 | 5 | 5 |
+----+------+------+
4 rows in set (0.00 sec)
唔,这么辛苦,给个最佳至少啊...