Hive SQL语言

目录

Hive SQL之数据库与建库

create database :创建数据库

use database :选择特定的数据库

drop database :删除数据库

Hive SQL之表与建表

create table : 创建表

分隔符指定语法 

Hive SQL-DML-Load加载数据

Load语法功能

语法规则之filepath 

语法规则之LOCAL

Hive SQL-DML-Insert插入数据

insert+select:将后面查询返回的结果作为内容插入到指定表中

Hive SQL DML语法之查询数据

Select语法树

1.select_expr:select_expr表示检索查询返回的列,必须至少有一个select_expr。

2.ALL 、DISTINCT:用于指定查询返回结果中重复的行如何处理。

3.WHERE

4.聚合操作

5.GROUP BY

6.HAVING

7.ORDER BY

8.LIMIT

执行顺序

Hive SQL Join关联查询

Hive Join语法规则

inner join 内连接

left join 左连接


Hive SQL之数据库与建库

create database :创建数据库

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name[COMMENT database_comment][LOCATION hdfs_path][WITH DBPROPERTIES (property_name=property_value, ...)];

COMMENT:数据库的注释说明语句

LOCATION:指定数据库在HDFS存储位置,默认/user/hive/warehouse/dbname.db

WITH DBPROPERTIES:用于指定一些数据库的属性配置。

use database :选择特定的数据库

drop database :删除数据库

默认行为是RESTRICT,这意味着仅在数据库为空时才删除它。

要删除带有表的数据库(不为空的数据库),我们可以使用CASCADE。

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];

Hive SQL之表与建表

create table : 创建表

CREATE TABLE [IF NOT EXISTS] [db_name.]table_name(col_name data_type [COMMENT col_comment], ... )[COMMENT table_comment][ROW FORMAT DELIMITED …];

注意事项

  • 蓝色字体是建表语法的关键字,用于指定某些功能。
  •  [ ]中括号的语法表示可选。
  • 建表语句中的语法顺序要和语法树中顺序保持一致。
  • 最低限度必须包括的语法为:

                                CREATE TABLE table_name (col_name data_type);

分隔符指定语法 
  • ROW FORMATDELIMITED语法用于指定字段之间等相关的分隔符,这样Hive才能正确的读取解析数据。
  • 或者说只有分隔符指定正确,解析数据成功,我们才能在表中看到数据。

Hive SQL-DML-Load加载数据

Load语法功能

  • Load英文单词的含义为:加载、装载;
  • 所谓加载是指:将数据文件移动到与Hive表对应的位置,移动时是纯复制、移动操作。
  • 纯复制、移动指在数据load加载到表中时,Hive不会对表中的数据内容进行任何转换,任何操作。
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename;

语法规则之filepath 

  • filepath表示待移动数据的路径。可以指向文件(在这种情况下,Hive将文件移动到表中),也可以指向目录(在 这种情况下,Hive将把该目录中的所有文件移动到表中)。
  • filepath文件路径支持下面三种形式,要结合LOCAL关键字一起考虑:
  1. 相对路径,例如:project/data1
  2. 绝对路径,例如:/user/hive/project/data1
  3. 具有schema的完整URI,例如:hdfs://namenode:9000/user/hive/project/data1

语法规则之LOCAL

指定LOCAL,将在本地文件系统中查找文件路径。

  • 若指定相对路径,将相对于用户的当前工作目录进行解释;
  • 用户也可以为本地文件指定完整的URI-例如:file:///user/hive/project/data1 

没有指定LOCAL关键字

  • 如果filepath指向的是一个完整的URI,会直接使用这个URI;
  • 如果没有指定schema,Hive会使用在hadoop配置文件中参数fs.default.name指定的(不出意外,都是HDFS)。

Hive SQL-DML-Insert插入数据

insert+select:将后面查询返回的结果作为内容插入到指定表中

INSERT INTO TABLE tablename select_statement1 FROM from_statement;
  1. 需要保证查询结果列的数目和需要插入数据表格的列数目一致。
  2. 如果查询出来的数据类型和插入表格对应的列数据类型不一致,将会进行转换,但是不能保证转换一定成功,转换 失败的数据将会为NULL。

Hive SQL DML语法之查询数据

Select语法树

SELECT [ALL | DISTINCT] select_expr, select_expr, ...FROMtable_reference[WHERE where_condition][GROUP BY col_list][ORDER BY col_list][LIMIT [offset,] rows];
  • 从哪里查询取决于FROM关键字后面的table_reference,这是我们写查询SQL的首先要确定的事即你查询谁?
  • 表名和列名不区分大小写。

1.select_expr:select_expr表示检索查询返回的列,必须至少有一个select_expr。

2.ALL 、DISTINCT:用于指定查询返回结果中重复的行如何处理。

3.WHERE

  • WHERE后面是一个布尔表达式(结果要么为true,要么为false),用于查询过滤,当布尔表达式为true时,返回 select后面expr表达式的结果,否则返回空。
  • 在WHERE表达式中,可以使用Hive支持的任何函数和运算符,但聚合函数除外。

4.聚合操作

  • SQL中拥有很多可用于计数和计算的内建函数,其使用的语法是:SELECT function(列) FROM 表。
  • 这里我们要介绍的叫做聚合(Aggregate)操作函数,如:Count、Sum、Max、Min、Avg等函数。
  • 聚合函数的最大特点是不管原始数据有多少行记录,经过聚合操作只返回一条数据,这一条数据就是聚合的结果。

5.GROUP BY

  • GROUP BY语句用于结合聚合函数,根据一个或多个列对结果集进行分组;
  • 如果没有group by语法,则表中的所有行数据当成一组。

语法限制

  • 出现在GROUP BY中select_expr的字段:要么是GROUP BY分组的字段;要么是被聚合函数应用的字段。
  • 原因:避免出现一个字段多个值的歧义。

6.HAVING

  • 在SQL中增加HAVING子句原因是,WHERE关键字无法与聚合函数一起使用。
  • HAVING子句可以让我们筛选分组后的各组数据,并且可以在Having中使用聚合函数,因为此时where,group by 已经执行结束,结果集已经确定。

HAVING与WHERE区别

  • having是在分组后对数据进行过滤
  • where是在分组前对数据进行过滤
  • having后面可以使用聚合函数
  • where后面不可以使用聚合函数

7.ORDER BY

  • ORDER BY 语句用于根据指定的列对结果集进行排序。
  • ORDER BY 语句默认按照升序(ASC)对记录进行排序。如果您希望按照降序对记录进行排序,可以使用DESC关 键字

8.LIMIT

  • LIMIT用于限制SELECT语句返回的行数。
  • LIMIT接受一个或两个数字参数,这两个参数都必须是非负整数常量。
  • 第一个参数指定要返回的第一行的偏移量(从Hive 2.0.0开始),第二个参数指定要返回的最大行数。当给出单个 参数时,它代表最大行数,并且偏移量默认为0。

执行顺序

在查询过程中执行顺序:from > where > group(含聚合)> having >order > select;

1. 聚合语句(sum,min,max,avg,count)要比having子句优先执行

2. where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)

Hive SQL Join关联查询

Hive Join语法规则

join_table:table_reference [INNER] JOIN table_factor [join_condition]| table_reference {LEFT} [OUTER] JOIN table_reference join_conditionjoin_condition:ON expression
  • table_reference:是join查询中使用的表名。
  • table_factor:与table_reference相同,是联接查询中使用的表名。
  • join_condition:join查询关联的条件,如果在两个以上的表上需要连接,则使用AND关键字。

inner join 内连接

  • 内连接是最常见的一种连接,它也被称为普通连接,其中inner可以省略:inner join == join ;
  • 只有进行连接的两个表中都存在与连接条件相匹配的数据才会被留下来。

left join 左连接

  • left join中文叫做是左外连接(Left Outer Join)或者左连接,其中outer可以省略,left outer join是早期的写法。
  • left join的核心就在于left左。左指的是join关键字左边的表,简称左表。
  • 通俗解释:join时以左表的全部数据为准,右边与之关联;左表数据全部返回,右表关联上的显示返回,关联不上 的显示null返回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/405958.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

区块链变革:Web3时代的数字化前沿

随着科技的飞速发展,数字化正在深刻影响着我们生活的方方面面。区块链技术作为一种新兴的去中心化技术,正成为推动这一变革的重要力量。特别是在Web3时代,区块链的作用不仅仅局限于加密货币,而是延伸到了各个领域,成为…

VMware虚拟机nat无法联通主机

VMware在nat模式下主机无法ping通虚拟机 原因: 虚拟机和对应的网卡不在一个网段 虚拟机开启了防火墙 解决方法: 首先判断虚拟机的网络ip是否和网卡在一个网段上 判断虚拟机使用的网卡 nat模式在VMware虚拟机中一般只有一个对应的网卡 如图笔者的nat网卡为VM…

【机器学习】全景指南:从基础概念到实战流程的全面解析

文章目录 1.引言1.1机器学习的重要性1.2机器学习的应用范围1.3本文的内容结构 2. 机器学习的基本概念与分类2.1 机器学习的定义2.2 机器学习的分类 4. 强化学习(Reinforcement Learning) 3. 机器学习的工作流程3.1 数据收集与准备1. 数据源与类型2. 数据…

26.删除有序数组中的重复项---力扣

题目链接: . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/remove-duplicates-from-sorted-array/descript…

STM32新建项目

一、学习背景 需要做一个机械臂项目,打算用STM32做微控制器,所以需要学习STM32的相关应用,再将其应用到机械臂上。 二、相关硬件与软件 硬件:STM32F103;显示屏;stlink;传感器模块&#xff1b…

深入理解 C# 中的 dynamic 类型详解与示例

文章目录 1. 什么是 dynamic 类型?2. dynamic 的工作原理3. dynamic 类型的使用4. 使用 dynamic 的场景5. dynamic 的优缺点6. dynamic 类型的注意事项7. 总结 在 C# 编程中,dynamic 类型是一个非常特殊的类型,它在编译时并不会进行类型检查&…

SOL项目开发代币DApp的基本要求、模式创建与海外宣发策略

Solana(SOL)作为一个高性能区块链平台,以其快速的交易速度和低交易成本吸引了大量开发者和投资者。基于Solana开发的去中心化应用程序(DApp)和代币项目正逐步成为区块链领域的重要组成部分。要成功开发并推广一个SOL项…

VM相关配置及docker

NAT——VMnet8网卡 桥接——WLAN/网线 仅主机——VMnet1网卡 docker与虚拟机的区别 启动docker服务 systemctl start docker 重启 systemctl start docker关闭docker服务 systemctl stop docker.servicedocker的两大概念 镜像:images,应用程序的静态文…

Agentic Security:一款针对LLM模型的模糊测试与安全检测工具

关于Agentic Security Agentic Security是一款针对LLM模型的模糊测试与安全检测工具,该工具可以帮助广大研究人员针对任意LLM执行全面的安全分析与测试。 请注意 Agentic Security 是作为安全扫描工具设计的,而不是万无一失的解决方案。它无法保证完全防…

魔珐科技出席WWEC教育者大会,给出AI时代教培行业精细化运营赋能方案

AI与教育的结合,已经成为教育行业发展的关键增长点。头部机构纷纷寻求AI技术与产品融合,以增强市场竞争力,希望在这场技术引发的行业洗牌中保持领先。 喜忧之中,展望未来,教培机构如何继续找准航向,贴近政…

零基础5分钟上手亚马逊云科技 - 网络安全分析最佳实践

简介: 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我会每天介绍一个基于亚马逊云科技…

Zotero 常用插件介绍

1. Zotero 插件安装方法 下载以 .xpi 结尾的插件;打开 Zotero → 工具 → 插件 → 右上小齿轮图标 → Install Add-on From File ... → 选择下载好的 .xpi 插件安装 → 重启 Zotero 2. 常用插件介绍 2.1. Scholaread - 靠岸学术 Zotero 英文文献相关插件&#xf…

前端调用后端,出现跨域报错怎么办

我前端是vue,后端是其他同事写的python,因为部署在不同的机器上,我前端如果直接调用他的python,axios请求就会出现跨域报错,如下 blocked by CORS policy 云云 怎么办呢,网上探索了一下午,才找…

[数据集][目标检测]机械常用工具检测数据集VOC+YOLO格式4713张8类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4713 标注数量(xml文件个数):4713 标注数量(txt文件个数):4713 标注…

HoloLens 和 Unity 空间坐标系统 Coordinate systems

坐标系统 Spatial coordinate systems 所有的 3D 图形应用程序都使用笛卡尔坐标系统来推理虚拟物体的位置和朝向。 这些坐标系建立三个垂直轴:X、Y 和 Z。 添加到场景的每个对象在其坐标系中都有一个 XYZ 位置。 Windows 调用在物理世界中具有实际意义的坐标系统…

线程池介绍

1.线程池简介 import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class CallableDemo {public sta…

视频美颜SDK与直播美颜工具的架构设计与性能优化

本篇文章,小编将深入讲解视频美颜SDK与直播美颜工具的架构设计,并分享一些性能优化的实践经验。 一、视频美颜SDK的架构设计 视频美颜SDK的核心在于其模块化的设计思路。通常,视频美颜SDK由以下几个主要模块组成: 1.图像预处理…

自主身份:Web3如何重新定义个人数据所有权

随着数字时代的快速发展,个人数据成为了一种新型的资产,深刻影响着我们的生活。然而,在Web2时代,个人数据往往被科技巨头所掌控,用户在享受互联网服务时,无意中失去了对自己数据的控制权。Web3的到来&#…

伦敦银行情的软件有什么选择?

普通投资者做伦敦银交易,多以技术分析为主、基本分析为辅的方法作为自己的交易策略,既然提到技术分析,那么伦敦银行情的软件就至关重要,因为我们需要通过这些软件才能看到行情并进行分析,那看伦敦银行情的软件有什么好…

Vue 旋转动画效果

目录 前言效果演示具体代码实现 前言 这里记录一个旋转动画&#xff0c;在鼠标经过的时候停止&#xff0c;鼠标离开继续旋转。 实现思路&#xff1a; 利用keyframes关键字定义一个旋转动画 效果演示 具体代码实现 <template><div class"container"><…