清空某個mysql表中所有內(nèi)容
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比山城網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式山城網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋山城地區(qū)。費用合理售后完善,十年實體公司更值得信賴。
delete
from
表名;
truncate
table
表名;
不帶where參數(shù)的delete語句可以刪除mysql表中所有內(nèi)容,使用truncate
table也可以清空mysql表中所有內(nèi)容。效率上truncate比delete快,但truncate刪除后不記錄mysql日志,不可以恢復數(shù)據(jù)。
delete的效果有點像將mysql表中所有記錄一條一條刪除到刪完,而truncate相當于保留mysql表的結(jié)構(gòu),重新創(chuàng)建了這個表,所有的狀態(tài)都相當于新表。
清空MySQL表,使ID重新從1自增的步驟如下:
我們需要準備的材料分別是:電腦、Mysql查詢器。
1、首先,打開Mysql查詢器,連接上相應的mysql連接。
2、鼠標右擊需要清空自增ID的表,選擇“設計表”,再將選項卡切換到“設置”欄,會發(fā)現(xiàn)雖然清空了表,但是自動遞增的數(shù)值仍然沒有變回1。
3、在自動遞增欄,將數(shù)值更改為數(shù)字1,并點擊“保存”按鈕。
4、此時會發(fā)現(xiàn),再新增數(shù)據(jù)時,ID自動從1開始遞增了。
你是指刪除數(shù)據(jù)后自增的int值不是連續(xù)的了嗎?這個的話可以先取消增值,然后保存,在勾選自增。(只是自己看著舒服了,不過涉及刪除的操作后就又那樣了,治標不治本)
這個字段只是為了保證數(shù)據(jù)的唯一性,實際應用中,不要在jsp頁面使用數(shù)據(jù)庫里面那個自增的字段。
也就是說不用管每條記錄的id會不會變咯?
方法一:使用select ...into outfile 和 load data infile ...
1.導出除了字段id的所有字段
2.清空表
3.導入數(shù)據(jù)
例子:
#建立測試表 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)
#插入測試數(shù)據(jù)
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的數(shù)據(jù)
mysql delete from lt1 where id=4;
Query OK, 1 row affected (0.08 sec)
#查看測試表的數(shù)據(jù),這時候id不連續(xù)。
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文件中導入數(shù)據(jù)到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
#現(xiàn)在id連續(xù)了
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)
#插入測試數(shù)據(jù),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)
#創(chuàng)建臨時表lt11
mysql create table lt11 select v1,v2 from lt1;
Query OK, 4 rows affected (0.11 sec)
Records: 4 Duplicates: 0 Warnings: 0
#臨時表的數(shù)據(jù)
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的數(shù)據(jù)插入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
#查看結(jié)果,id已經(jīng)連續(xù)。
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)
唔,這么辛苦,給個最佳至少啊...
由于是數(shù)據(jù)庫管理系統(tǒng)內(nèi)部機制限死的,題主這個需求沒有太好的解決方案。
可以考慮在經(jīng)過一段時間增刪數(shù)據(jù)出現(xiàn)數(shù)字不連續(xù)情況后,采取刪除自增ID字段,再重新添加自增ID字段來消除ID不連續(xù)的現(xiàn)象,也可以通過將數(shù)據(jù)導入含自增ID字段的空表等方法來消除數(shù)字間斷。
1.
支持設置自增列的值
ALTER
TABLE
table_name
AUTO_INCREMENT
=
1;
不過這種方式只能設置大于當前使用的值,不能設置小于等于當前已經(jīng)使用的自增列的值。myisam如果設置小于等于,則自增列的值會自動設置為當前最大值加1。innodb則不會改變。
2.通過TRUNCATE把自增列設置為0,從MySQL
5.0.13開始TRUNCATE就能重置自增列為0.myisam和innode都是如此。
TRUNCATE
TABLE
table_name;
注意:TRUNCATE
會清空表中數(shù)據(jù)
3.drop和create重建表方式重置自增列為0
DROP
TABLE
table_name;
CREATE
TABLE
table_name
{
...
};
分享題目:mysql自增怎么清楚,mysql重置自增
本文網(wǎng)址:http://www.rwnh.cn/article22/dsdjojc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供域名注冊、服務器托管、Google、營銷型網(wǎng)站建設、響應式網(wǎng)站、自適應網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)