1、执行顺序:from>where>group by>having>order by>select
2、having和where的区别:
- where是在分组前对数据进行过滤,而having是在分组后对数据进行过滤。
- having可以使用聚合函数,而where是不可以的。
3、limit:limit是用来限制select出的结果的。limit2,3 第一个参数2是从0开始的。
4、order by:进行全局排序。不管有多少数据量,都只会有一个reducer,结果输出在同一个文件上。数据量大效率就会很低。
5、cluster by:将数据按照一个字段进行分组,并且在分组内按照这个字段进行正序排序。
6、distribute by + sort by = cluster by
distribute by 功能为按照一个字段进行分组,sort by为按照一个字段进行排序。
7、union:作用是将多个select查询的结果集变为一个。
union distinct 去重(默认为去重)
union all 不去重
8、concat()将多个字符串连接成一个字符串,有一个为null,则结果为null。
concat_ws()参数一为分隔符,分隔符为空则返回结果均为空,如果有空字段则不会影响其他结果输出。
9、<> 不等于
10、regexp_replace (a,b,c)正则表达式替换:a被执行的字符串,b正则匹配规则,c为被替换的字符串。
11、create view 视图名 as (查询语句)
12、cast(替换字符串)
13、substr:截取字符串 substr(a,b,c)a待截取的字符串,b起始位置,c截取长度
14、insert overwrite table 表名 「查询语句」:将查询结果插入到表中。
15、正则表达式:https://www.runoob.com/regexp/regexp-rule.html(菜鸟教程)
^abc 可以匹配 abcde,但是不能匹配 bbabc。
abc$ 可以匹配bbabc,但是不能匹配abcde。
如果什么都不加,如abc,则它既可以匹配abcde,也可以匹配bbabc。
[a-z] // 匹配所有的小写字母 [A-Z] // 匹配所有的大写字母 [a-zA-Z] // 匹配所有的字母 [0-9] // 匹配所有的数字 [0-9.-] // 匹配所有的数字,句号和减号 [ \f\r\t\n] // 匹配所有的白字符
[^a-z] //除了小写字母以外的所有字符 [^\\/\^] //除了()(/)(^)之外的所有字符 [^\”\’] //除了双引号(“)和单引号(‘)之外的所有字符
[[:alpha:]] | 任何字母 |
---|---|
[[:digit:]] | 任何数字 |
[[:alnum:]] | 任何字母和数字 |
[[:space:]] | 任何空白字符 |
[[:upper:]] | 任何大写字母 |
[[:lower:]] | 任何小写字母 |
[[:punct:]] | 任何标点符号 |
[[:xdigit:]] | 任何16进制的数字,相当于[0-9a-fA-F] |
*和{0,}是相等的,都代表出现0次或者多次,+和{1,}是相等的,都代表1或者多次