基本查询

全表数据查询:

> select * from testtable;


Hive查询01.png

特定列查询:

> select name from testtable;


Hive查询02.png

语句大小写不敏感,可以全写在一行,也可以写在多行。

关键字不能被缩写,也不能分行。

使用缩进提高可读性,各子句一般分行写。

列别名:

> select name AS nickname from testtable;


Hive查询03.png

重命名一个列,可以便于计算。

写法上可以别名紧跟列名,也可以在列明和别名间使用关键字“AS”,推荐使用关键字写法。

算术运算符:

> select age +1 from testtable;

运算符

描述

A+B

A加上B

A-B

A减去B

A*B

A乘以B

A/B

A除以B

A%B

A对B取余

A&B

A和B按位与

A|B

A和B按位或

A^B

A和B按位异或

~A

A按位取反

常用函数

count查询结果统计:

> select count(*) name from testtable;


Hive查询04.png

max查询最大值结果:

> select max(age) max_age from testtable;


Hive查询05.png

min查询最小值结果:

> select min(age) min_age from testtable;


Hive查询06.png

sum查询结果求和:

> select sum(age) sum_age from testtable;


Hive查询07.png

avg查询结果求平均值:

> select avg(age) avg_age from testtable;


Hive查询08.png

Limit限制查询结果返回的行数:

> select * from testtable limit 2;


Hive查询18-limit.png

Where语句

Where

> select * from testtable where age > 19;


Hive查询19-where.png

Where语句过滤不满足条件的结果。

比较运算符

操作符

支持的数据类型

描述

A=B

基本数据类型

A等于B返回TRUE,否则返回FALSE

A<=>B

基本数据类型

若A和B都为NULL,返回TRUE;其他与等号操作符结果一致;若任一为NULL则结果为NULL

A<>B,A!=B

基本数据类型

A或B为NULL,返回NULL;若A不等于B,返回TRUE,反之返回FALSE

A

基本数据类型

A或B为NULL,返回NULL;若A小于B,返回TRUE,反之返回FALSE

A<=B

基本数据类型

A或B为NULL,返回NULL;若A小于等于B,返回TRUE,反之返回FALSE

A>B

基本数据类型

A或B为NULL,返回NULL;若A大于B,返回TRUE,反之返回FALSE

A>=B

基本数据类型

A或B为NULL,返回NULL;若A大于等于B,返回TRUE,反之返回FALSE

A [NOT] BETWEEN B AND C

基本数据类型

若A、B或C任一为NULL,返回NULL;若A大于B并小于C,返回TRUE,反之返回FALSE;使用NOT关键字,效果相反

A IS NULL

所有数据类型

若A等于NULL,返回TRUE,反之返回FALSE

A IS NOT NULL

所有数据类型

若A不等于NULL,返回TRUE,反之返回FALSE

IN[NUM1,NUM2]

所有数据类型

使用IN运算符显示列表中的值

A [NOT] LIKE B

STRING类型

B是一个SQL下的简单正则表达式,若A与其匹配的,返回TRUE,反之返回FALSE;B的表达式说明:‘x%’表示A必须以字母‘x’开头,‘%x’表示A必须以字母‘x’结尾,而‘%x%’表示A包含字母‘x’,可以位于开头、结尾或者字符串中间。若使用NOT关键字,效果相反

A RLIKE B, A REGEXP B

STRING类型

B是一个正则表达式,若A与其匹配,返回TRUE,反之返回FALSE;匹配使用的是JDK中的正则表达式接口实现的,因为正则也依据其中的规则

> select * from testtable where age=20;


Hive查询09.png

> select * from testtable where age between 15 and 19;


Hive查询10.png

select * from testtable where name is null;


Hive查询11.png

> select * from testtable where age in (15,20);


Hive查询12.png

Like和RLike

查找name中以‘D’开头的名字:

> select * from testtable where name like 'D%';


Hive查询13.png

查找name中含有‘D’的名字:

> select * from testtable where name rlike '[D]';


Hive查询14.png

逻辑运算符

操作符

含义

AND

逻辑并

OR

逻辑或

NOT

逻辑否

> select * from testtable where name='Snow' and age>18;


Hive查询15.png

> select * from testtable where name='Snow' or age>18;


Hive查询16.png

> select * from testtable where age not in (19,20);


Hive查询17.png