序列:
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 '\r\n';
导出数据作为原始数据
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