MySQL Procedure: Drop All Tables in Database
If you ever need a progmatic way to drop all tables in a database, you can use the following stored procedure:
DELIMITER $$
DROP PROCEDURE IF EXISTS drop_all_tables_from
$$
CREATE PROCEDURE drop_all_tables_from
(IN schema_target VARCHAR(128))
BEGIN
DECLARE table_list TEXT;
SELECT
GROUP_CONCAT(`TABLE_NAME`)
INTO
table_list
FROM `information_schema`.`TABLES`
WHERE
`TABLE_SCHEMA` = schema_target;
IF table_list IS NOT NULL THEN
SET @drop_tables = CONCAT("DROP TABLE ", table_list);
PREPARE stmt FROM @drop_tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
END $$
DELIMITER ;
To use, simply call
the procedure with the database name as the parameter:
CALL drop_all_tables_from("database_name");
Note: This will drop all tables, without confirmation for the database name provided.