最优路径:SQL基本功
DQL:SELECT等 DML:INSERT、UPDATE、DELETE增删改查 DPL:BEGIN TRANSACTION、COMMIT和ROLLBACK DCL:GRANT/REVOKE赋予/撤销 DDL:CREATE,DROP新建删除表与视图等 CCL:DECLARE CURSOR、FETCH INTO,UPDATE WHERE CURRENT
2,SQL的执行次序 2.1,SQL语句经历了什么?
explain your_sql2.2,SQL的执行顺序
3,SQL优化点
尽量少用select * IN 包含的值不应过多 in和exists、not in 和 not exists的场景 尽量少用or,同时尽量用union all 代替union 善于使用limit n 在Join表的时候使用相当类型的例,并将其索引 小心查询中的NULL 选择正确的查询引擎 left join 小表为主联大表
4,常用的内置函数及平台用户自定义函数(udf)
4.1,常用的内置函数:
4.2,正则基本功
4.3,纯朴的位运算
-- 与或异select 2&2 -- 2select 1|2 -- 3 select ~2 -- -3-- pmod(double a, double b) 返回余数绝对值4.4,日期变换
date_add(string startdate, int days) -- 日期后移date_sub(string startdate, int days) -- 日期迁移unix_timestamp(string date, string pattern) --日期字符串 转成 intfrom_unixtime(bigint unixtime[, string format]) -- int转成日期字符串select from_unixtime(1463042015872,'yyyy-MM-dd HH:mm:ss'4.5,窗口函数(很重要)
分析函数:LAG--排序向上去第n,LEAD--排序向下去第n,FIRST_VALUE--取分组排序当前行的第一个, LAST_VALUE--取分组排序当前行的最后一个就是自己;ROW_NUMBER()OVER(PARTITION BY cookieid ORDER BY createtime) AS rn,-- 分组排序,生产序号LAST_VALUE(url)OVER(PARTITION BY cookieid ORDER BY createtime) AS last1,-- 取分组内排序后,截止到当前行,第一个值 FIRST_VALUE(url)OVER(PARTITION BY cookieid ORDER BY createtime DESC) AS last2-- 取分组内排序后,截止到当前行,最后一个值