我想从数据库中删除所有表,但不要删除数据库本身。是否可以 ?我只是在寻找较短的方式,而不是删除数据库并再次创建它。谢谢 !

有帮助吗?

解决方案

最短的是重新创建数据库。但是,如果您不想...

这是针对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();

其他提示

没有简单的方法可以做到这一点。您要么需要知道表的前面是什么:

//编辑您可以使用查询获取此信息 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');

您必须分别丢弃DB中的每个表格,因此丢弃数据库并重新创建它实际上将是最短的路线(这是最快的路线)。

当我必须在Oracle中这样做时,我会编写一个选择的语句,该语句将为我生成Drop表语句。效果:

选择“下降表” || table_name || ';'来自user_tables;

然后,我可以将Select语句的输出输送到文件。运行此功能后,我会有一个文件,可以为我放下所有的桌子。看起来像:

Drop Table Table1;

Drop Table Table2;

Drop Table Table3;

ETC...

不是MySQL专家,但我想它将具有类似的设施,可以选择所有架构的所有表,以及从SQL语句直接输出到文件。

采用 SHOW TABLE STATUS 要将所有表获取数据库中的所有桌子,请循环浏览结果,然后将它们逐一放置。

这里的评论中有一些解决方案: http://dev.mysql.com/doc/refman/5.1/en/drop-table.html

我需要丢下所有桌子,除了一对无意中的垃圾场。

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);
?>

单行查询要丢弃所有表,如下:

$dbConnection = mysqli_connect("hostname", "username", "password", "database_name");
$dbConnection->query('SET foreign_key_checks = 0');

$qry_drop = "DROP TABLE IF EXISTS buildings, business, computer, education, fashion, feelings, food, health, industry, music, nature, people, places, religion, science, sports, transportation, travel";            
$dbConnection->query($qry_drop);

$mysqli->query('SET foreign_key_checks = 1');
$mysqli->close();

您可以执行此操作。如果我错过了任何东西,请添加更多桌子

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;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top