1.INSERT INTO SELECT 语法
我们可以从一个表中复制所有的列插入到另一个已存在的表中:
INSERT INTO table2
SELECT * FROM table1;
或者我们可以只复制希望的列插入到另一个已存在的表中:
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
2.清空表,主键重置从1开始
TRUNCATE TABLE table_name
3.数据导入导出
- 导入sql
mysql -u 用户名 -p 数据库名 < 数据库名.sql
或者,
USE 数据库
source SQL文件
mysql -uroot -pxxx 库名 --local-infile=1 -e "SET NAMES 'utf8';load data local infile '/home/hadoop/WholeUsers.txt' into table district_user fields terminated by'\t' lines terminated by'\n';"
mysql -hxx.xx.xx.xx -P3306 -uroot -pxxx 库名 --local-infile=1 -e "SET NAMES 'utf8';load data local infile '/home/dmap/WholeUsers' into table district_user FIELDS TERMINATED BY ',' (date,district,user);"
或者,load data命令导入CSV文件:
load data local infile 'c:/oss/data.csv' into table 库名.表名 fields terminated by '\t' lines terminated by '\n'
如果使用Navicat客户端,功能就更强大了,导入excel格式文件到数据库:选中数据库-右击-"导入向导"-选择文件格式导入各类型文件
- 导出sql
mysqldump -u 数据库链接用户名 -p 目标数据库 -e sql语句 > 存储的文件名.sql
然后回车输入密码就可以了
mysql -h xx.xx.xx.xx -P 3306 -u root -proot 库名 -e "SET NAMES 'utf8';select date, district, sum(user) as user from district_user where date>='20190101' group by date;" > WholeUsers.csv
4.将查询结果输出到文件
将查询结果输出到文件liu.xls
SELECT * into outfile 'my_data.xls'
FROM tb1;
将查询结果输出到指定路径下的文件
SELECT lng,lat into outfile 'D://ggg.txt'
FROM maps;
5.MySQL 8.0函数 ROW_NUMBER() OVER()函数的使用
ROW_NUMBER() OVER(PARTITION BY 字段1 ORDER BY 字段2 desc)
按字段1分组,row_number()从1开始,为每一条分组记录返回一个数字,写在select后面,却是在where条件执行之后执行