一. 基本查询

1.1 算数运算符

运算符 描述
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按位取反

案例

查询所有员工的薪水然后加1

select sal+1 from emp

1.2 常用聚合函数

可以和分组group by 配合使用

案例

求总行数、最大值、最小值、总和、平均值

select count(*),max(sal),min(sal),sum(sal),avg(sal) from emp

1.3 limit

案例

查询emp表前五行

select * from emp limit 5;

查询emp表第5-第10行

select * from emp limit 4,6;
--数据从第0行开始计数,4代表第5行,6代表从第5行往后再查6行

1.4 where

注意:where字句紧随from字句、where字句不能使用字段别名

1.5 比较运算符(between|in|is null)

操作符 支持的数据类型 描述
A=B 基本数据类型 如果A等于B则返回TRUE,反之返回FALSE
A<=>B 基本数据类型 如果A和B都为NULL,则返回TRUE,如果一边为NULL,返回False
A<>B, 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>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(数值1, 数值2) 所有数据类型 使用 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是基于java的正则表达式,如果A与其匹配,则返回TRUE;反之返回FALSE。匹配使用的是JDK中的正则表达式接口实现的,因为正则也依据其中的规则。例如,正则表达式必须和整个字符串A相匹配,而不是只需与其字符串匹配。

1.6 LIKE和RLIKE

  • LIKE

    %代表任意个字符

    _ 代表一个字符

  • RLIKE

    RLIKE子句是Hive中这个功能的一个扩展,其可以通过Java的正则表达式这个更强大的语言来指定匹配条件。

案例

1.查找以A开头的员工信息

select * from emp where ename LIKE 'A%';    --LIKE
select * from emp where ename RLIKE '^A'; --RLIKE

2.查找名字第二个字母为A的员工信息

select * from emp where ename LIKE '_A%';
select * from emp where ename RLIKE '^.A';

3.查询名字中带A的员工信息

select * from emp where ename LIKE '%A%';
select * from emp where ename RLIKE '[A]';

1.7 and|or|not

操作符 含义
AND 逻辑并
OR 逻辑或
NOT 逻辑否

1.8 group by|having by

(1)where 后面不能写分组函数,having后面可以使用分组函数。

(2)having只能于group by分组统计语句。

二. Join语句

2.1 内连接

案例

select e.empno,e.ename,d.deptno from emp e join dept d on e.deptno = d.deptno;

2.2 外连接(左|右)

案例

  • 左外连接

    select e.empno,e.ename,d.deptno from emp e left join dept d on e.deptno = d.deptno;
  • 右外连接

    select e.empno,e.ename,d.deptno from emp e left join dept d on e.deptno = d.deptno;

2.3 满连接

案例

select e.deptno,e.ename,d.deptno from emp e
full join deptno d on e.depno=d.depno;

2.4 多表连接

案例

select * from emp e
join dept d
on e.deptno = d.deptno
join location l
on d.loc = l.loc;

三. 排序

3.1 order by

全局排序,只有一个reducer。对于大数据场景的数据效率非常低,一般不用

别名、多个列全排序

案例

select ename,deptno,sal*2 two_sal from emp order bydeptno asc,two_sal desc;

3.2 sort by 和 distribute by

sort by

sort by为每个reducer进行内部排序(区内排序),对全局不是排序。

distribute by

distribute by的分区规则是根据分区字段的hash码与reduce的个数进行模除后,余数相同的分到一个区

案例

insert overwrite local directory '/opt/module/hive/data/export'
select * from emp distribute by deptno sort by empno desc;
总结

一般sort by和distribute by一起使用,Hive要求distribute by语句要写sort by语句之前

参数设置:set mapreduce.job.reduces=3,set mapreduce.job.reduces

3.3 cluster by

cluster by可以看做是sort by和distribute by相同字段一起使用的特例。

cluster by具有distribute by的功能外还兼具sort by的功能,但是排序只能是升序排序。

案例

select * from emp cluster by deptno;
--上下两种写法等价
select * from emp distribute by deptno sort by deptno;

Hive(五)【DQL数据查询】的更多相关文章

  1. oracle学习笔记(四) DQL数据查询语言和TCL 事务控制语言

    DML 数据管理语言 Data manage language insert, update, delete以及select语句,不过,有人也把select单独出来,作为DQL 数据查询语言 data ...

  2. DQL数据查询

    set hive.fetch.task.conversion=more; -- 避免触发MR job select distinct name from employee_id limit 2; -- ...

  3. Hive进阶_Hive数据查询

    简单查询和fetch task 简单查询:   简单查询的 fetch task 功能,从HDFS拉取,不用map reduce. 前两种配置,当前session有效.修改hive-site.xml永 ...

  4. Mysql学习笔记(五)数据查询之测试sql部分。

    正文之前,介绍mysql一些很有趣的命令. 快速的创建表,并填充表数据. create table test like  已经有的表名: inset into test select * from f ...

  5. Hive 学习之路(八)—— Hive 数据查询详解

    一.数据准备 为了演示查询操作,这里需要预先创建三张表,并加载测试数据. 数据文件emp.txt和dept.txt可以从本仓库的resources目录下载. 1.1 员工表 -- 建表语句 CREAT ...

  6. Hive 系列(八)—— Hive 数据查询详解

    一.数据准备 为了演示查询操作,这里需要预先创建三张表,并加载测试数据. 数据文件 emp.txt 和 dept.txt 可以从本仓库的resources 目录下载. 1.1 员工表 -- 建表语句 ...

  7. 入门大数据---Hive数据查询详解

    一.数据准备 为了演示查询操作,这里需要预先创建三张表,并加载测试数据. 数据文件 emp.txt 和 dept.txt 可以从本仓库的resources 目录下载. 1.1 员工表 -- 建表语句 ...

  8. Hive之数据查询

    Hive之数据查询 发布于:2013 年 10 月 11 日 由 Aaron发布于: Hive 一,排序和聚合 对于排序有两种方式,一种是order by 一种是sort by order by 会对 ...

  9. 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)

    这个很简单,在集群机器里,选择就是了,本来自带就有Impala的. 扩展博客 给Ambari集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)

随机推荐

  1. live555 rtsp直播卡顿马赛克优化

    最近搞了个rtsp直播,初步是能用了,但是最终效果不是很好,客户不接受要求我们一定要继续优化. 原因是他们体验的时候发现会概率性出现马赛克和画面卡顿情况,经过我们测试验证,确实是有这个问题存在. 从原 ...

  2. Excel 读写

    一.环境准备:pom.xml 导入依赖 poi-ooxml <dependencies> <dependency> <groupId>org.apache.poi& ...

  3. IP基础 & 子网划分 & 路由寻址

    IP地址详解 IP地址概念 就像用身份证号码来区别毎个人一样,为了区别 网上的每台计算机,我们给因特网上的每一台计算机一个唯一的编号 ,我们把它称为IP地址 IP地址就是一个唯一标识 ,是一段网络编码 ...

  4. C++ 函数模板和函数重载同时出现如何调用

    C++ 函数模板和函数重载同时出现如何调用 重点 函数模板不允许自动转换,普通函数可以进行自动类型转换 函数模板可以像普通函数一样被重载 C++编译器优先考虑调用普通函数 如果函数模板可以产生一个更好 ...

  5. mysql登录遇到ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

    执行mysql  -uroot  -p,出现如下问题 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using pass ...

  6. 用Python实现人像动漫化

    用Python实现人像动漫化 本文章会教你如何使用Python实现人像动漫化,先看看效果实例: 实现过程如下: 本案例是使用百度的API来实现的,首先需要进入百度AI开放平台注册账号,具体流程就不讲了 ...

  7. [linux]centos7.4安装nginx

    下载nginx wget http://nginx.org/download/nginx-1.5.6.tar.gz 解压包安装在/opt/nginx. 目录下, 1.安装gcc(centos 7之后一 ...

  8. 2019年java大型项目技术选型

    学习一下 1,公司使用的架构是:SpringCloud + K8S 这一套主流技术,但是还是入门级别的. 还包含apollo  ,xxlJob ,SkyWalking,Cat,GrayLog等 2,G ...

  9. 从 ThreadLocal 到 AsyncLocal

    前些天跟大佬们在群里讨论如何在不使用构造函数,不增加方法参数的情况下把一个上下文注入到方法内部使用,得出的结论是 AsyncLocal .感叹自己才疏学浅,居然才知道有 AsyncLocal 这种神器 ...

  10. 软件分享:网页监测及 IIS 重启工具 IISMonitor

    本人以前编写过一款简单的工具软件 IISMonitor,这几天整理完善并补写了使用说明,分享出来,供大家免费使用.使用过程中,遇到什么问题或有什么建议,也可回帖留言,我尽力提供修改支持. 1.工具简介 ...