我有一个名为 Database1 的数据库,此数据库有 40个表。现在我要删除40个表中的所有数据。我知道要使用
显示来自DB的所有表SELECT table_name
FROM INFORMATION_SCHEMA.tables
WHERE table_schema = 'Database1';
那么如何使用单个查询从 Database1 中删除所有表格中的所有数据?
注意:
我应该只删除数据,而不是表格。
我正在使用mysql workbench 6.0
答案 0 :(得分:3)
你可以试试这个:
mysqldump -d -uuser -ppass --add-drop-table yourdatabasename > yourdatabasename.sql
mysql -uuser -ppass yourdatabasename < yourdatabasename.sql
正如Zafar所指出的,如果你想包含存储过程/函数,那么你可以包含-R选项。
或者您可以尝试
mysql -Nse 'show tables' yourdatabasename | while read table; do mysql -e "truncate table $yourtable" yourdatabasename; done
答案 1 :(得分:0)
您可以在服务器控制台上执行以下命令。
mysql -uroot -p<pass> -Nse 'show tables' database1 | while read table; do mysql -uroot -p<pass> database1 -e "truncate table $table"; done
你也可以通过以下步骤通过任何类似sqlyog的gui来实现 -
right click on database1 > choose more database options > truncate database
第三个选项是结构备份和恢复,如下所示 -
mysqldump -R -d -uroot -proot123 database1 | mysql -uroot -proot123 database1
注意:Always use -R if you are using stored procedures/function other wise you loose it.
...享受
答案 2 :(得分:0)
对于Oracle: 如果你想删除所有表的所有记录而不删除表应该看看,它可能会对你有所帮助 https://dba.stackexchange.com/questions/74519/delete-all-the-data-from-all-tables
您可以尝试以下任何一项: Delete data from all tables in MYSQL