删除所有表中存在的所有记录

时间:2010-10-20 04:37:19

标签: mysql sql-delete

如何在SQL中进行查询以删除每个表中存在的所有记录。

可以使用命令delete来编写每个名称表。但是编写每个名称表需要很长时间。

我已经在MySQL中尝试DELETE FROM *但它出错:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“*”附近使用正确的语法

6 个答案:

答案 0 :(得分:1)

您只需对每个表执行TRUNCATE查询。您也可以使用删除,但截断通常更适合您正在做的事情。

TRUNCATE TABLE table1;
TRUNCATE TABLE table2;
TRUNCATE TABLE table2;

没有*或所有表格选择器。

答案 1 :(得分:1)

请使用此

<?php
mysql_connect('localhost', 'user', 'password');
$dbName = "database";
mysql_select_db($dbName)
$result_t = mysql_query("SHOW TABLES");
while($row = mysql_fetch_assoc($result_t))
{
   mysql_query("TRUNCATE " . $row['Tables_in_' . $dbName]);
}
?>

一切顺利

答案 2 :(得分:0)

我相信MySql有一个sql语句如下:

Show tables

使用Show tables作为命令文本创建命令对象并执行。

使用该语句可以执行查询并填充MySqlDataReader。迭代读者并将表名放在格式化的字符串中,如下所示。

// create connection string
...
while (myDataReader.Read())
{
    // execute command
    string command = "TRUNCATE TABLE {0}";

    MySqlCommand myCommand = new MySqlCommand();
    myCommand.CommandText = string.Format(command, reader[0]);

    using (MySqlConnection myConnection = new MySqlConnection(myConnString))
    {
        myCommand.Connection = myConnection;
        myCommand.Connection.Open();

        myCommand.ExecuteNonQuery();
    }
}

这应该足够接近,以帮助你走上正确的轨道。

答案 3 :(得分:0)

您可以使用INFORMATION_SCHEMA迭代所有表并动态执行DELETE或TRUNCATE语句。

答案 4 :(得分:0)

可以使用DELETE语句。

以下将删除所有行,但不会重置索引(例如自动增量)。

  

DELETE * FROM TABLEX

以下将删除所有行,索引也将被重置

  

TRUNCATE TABLEX

答案 5 :(得分:0)

如果要自动执行此操作,则必须在MySQL外部编写一些代码。使用show tables获取表名,然后在每个名称上调用TRUNCATE