Search code examples
mysqlsql-drop

Is there a MySQL command to implement something like "drop tables except t1,b2"?


I want to keep t1,t2 and drop all other tables.


Solution

  • You can use information_schema to find table names, and even format the results as a bunch of DROP statements.

    SELECT CONCAT('DROP TABLE ', TABLE_NAME, '; ')
      FROM information_schema.tables
      WHERE table_schema = DATABASE() AND table_name NOT IN ('foo', 'bar', 'baz');
    

    (The DATABASE() function returns the currently use'd database.)

    Using PREPARE and EXECUTE, you could even avoid copy & paste, and (in MySQL 5.0.13 and later) write a stored procedure to do this.