在MySQL中,要批量刪除數(shù)據(jù)庫(kù),可以使用循環(huán)和動(dòng)態(tài)SQL語(yǔ)句。這里是一個(gè)示例,展示了如何使用存儲(chǔ)過(guò)程來(lái)批量刪除以特定前綴開頭的數(shù)據(jù)庫(kù):
DELIMITER $$
CREATE PROCEDURE DropDatabasesWithPrefix(IN dbPrefix VARCHAR(255))
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE dbName VARCHAR(255);
DECLARE cur CURSOR FOR SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME LIKE CONCAT(dbPrefix, '%');
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur;
read_loop: LOOP
FETCH cur INTO dbName;
IF done THEN
LEAVE read_loop;
END IF;
SET @sql = CONCAT('DROP DATABASE ', dbName);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END LOOP;
CLOSE cur;
END$$
DELIMITER ;
這個(gè)存儲(chǔ)過(guò)程接受一個(gè)參數(shù)dbPrefix
,表示要?jiǎng)h除的數(shù)據(jù)庫(kù)名稱的前綴。
CALL DropDatabasesWithPrefix('myprefix_');
這將刪除所有以myprefix_
開頭的數(shù)據(jù)庫(kù)。請(qǐng)注意,在執(zhí)行此操作之前確保備份好相關(guān)數(shù)據(jù),因?yàn)閯h除操作是不可逆的。