1、在網(wǎng)上找了許久都沒有找到判斷表是否存在,然后模糊刪除的。但是最后找到了一個曲線救國的方法。
需求:刪除表中后綴是 _待刪除 的表
1、第一步,找到所有的這樣的表,并且拼裝好刪除表的sql
Select CONCAT( 'DROP TABLE IF EXISTS ', table_name, ';' )
FROM information_schema.tables
Where table_name LIKE '%_待刪除';
執(zhí)行結(jié)果
2、第二步:去一一執(zhí)行刪除語句,有能力的可以去寫一個腳本執(zhí)行什么的
3、sql解析
3-1 :concat 字符串拼接
3-2 :DROP TABLE IF EXISTS equi_accp_info__待刪除; --判斷這個表是否存在,如果存在就刪除
補(bǔ)充知識:mysql 判斷表字段是否存在,然后修改
我就廢話不多說了,大家還是直接看代碼吧~
-- 判斷 vrv_paw_rule 表是否存在 thresholdMin 字段,不存在則添加; 存在則修改字段類型
DELIMITER ??
DROP PROCEDURE IF EXISTS schema_change??
CREATE PROCEDURE schema_change()
BEGIN
IF NOT EXISTS (SELECT * FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'vrv_paw_rule' AND column_name = 'thresholdMin') THEN
ALTER TABLE vrv_paw_rule ADD COLUMN thresholdMin BIGINT;
ELSE
ALTER TABLE vrv_paw_rule MODIFY COLUMN thresholdMin BIGINT ;
END IF;
END??
DELIMITER ;
CALL schema_change();
delimit命令:
就是告訴mysql解釋器,該段命令是否已經(jīng)結(jié)束了,mysql是否可以執(zhí)行了,即改變輸入結(jié)束符。
默認(rèn)情況下,delimiter是分號“;”。
在命令行客戶端中,如果有一行命令以分號結(jié)束,
那么回車后,mysql將會執(zhí)行該命令。
但有時候,不希望MySQL這么做。因為可能輸入較多的語句,且語句中包含有分號。
默認(rèn)情況下,不可能等到用戶把這些語句全部輸入完之后,再執(zhí)行整段語句。
因為mysql一遇到分號,它就要自動執(zhí)行。
這種情況下,就可以使用delimiter,把delimiter后面換成其它符號,如//或$$。
此時,delimiter作用就是對整個小段語句做一個簡單的封裝。
此命令多用在定義子程序,觸發(fā)程序等mysql自己內(nèi)嵌小程序中。
以上這篇mysql判斷表是否存在然后批量刪除的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- MySQL刪除數(shù)據(jù),表文件大小依然沒變的原因
- MySQL刪除表的三種方式(小結(jié))
- MySQL 如何查找并刪除重復(fù)記錄的實現(xiàn)
- MySQL 快速刪除大量數(shù)據(jù)(千萬級別)的幾種實踐方案詳解
- 刪除mysql服務(wù)的具體方法
- MySQL 處理重復(fù)數(shù)據(jù)的方法(防止、刪除)
- MySQL對數(shù)據(jù)庫操作(創(chuàng)建、選擇、刪除)
- Window下如何恢復(fù)被刪除的Mysql8.0.17 Root賬戶及密碼
- Linux下徹底刪除Mysql 8.0服務(wù)的方法
- MySQL刪除表操作實現(xiàn)(delete、truncate、drop的區(qū)別)
- MySQL刪除了記錄不生效的原因排查