Я хотел бы удалить все таблицы из базы данных, но не удалять саму базу данных. Является ли это возможным ? Я просто ищу более короткий путь, чем удаление базы данных и ее создание заново. Спасибо!
Самое короткое - пересоздать базу данных. но если вы не хотите...
Это для 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();
Простого способа сделать это не существует. Либо вам нужно будет заранее знать, что это за таблицы:
//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');
Вам придется уничтожить каждую таблицу в базе данных отдельно, поэтому уничтожение базы данных и ее повторное создание будет самым коротким путем (и самым быстрым, если уж на то пошло).
Когда мне приходилось делать это в Oracle, я писал оператор select, который генерировал для меня операторы drop table. Что-то вроде:
Select 'DROP TABLE ' || table_name || ';' from user_tables;
Затем я мог передать вывод оператора select в файл. После выполнения этого оператора у меня будет файл, который удалит все мои таблицы за меня. Это будет выглядеть примерно так:
DROP TABLE TABLE1;
DROP TABLE TABLE2;
DROP TABLE TABLE3;
и т.д...
Я не специалист по mysql, но могу предположить, что в нем есть аналогичная возможность выбора всех таблиц для схемы, а также прямого вывода данных из SQL-запроса в файл.
В комментариях есть несколько решений: http://dev.mysql.com/doc/refman/5.1/en/drop-table.html
Используйте SHOW TABLE STATUS
, чтобы получить все таблицы в вашей базе данных, затем переберите результат и сбросьте их одну за другой.