1. 程式人生 > 資料庫 >mysql判斷表是否存在然後批量刪除的操作

mysql判斷表是否存在然後批量刪除的操作

1、在網上找了許久都沒有找到判斷表是否存在,然後模糊刪除的。但是最後找到了一個曲線救國的方法。

需求:刪除表中字尾是 _待刪除 的表

1、第一步,找到所有的這樣的表,並且拼裝好刪除表的sql

Select CONCAT( 'DROP TABLE IF EXISTS ',table_name,';' ) 
FROM information_schema.tables 
Where table_name LIKE '%_待刪除';

執行結果

mysql判斷表是否存在然後批量刪除的操作

2、第二步:去一一執行刪除語句,有能力的可以去寫一個指令碼執行什麼的

3、sql解析

3-1 :concat 字串拼接

3-2 :DROP TABLE IF EXISTS equi_accp_info__待刪除; --判斷這個表是否存在,如果存在就刪除

補充知識: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直譯器,該段命令是否已經結束了,mysql是否可以執行了,即改變輸入結束符。

預設情況下,delimiter是分號“;”。

在命令列客戶端中,如果有一行命令以分號結束,

那麼回車後,mysql將會執行該命令。

但有時候,不希望MySQL這麼做。因為可能輸入較多的語句,且語句中包含有分號。

預設情況下,不可能等到使用者把這些語句全部輸入完之後,再執行整段語句。

因為mysql一遇到分號,它就要自動執行。

這種情況下,就可以使用delimiter,把delimiter後面換成其它符號,如//或$$。

此時,delimiter作用就是對整個小段語句做一個簡單的封裝。

此命令多用在定義子程式,觸發程式等mysql自己內嵌小程式中。

以上這篇mysql判斷表是否存在然後批量刪除的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。