将文本文件中的行读入表中
将“*.txt”文本文件中的数据导入到数据库中
load local data infile "C:\\sqlfile\\tb_flow.txt" into table tb_flow fields terminated by'|' lines terminated by '\n'
fields关键字指定了文件记段的分割格式,如果用到这个关键字,MySQL剖析器希望看到至少有下面的一个选项:
terminated by 以什么字符作为分隔符
enclosed by 字段闭合标签
escaped by 转义字符
terminated by 描述字段的分隔符,默认情况下是tab字符(\t)
enclosed by 描述的是字段的括起字符。
escaped by 描述的转义字符。默认的是反斜杠(backslash:\ )
lines 关键字指定了每条记录的分隔符默认为’\n’即为换行符 (不指定一个lines子句,缺省值默认写的如: lines terminated by '\n' )
数据A表插B表
1.INSERT INTO 目标表 SELECT * FROM 来源表;
2.INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表;
(字段的顺序必须一致)
数据查重
SELECT * FROM 表名 a
WHERE (a.重复字段1,a.重复字段2,a.重复字段3) IN (SELECT 重复字段1,重复字段2,重复字段3 FROM 表名 GROUP BY 重复字段1,重复字段2,重复字段3 HAVING COUNT(*) > 1)
数据去重保留一条
SELECT * FROM 表名
WHERE id IN (SELECT id FROM 表名 GROUP BY 重复字段1,重复字段2,重复字段3 HAVING COUNT(1)>1)
AND id NOT IN (SELECT max(id) FROM 表名 GROUP BY 重复字段1,重复字段2,重复字段3 HAVING COUNT(1)>1)
计算时间差
DATEDIFF
使用 DATEDIFF() 函数计算两个日期之间的间隔天数
DATEDIFF(datetime1, datetime2) as int1,
DATEDIFF(TIMESTAMP '2017-10-15 23:00:00',datetime2) as int2,
DATEDIFF(datetime2,TIMESTAMP '2017-10-15 23:00:00') as int3,
DATEDIFF(datetime2,nullstr) as int4,
DATEDIFF(nullstr,TIMESTAMP '2017-10-15 23:00:00') as int5,
DATEDIFF(nullstr,datetime2) as int6,
DATEDIFF(TIMESTAMP '2017-10-15 23:00:00',TIMESTAMP '2017-9-15 00:00:00')as int7
TIMESTAMPDIFF
函数 TimeStampDiff() 是MySQL本身提供的可以计算两个时间间隔的函数,语法为:
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其中unit单位有如下几种,分别是:FRAC_SECOND (microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR 。该参数具体释义如下:
FRAC_SECOND 表示间隔是毫秒
SECOND 秒
MINUTE 分钟
HOUR 小时
DAY 天
WEEK 星期
MONTH 月
QUARTER 季度
YEAR 年
#计算两日期之间相差多少周
select timestampdiff(week,'2011-09-30','2015-05-04');
#计算两日期之间相差多少天
select timestampdiff(day,'2011-09-30','2015-05-04');
#计算两日期/时间之间相差的秒数:
select timestampdiff(SECOND,'2011-09-30','2015-05-04');
另外还可以使用 MySql 内置函数 UNIX_TIMESTAMP 实现,如下:
SELECT UNIX_TIMESTAMP(end_time) - UNIX_TIMESTAMP(start_time);
外键开关
关:set foreign_key_checks = 0;
开:set foreign_key_checks = 1;
BETWEEN …AND …
BETWEEN '2020-05-01' AND '2020-05-10'
即 2020-05-01 00:00:00 到 2020-05-10 00:00:00
推迟一天
用 BETWEEN '2020-05-01' AND DATE_ADD('2020-05-01',INTERVAL 1 DAY);