MySql排序,去重,表复制,数据导入导出

序列:

MySQL 序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。

Create table insect(ID int UNSIGNED NOT AUTO_INCREMENT) #engine=innodb auto_increment=100 charset=utf8;  

table中就会生成一自增的列 id   默认是从1开始自增, 也可以设置起始值,

数据去重

可以在 MySQL 数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。

如果我们设置了唯一索引,那么在插入重复数据时,SQL 语句将无法执行成功,并抛出错

INSERT IGNORE INTO 与 INSERT INTO 的区别就是 INSERT IGNORE 会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。 INSERT IGNORE INTO,执行后不会出错,也不会向数据表中插入重复数据:

统计重复SELECT COUNT(*) as repetitions, last_name, first_name #选择可能会重复的列

-> FROM person_tbl
    -> GROUP BY last_name, first_name
    -> HAVING repetitions > 1;   #重复一次以上的数据

过滤重复的数据:
SELECT DISTINCT last_name, first_name
FROM person_tbl;

删除重复数据
CREATE TABLE tmp SELECT last_name, first_name, sex FROM person_tbl  GROUP BY (last_name, first_name, sex);
DROP TABLE person_tbl;
ALTER TABLE tmp RENAME TO person_tbl;
先讲person_tab 排序去重后复制给tmp 然后删除person_tab 然后将tmp改名


复制整张表
复制MySQL的数据表,包括表的结构,索引,默认值等
  • 使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等。
  • 复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构。
  • 如果你想复制表的内容,你就可以使用 INSERT INTO ... SELECT 语句来实现。
MySql数据导出  以逗号隔开  双引号标值  (CSV格式)
SELECT * FROM passwd INTO OUTFILE '/tmp/runoob.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '
';
导出数据作为原始数据
mysqldump -u root -p --no-create-info 
            --tab=/tmp RUNOOB runoob_tbl   #--tab  是用来指定导出文件的目录
password ******

将数据库备份到其它主机库中
mysqldump -u root -p database_name table_name > dump.txt   #将数据库导入到到dump.txt文件中
mysql -u root -p database_name < dump.txt         #将备份的数据库文件导入到目标主机上
 
在目标主机上执行mysql -uroot -p123456 < runoob.sql 
 
 
















原文地址:https://www.cnblogs.com/1026164853qqcom/p/11127229.html