刪除的辦法是執(zhí)行truncat方法,只是不需要每次手動(dòng)的輸入truncate命令進(jìn)行刪除。
成都創(chuàng)新互聯(lián)公司專注于延長企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城建設(shè)。延長網(wǎng)站建設(shè)公司,為延長等地區(qū)提供建站服務(wù)。全流程按需定制,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
通過sql命令的方式生成所有的truncate語句并寫入到.sql腳本文件中,然后執(zhí)行腳本即可完成刪除操作,并且保留了表結(jié)構(gòu)。
生成truncate命令的sql語句為:
SELECTCONCAT('TRUNCATETABLE',TABLE_NAME,';')FROMinformation_schema.TABLESWHERETABLE_SCHEMA='test'intooutfile'/tmp/truncate_test.sql';。
然后將生成的.sql腳本拷貝到當(dāng)前文件夾下面:
mv/tmp/truncate_test.sql$current_dir/。
然后執(zhí)行.sql腳本將數(shù)據(jù)庫中所有表中數(shù)據(jù)刪除:
source$current_dir/truncate_test.sql。
注意:
在進(jìn)行select....intooutfile......操作時(shí),默認(rèn)只能將文件寫入到tmp路徑下,可以不用將tmp文件夾下面的.sql腳本移動(dòng)到當(dāng)前文件夾下,直接在tmp路徑下執(zhí)行.sql腳本即可。
擴(kuò)展資料:
常見的刪除數(shù)據(jù)庫表中數(shù)據(jù)的方法是通過delete或者truncate的方法進(jìn)行刪除操作,如果刪除的是表中某一條或者部分?jǐn)?shù)據(jù)的話適合用delete操作進(jìn)行刪除,如果要?jiǎng)h除表中所有的數(shù)據(jù)的話,適合是同truncate進(jìn)行刪除操作。
如果不需要保留數(shù)據(jù)庫中所有表的結(jié)構(gòu),那么答案很簡單,執(zhí)行命令dropdatabase數(shù)據(jù)庫名即可達(dá)到目的。
但是如果需要保留該數(shù)據(jù)庫中所有表的結(jié)構(gòu),只想刪除所有表中的數(shù)據(jù),多執(zhí)行幾次truncate可以達(dá)到。
參考資料:百度百科-數(shù)據(jù)表
Mysql數(shù)據(jù)庫的常用備份方法是使用使用實(shí)用程序mysqldump, 其命令格式如下
# mysqldump [options] database [tables]
其參數(shù)的含義為:
options:代表mysqldump的選項(xiàng),通過mysqldump –help可以查到。
database: 代表將要備份的數(shù)據(jù)庫
tables: 代表將要備份的表,如果不指定任何表,則備份整個(gè)數(shù)據(jù)庫。
使用 mysqldump進(jìn)行備份非常簡單,如果要備份數(shù)據(jù)庫” phpbb_db_backup ”,使用命令:
#mysqldump –u -p phpbb_db_backup /usr/backups/mysql/ phpbb_db_backup.2005.5.6
還可以使用gzip命令對(duì)備份文件進(jìn)行壓縮:
#mysqldump phpbb_db_backup | gzip /usr/backups/mysql/ phpbb_db_backup.2005.5.6。gz
恢復(fù)數(shù)據(jù)使用命令:
#mysql –u -p phpbb_db_backup /usr/backups/mysql/phpbb_db_backup.2005
在大多數(shù)情況下,軟硬件故障通過數(shù)據(jù)備份機(jī)制來處理。多數(shù)數(shù)據(jù)庫都自帶有內(nèi)置的工具自動(dòng)完成整個(gè)過程,所以這方面的工作相對(duì)輕松,也不會(huì)出錯(cuò)。但麻煩卻來自另一面:阻止外來黑客入侵竊取或破壞數(shù)據(jù)庫中的信息。不幸的是,一般沒有自動(dòng)工具解決這一問題;而且,這需要管理員手工設(shè)置障礙來阻止黑客,確保公司數(shù)據(jù)的安全
樂觀鎖與悲觀鎖不同的是,它是一種邏輯上的鎖,而不需要數(shù)據(jù)庫提供鎖機(jī)制來支持
當(dāng)數(shù)據(jù)很重要,回滾或重試一次需要很大的開銷時(shí),需要保證操作的ACID性質(zhì),此時(shí)應(yīng)該采用悲觀鎖
而當(dāng)數(shù)據(jù)對(duì)即時(shí)的一致性要求不高,重試一次不太影響整體性能時(shí),可以采用樂觀鎖來保證最終一致性,同時(shí)有利于提高并發(fā)性
通常,樂觀鎖采用版本號(hào)/時(shí)間戳的形式實(shí)現(xiàn):給數(shù)據(jù)額外增加一個(gè)版本號(hào)字段進(jìn)行控制;更新時(shí),若提交的數(shù)據(jù)所帶的版本號(hào)與當(dāng)前記錄的版本號(hào)一致,則允許變更執(zhí)行并更新版本號(hào);若不一致,則意味著產(chǎn)生沖突,根據(jù)業(yè)務(wù)需求直接丟棄并返回失敗,或者嘗試合并
在MySQL的實(shí)踐中,常見的一種使用樂觀鎖的方法,是在需要使用樂觀鎖的表中,新增一個(gè)version字段
例如:
create table product_amount (
id int not null primary key auto_increment,
product_name varchar(64) not null,
selling_amount int not null,
storing_amount int not null,
version int not null
);
當(dāng)需要更新銷售中的商品數(shù)量(selling_amount)時(shí),使用如下的SQL語句:
update product_amount set selling_amount = #{selling_amount}, version = #{new_version} where id=#{id} and version = #{old_version};
若該語句返回1,則表示更新成功;若返回0,則表示前后的version不一致,產(chǎn)生沖突,更新失敗
對(duì)于更新倉庫中的商品數(shù)據(jù)(storing_amount)時(shí),也是同理
不過,這樣為每行記錄都統(tǒng)一設(shè)置一個(gè)version字段的樂觀鎖方式,存在一個(gè)問題:上例中,如果同時(shí)需要單獨(dú)對(duì)selling_amount及storing_amount進(jìn)行update(兩條SQL語句分別單獨(dú)執(zhí)行),那么后執(zhí)行的一條會(huì)因?yàn)橄葓?zhí)行的一條更新了version字段而失敗,而這種失敗顯然是沒有必要的,白白浪費(fèi)了開銷
一種比較好的方式是為每個(gè)需要樂觀鎖的字段單獨(dú)設(shè)置版本號(hào),例如對(duì)上例的改造:
create table product_amount (
id int not null primary key auto_increment,
product_name varchar(64) not null,
selling_amount int not null,
selling_version int not null,
storing_amount int not null,
storing_version int not null
);
selling_amount和storing_amount分別擁有自己的樂觀鎖版本號(hào)(selling_version和storing_version),更新時(shí)分別只關(guān)注自己的版本號(hào),這樣就不會(huì)因?yàn)榘姹咎?hào)被其它字段修改而失敗,提高了并發(fā)性