Как удалить все таблицы в базе данных, не удаляя саму базу данных?

Я хотел бы удалить все таблицы из базы данных, но не удалять саму базу данных. Является ли это возможным ? Я просто ищу более короткий путь, чем удаление базы данных и ее создание заново. Спасибо!

21
задан Misha Moroshko 16 August 2010 в 12:52
поделиться

6 ответов

Самое короткое - пересоздать базу данных. но если вы не хотите...

Это для MySQL/PHP. Не проверено, но что-то вроде этого.

$mysqli = new mysqli("host", "my_user", "my_password", "database");
$mysqli->query('SET foreign_key_checks = 0');
if ($result = $mysqli->query("SHOW TABLES"))
{
    while($row = $result->fetch_array(MYSQLI_NUM))
    {
        $mysqli->query('DROP TABLE IF EXISTS '.$row[0]);
    }
}

$mysqli->query('SET foreign_key_checks = 1');
$mysqli->close();
36
ответ дан 29 November 2019 в 19:59
поделиться

Простого способа сделать это не существует. Либо вам нужно будет заранее знать, что это за таблицы:

//edit Вы можете получить эту информацию с помощью запроса SHOW TABLE STATUS

$tables = array('users','otherdata');
foreach($tables as $table){
  db.execute("DROP TABLE "+$table);
}

либо вы можете уничтожить базу данных и создать ее заново пустой (это действительно не так много усилий!):

db.execute('DROP DATABASE SITEDATA');
db.execute('CREATE DATABASE SITEDATA');
5
ответ дан 29 November 2019 в 19:59
поделиться

Вам придется уничтожить каждую таблицу в базе данных отдельно, поэтому уничтожение базы данных и ее повторное создание будет самым коротким путем (и самым быстрым, если уж на то пошло).

2
ответ дан 29 November 2019 в 19:59
поделиться

Когда мне приходилось делать это в Oracle, я писал оператор select, который генерировал для меня операторы drop table. Что-то вроде:

Select 'DROP TABLE ' || table_name || ';' from user_tables;

Затем я мог передать вывод оператора select в файл. После выполнения этого оператора у меня будет файл, который удалит все мои таблицы за меня. Это будет выглядеть примерно так:

DROP TABLE TABLE1;

DROP TABLE TABLE2;

DROP TABLE TABLE3;

и т.д...

Я не специалист по mysql, но могу предположить, что в нем есть аналогичная возможность выбора всех таблиц для схемы, а также прямого вывода данных из SQL-запроса в файл.

2
ответ дан 29 November 2019 в 19:59
поделиться

В комментариях есть несколько решений: http://dev.mysql.com/doc/refman/5.1/en/drop-table.html

2
ответ дан 29 November 2019 в 19:59
поделиться

Используйте SHOW TABLE STATUS , чтобы получить все таблицы в вашей базе данных, затем переберите результат и сбросьте их одну за другой.

2
ответ дан 29 November 2019 в 19:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: