方法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清空表的实现方法。
你的数据库表可以定义为数字自动递增的主键,MySQL将采取照顾其独特的价值,同时插入新行。
每次添加一个新行,MySQL的增量值自动,它坚持以表。但有时你可能需要重置AUTOINCREMENT列值1。说你写一个示例应用程序,你已经有几行插入表中。现在要删除这些行,并自动增量列复位,使新行插入将有主键的值1 1。
有几个方法来实现这一点。
1。直接复位自动增量值
ALTER TABLE语法提供了一种方法来重新设置自动增量列。采取看看下面的例子。
ALTER TABLE table_name AUTO_INCREMENT = 1;
请注意,你不能重置计数器的值小于或等于任何已使用的。对于MyISAM,如果该值小于或等于目前在AUTO_INCREMENT列的最大值,该值是目前最大的加一复位。对于InnoDB,如果该值大于当前列中的最大值,没有出现错误和不改变当前序列值。
2。截断表截断表自动增量值自动复位为0。
TRUNCATE TABLE table_name;
谨慎使用。用于截断时,任何的AUTO_INCREMENT计数器复位到零。从MySQL 5.0.13上,AUTO_INCREMENT计数器复位为零的TRUNCATE TABLE,而不管是否有一个外键约束。
一旦发射TRUNCATE是,表处理不记得过去使用的AUTO_INCREMENT值,但从头开始计数。这是真实的,甚至对于MyISAM和InnoDB,通常不重用序列值。
3。下降和重新创建表
这是另一种方式下重启自动增量指数。虽然不是很理想。
DROP TABLE table_name;
所有这些技术的价值技术重置自动增量列数。使用任何适合你的要求。
1、第一步,查询语句:select* from table_name;或select * from table_name where [条件]
2、第二步,增加语句或插入数据insert into table_name (clus...) values(values...)实例如图:
3、修改数据:update tablename set xx=xx,xxx=xx where xxx=xxx and xxx=xxx;
4、第四步, 删除语句delete table_name where 条件实例如图:
有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使
用起来比较简便。推
荐使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)
1.
支持设置自增列的值
ALTER
TABLE
table_name
AUTO_INCREMENT
=
1;
不过这种方式只能设置大于当前使用的值,不能设置小于等于当前已经使用的自增列的值。myisam如果设置小于等于,则自增列的值会自动设置为当前最大值加1。innodb则不会改变。
2.通过TRUNCATE把自增列设置为0,从MySQL
5.0.13开始TRUNCATE就能重置自增列为0.myisam和innode都是如此。
TRUNCATE
TABLE
table_name;
注意:TRUNCATE
会清空表中数据
3.drop和create重建表方式重置自增列为0
DROP
TABLE
table_name;
CREATE
TABLE
table_name
{
...
};