1、删除表数据
(1)delete
a、删除表user中age大于30的数据:delete from user where age > 30;
b、删除表user中所有数据:delete from user;
(2)truncate
删除表中所有数据:truncate table user;
两者区别--在删除表所有数据时:
(1)效率:truncate效率比delete高
(2)truncate直接删除表,然后根据会表结构重新创建表,所以在重新往表里插入数据时,对于auto_increment字段,会重新开始计数,即从1开始重新计数;
(3)delete直接删除表记录,不删除表,所以删除表中所有数据之后,重新插入数据,auto_increment字段不会重置,会继上次最后的数据自增,即如果删除表中所以数据之前,某auto_increment字段值为25,则新插入一条数据后,该字段为26。
2、导出数据
(1)只导出表创建语句
mysqldump -uuser -p123 -h127.0.0.1 -d 数据库名 表名 > test.sql
(2)只导出表数据语句
mysqldump -uuser -p123 -h127.0.0.1 -t 数据库名 表名 > test.sql
(3)只导出数据,不要命令
mysqldump -uuser -p123 -h127.0.0.1 -T ./ 数据库名 表名
注:./ 表示当前目录,即与mysqldump同一目录。如果不指定表名,则将卸出整个数据库的数据。每个表
会生成两个文件,一个为.sql文件,包含建表执行。另一个为.txt文件,只包含数据,且没有sql指令。
3、导入数据
mysql -uuser -p123 -h127.0.0.1 数据库名 < test.sql
4、建表,创建索引,指定engin
CREATE TABLE `test_new` (
`id` char(128) NOT NULL,
`name` varchar(32) NOT NULL DEFAULT 'ipad',
`sex` char(128) NOT NULL DEFAULT 'male',
`age` tinyint(3) unsigned NOT NULL DEFAULT '0',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
KEY `created_at` (`created_at`) USING BTREE, /*创建索引*/
KEY `updated_at` (`updated_at`) USING BTREE,
KEY `id` (`id`) USING BTREE,
KEY `name` (`name`) USING BTREE,
KEY `age` (`age`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; /*指定engin、编码等
5、表之间导入数据
insert into test_new(id,name,sex,age,created_at,updated_at) select name,name,sex,age,created_at,updated_at from test ON DUPLICATE KEY UPDATE test_new.updated_at=test_new.updated_at;
注:ON DUPLICATE KEY UPDATE 表示test_new表中已有要插入索引字段上重复数据时,执行test_new.updated_at=test_new.updated_at更新,是mysql特有的语法。
6、查看状态
show processlist;
7、数据结构化
select * from test \G;