mysql刪除所有表,不刪除數據庫——刪庫跑路小腳本,用存儲過程刪除全部表

創建存儲過程腳本

DELIMITER $$
CREATE PROCEDURE `drop_all_tables`()
BEGIN
    DECLARE count INT;
    DECLARE tb VARCHAR(200);
    DECLARE dbname VARCHAR(200) DEFAULT DATABASE();
    DECLARE tbnames cursor FOR SELECT CONCAT('DROP TABLE `',dbname,'`.`',table_name,'`') FROM information_schema.tables WHERE table_schema = dbname;
    SELECT count(*) INTO count FROM information_schema.tables WHERE table_schema = dbname;
    OPEN tbnames;
    loop_i:LOOP
        IF count = 0 THEN 
            LEAVE loop_i;
        END IF;
        FETCH tbnames INTO tb;
        SET @tb = tb;
        PREPARE stmt FROM @tb;  
        EXECUTE stmt;  
        DEALLOCATE PREPARE stmt;
        SET count = count - 1;
	END LOOP;
    CLOSE tbnames;
END$$
DELIMITER ;

使用時調用存儲過程

call drop_all_tables();

 

mysql命令行下效果:

mysql> use test;# 要創建在指定的數據庫中才能被調用到
Database changed
mysql> DELIMITER $$  
mysql> CREATE PROCEDURE `drop_all_tables`()  
    -> BEGIN  
    ->     DECLARE count INT;  
    ->     DECLARE tb VARCHAR(200);  
    ->     DECLARE dbname VARCHAR(200) DEFAULT DATABASE();  
    ->     DECLARE tbnames cursor FOR SELECT CONCAT('DROP TABLE `',dbname,'`.`',table_name,'`') FROM information_schema.tables WHERE table_schema = dbname;  
    ->     SELECT count(*) INTO count FROM information_schema.tables WHERE table_schema = dbname;  
    ->     OPEN tbnames;  
    ->     loop_i:LOOP  
    ->         IF count = 0 THEN   
    ->             LEAVE loop_i;  
    ->         END IF;  
    ->         FETCH tbnames INTO tb;  
    ->         SET @tb = tb;  
    ->         PREPARE stmt FROM @tb;    
    ->         EXECUTE stmt;    
    ->         DEALLOCATE PREPARE stmt;  
    ->         SET count = count - 1;  
    ->     END LOOP;  
    ->     CLOSE tbnames;  
    -> END$$  
Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER ;
mysql> call drop_all_tables();
Query OK, 1 row affected (0.00 sec)

 

函數計算日期間工作時長

https://blog.csdn.net/Vincent_Field/article/details/88410161

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章