2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 清空mysql一个库中的所有表_mysql怎样清空一个数据库中的所有表_MySQL

清空mysql一个库中的所有表_mysql怎样清空一个数据库中的所有表_MySQL

时间:2019-06-22 08:58:54

相关推荐

清空mysql一个库中的所有表_mysql怎样清空一个数据库中的所有表_MySQL

转载自:/zhangzhizhen1988/article/details/8432146

Mysql清空表是很重要的操作,也是最常见的操作之一,下面就为您详细介绍Mysql清空表的实现方法,希望能够对您有所帮助。

方法1:重建库和表

一。只导出表结构

导出整个数据库结构(不包含数据)

mysqldump -h localhost -uroot -p123456 -d database > dump.sql

导出单个数据表结构(不包含数据)

mysqldump -h localhost -uroot -p123456 -d database table > dump.sql

二。只导出表数据

导出整个数据库数据

mysqldump -h localhost -uroot -p123456 -t database > dump.sql

三。导出结构+数据

导出整个数据库结构和数据

mysqldump -h localhost -uroot -p123456 database > dump.sql

导出单个数据表结构和数据

mysqldump -h localhost -uroot -p123456 database table > dump.sql

方法2:生成清空所有表的SQL

mysql -N -s information_schema -e "SELECT CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') FROM TABLES WHERE TABLE_SCHEMA='eab12'"

输出结果如下:

TRUNCATE TABLE AUTHGROUPBINDINGS;

TRUNCATE TABLE AUTHGROUPS;

TRUNCATE TABLE AUTHUSERS;

TRUNCATE TABLE CORPBADCUSTOMINFO;

TRUNCATE TABLE CORPSMSBLACKLISYInfo;

TRUNCATE TABLE CORPSMSFILTERINFO;

TRUNCATE TABLE CORPSMSINFO;

TRUNCATE TABLE EABASEREGINFOS;

TRUNCATE TABLE EACORPBLOB;

TRUNCATE TABLE EACORPINFO;

....

....

这样就更完善了:

mysql -N -s information_schema -e "SELECT CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') FROM TABLES WHERE TABLE_SCHEMA='eab12'" | mysql eab12

即清空eab12中所有的表。

但是如果有外键的话,很可能会报错。因此还需要加个-f

mysql -N -s information_schema -e "SELECT CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') FROM TABLES WHERE TABLE_SCHEMA='eab12'" | mysql -f eab12

多执行几次,直到不报错。

以上就是Mysql清空表的实现方法。

备注:

SQLyog 11.24 也可以选择数据库---右键单击---更多数据库操作---截位数据库

转载自:/s/blog_71fbce730100obnq.html

1.大多时候,我们需要使用 mysql -e "" database 的方式,执行一些命令,并且select 它会返回包含字段名在内的行,我们还得手工将其去除 mysql -e "select name" database 2>/dev/null | sed -e '/name/d',其实不必这样麻烦,可以直接这样用mysql --skip-column-names[-N] -e "select name" database 2>/dev/null

2.在update,insert,delete的时候,我们更需要知道,它影响了多少行;可以这样使用 mysql --skip-column-names(-N) -e "update table set field=xx limit 10;select row_count();" database

3.在select的时候,我们更需要知道,它找到多少行;可以这样使用 mysql --skip-column-names(-N) -e "update table set field=xx limit 10;select found_rows();" database

4.在insert的时候,我们更需要知道,它insert的id;可以这样使用 mysql --skip-column-names(-N) -e "update table set field=xx limit 10;select last_insert_id();" database 但是会碰到一个问题,只要是concat里面有一个是 null 的就会返回 null而且,每个中间都要有 '#',也比较麻烦 mysql="select concat_ws( '###',replace( ifnull(cid,''),' ','' ),replace( ifnull(username,''),' ','' ),replace( ifnull(password,''),' ','' ),replace( ifnull(comName,''),' ','' ),replace( ifnull(scomname,''),' ','' ),replace( ifnull(l_person,''),' ','' ),replace( ifnull(l_mobile,''),' ','' ),replace( ifnull(telephone,''),' ','' ),replace( ifnull(remark,''),' ','' ),replace( ifnull(status,''),' ','' ) ) from company order by cid asc limit 0,15"; 用concat_ws(delimiter,'xx','yy')==xx#yy用 ifnull( field ,replace_sta

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。