21

データベースからすべてのテーブルを削除したいのですが、データベース自体は削除しません。出来ますか ?データベースを削除して再作成するよりも短い方法を探しています。ありがとう !

4

10 に答える 10

40

最短はデータベースを再作成することです。しかし、あなたがしたくない場合...

これは 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();
于 2010-08-16T13:09:08.157 に答える
5

これを行う簡単な方法はありません。テーブルが何であるかを事前に知る必要があります。

//編集して、クエリを使用してこの情報を取得できます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');
于 2010-08-16T12:58:20.983 に答える
2

データベース内のすべてのテーブルを取得するために使用SHOW TABLE STATUSし、結果をループして 1 つずつ削除します。

于 2010-08-16T13:05:21.453 に答える
2

不注意なダンプからいくつかを除くすべてのテーブルを削除する必要がありました。

一部を除くすべてのテーブルを削除する PHP 関数 (ここから適応)。

<?php
$mysqli = new mysqli( "localhost", "user", 'password', "database");
function drop_all_tables($exceptions_array, $conn) {
    $exceptions_string="('" ;
    foreach ($exceptions_array as $table) {
        $exceptions_string .=$table . "','";
    }
    $exceptions_string=rtrim($exceptions_string, ",'");
    $exceptions_string .="')" ;
    $sql="SELECT CONCAT('DROP TABLE ', TABLE_NAME, '; ')
         FROM information_schema.tables
         WHERE table_schema = DATABASE() AND table_name NOT IN $exceptions_string";
    $result=$ conn->query($sql);
    while($row = $result->fetch_array(MYSQLI_NUM)) {
        $conn->query($row[0]);
    }
}

//drop_all_tables(array("table1","table2","table3","table4"), $mysqli);
?>
于 2015-07-27T16:43:18.457 に答える
2

コメントにはいくつかの解決策があります: http://dev.mysql.com/doc/refman/5.1/en/drop-table.html

于 2010-08-16T14:39:45.543 に答える
2

データベース内のすべてのテーブルを個別に削除する必要があるため、データベースを削除して再作成することが実際には最短ルートになります (さらに言えば最速のルートです)。

于 2010-08-16T12:59:01.950 に答える
2

Oracle でこれを行う必要があるときは、drop table ステートメントを生成する select ステートメントを作成しました。効果のあるもの:

|| 'DROP TABLE' を選択 || テーブル名 || ';' user_tables から;

次に、select ステートメントの出力をファイルにパイプすることができます。これを実行すると、すべてのテーブルを削除するファイルが作成されます。次のようになります。

DROP TABLE TABLE1;

DROP TABLE TABLE2;

DROP TABLE TABLE3;

等...

mysqlの専門家ではありませんが、スキーマのすべてのテーブルを選択するだけでなく、SQLステートメントからファイルに直接出力するための同様の機能があると思います。

于 2010-08-16T12:59:02.897 に答える
-1

これを実行できます。見逃したテーブルがある場合は、テーブルを追加してください

drop table wp_commentmeta;
drop table wp_comments;
drop table wp_links;
drop table wp_options;
drop table wp_postmeta;
drop table wp_posts;
drop table wp_term_relationships;
drop table wp_term_taxonomy;
drop table wp_termmeta;
drop table wp_terms;
drop table wp_usermeta;
drop table wp_users;
于 2019-07-30T23:45:53.907 に答える