sql语句,mysql/sql server/oracle/hive都有一些差别,企业常用的一般是MySQL和hive,但是大同小异,不同部分百度即可。以下主要总结工作中常用的重点和难点。
一 常见语法
1.1 句式
select distinct case when 列名 条件 then 取值 else 取值 end as 别名
from 表 a inner/left/right join 表b on a.字段=/>/<b.字段
where 条件(like/between/in)
group by 字段 having 字段计数>1
order by 字段
limit 10
注意,distinct 是对后面所有字段的重复项去重,分组条件只能用having写,group by后的字段在前面一定要有,on在多表查询里是连接的条件。case when then else end语法用于条件的取值。
1.2 各类函数
日期函数,两日期之差datediff,加上几天dateadd,取年月日extract,year,datepart,时间戳转日期,from_unixtime,系统日期sysdate
数字函数,计数count,求和sum,幂函数power
文本函数,拼接concat/concat_ws/group_concat,分割substring/substring_index/left,替换replace,正则表达式[A-Z]{2,3}+*?/d/D
格式互转函数,把文本转日期等cast/convert_as
掌握了以上基本就是掌握了重点,示例请自行百度理解,旁人不可代替。
二 常见用法
重点:1 以上语法的意义了解,可以解决绝大部分
2 以下4个语句,表字段基本是uid,log_time,从中可以看到一些灵活的用法,如自连接和case,3个表以上的join。
难点:1 查询优化,explain看sql执行顺序,小表驱动大表,建立索引,分区存表等都可以优化查询速度,具体也可以自行百度。数据量非常大时需要跑半小时,可以先小量跑看语句是否正确,再大量跑
2 mysq 和hive sql的区别。hive sql没有exist,对分号不友好,hive sql的本质是把sql写成map reduce程序执行,可以学习下。
三 工作中碰到的其他问题。
暂时无。