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.mzph.cn/pingmian/52282.shtml

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

相关文章

spring揭秘09-aop03-aop织入器织入横切逻辑与自动织入

文章目录 【README】【1】spring aop的织入【1.1】使用ProxyFactory 作为织入器【1.2】基于接口的代理(JDK动态代理,目标类实现接口)【补充】 【1.2】基于类的代理(CGLIB动态代理,目标类没有实现接口)【1.2…

数据缓存软件Redis推出Redis 8 这更改许可证后首个重大版本更新

2024 年 3 月流行的数据库缓存应用 Redis 宣布修改开源许可证,此次修改许可证的目的本质上就是避免大型云计算公司白嫖,例如亚马逊的 AWS 等。AWS 等云计算服务商基于 Redis 推出托管服务并向客户收费,作为开发商 Redis 并没有获得收益&#…

vue的事件修饰符、数组变化侦测、计算属性、class绑定、style绑定

一、事件修饰符 功能:用于简化代码。 .stop 阻止事件冒泡.prevent 阻止默认事件.once.enter 两种使用方式: e.stopPropagation(); //第一种 click.stop"clickP" //第二种 二、数组变化侦测 分为两类: 1、能够引起UI的自动…

如何从头开始编写一个简单的 RPC 协议(手写 Dubbo 的自定义协议)

1. 设计协议格式 首先,需要定义协议的数据包格式,这通常包括头部(Header)和主体(Body)两部分。 Header:存储协议的元数据,例如消息类型、序列化方式、请求 ID 等。 Magic Number (2…

阿里云CentOs ClickHouse安装

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 ClickHouse安装目录 前言…

etcd 的Put请求处理

在介绍etcdctl的内容中,我们知道了etcdctl实际上是向etcd服务端执行了grpc请求获取对应的结果,这一篇主要介绍当向etcd服务端执行Get/Put指令的时候究竟做了哪些工作。 Client发出请求 Put指令和之前介绍到的Get指令类似,通过grpc client发…

easypoi模板导出word并且合并行

导出流程 引入依赖制作模板合并导出 引入依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.1.2</version> </dependency>制作模板 合并行是备注那一列&#xff0c;这一列…

MongoDB如何时间范围查询

MongoDB作为一个高性能、开源、无模式的文档型数据库&#xff0c;广泛应用于各种需要灵活数据模型的应用场景中。在处理与时间相关的数据时&#xff0c;MongoDB提供了强大的查询能力&#xff0c;允许我们轻松地进行时间范围查询。本文将详细介绍如何在MongoDB中执行时间范围查询…

SpringBoot工厂模式

前言 下面的示例展示了 SpringBoot 中如何使用工厂模式&#xff0c;该示例通过 ApplicationContext 直接获取 Spring 容器中所有 Animal 的 Bean&#xff0c;然后将它们存储在 animalMap 中&#xff0c;使用时直接从 Map 中获取实例。 另一种工厂模式可参考我另一篇文章 &…

YOLOv8目标检测推理流程及Python代码

在这章中将介绍目标检测推理原理,以及基于onnx模型使用Python语言进行推理。在推理原理章节中,将了解onnx模型的输入和输出,对输入的图片需要进行预处理的操作,对输出的结果需要进行后处理的操作等;在Python代码篇,将给出推理代码。 这里注意一下的是,由于在导出onnx模型…

DRF——pagination分页模块

文章目录 分页继承APIView类用法1.PageNumberPagination2.LimitOffsetPagination3.CursorPagination 继承GenericAPIView派生类用法1.PageNumberPagination2.LimitOffsetPagination3.CursorPagination 分页 在查看数据列表的API中&#xff0c;如果 数据量 比较大&#xff0c;肯…

嵌入式UI开发-lvgl+wsl2+vscode系列:9、控件(Widgets)(二)

一、前言 接下来我们总结第二部分的控件。 二、示例 1、image&#xff08;图像&#xff09; 1.1、示例1 #include "../../lv_examples.h" #if LV_USE_IMAGE && LV_BUILD_EXAMPLESvoid lv_example_image_1(void) {LV_IMAGE_DECLARE(img_cogwheel_argb);lv…

完成课题ssrf实现.SSH未创建写shell,同时完成其他漏洞复现

一、SSRF (Server-Side Request Forgery) 是一种网络安全漏洞&#xff0c;发生在服务器端应用程序中&#xff0c;允许攻击者通过服务器向任意网络资源发送请求&#xff0c;而无需用户直接参与。这种漏洞通常源于程序设计错误&#xff0c;例如当应用程序使用用户的输入作为URL请…

源码开发搭建一款手机游戏的费用是怎样的呢?

开发和搭建一款游戏的费用是一个复杂的过程&#xff0c;受多个关键因素的影响。这些因素涵盖了从技术实现到市场运营的各个方面。下面将从几个主要角度简要分析影响开发成本的因素及其费用范围。 1. 游戏复杂度 游戏的复杂性直接影响开发时间和资源投入。简单的游戏逻辑和玩法…

根据json字符串 自动生成 实体类 Model Entity .NET

①访问json2csharp的在线工具&#xff1a;http://json2csharp.com/ ②复制json字符串&#xff0c;粘贴到左边&#xff0c;按下面Convert按钮 ③右边就是 生成的 实体类 &#xff0c;直接复制到 .cs文件内就能使用 ④或者点击 Zip As File 按钮&#xff0c;直接生成 N个.cs文…

基于Springboot和BS架构的宠物健康咨询系统pf

TOC springboot509基于Springboot和BS架构的宠物健康咨询系统pf 第一章 课题背景及研究内容 1.1 课题背景 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#x…

使用VRoid Studio二次元建模,创建专属于自己的二次元卡通人物模型,创建完全免费开源且属于自己VRM模型

最终效果 文章目录 最终效果什么是VRoid Studio官网地址下载安装VRoid Studio1、可以去它的官网下载2、steam安装 创建模型配置参数 导出模型使用别人的VRM模型这里我分享几个不错的模型&#xff0c;大家可以自行去下载 完结 什么是VRoid Studio 如果你玩过能捏脸的游戏你就能…

游戏开发设计模式之责任链模式

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许将请求沿着处理者链进行发送。每个处理者对象都有机会处理该请求&#xff0c;直到某个处理者决定处理该请求为止。 概念与定义 责任链模式的核心思想是将多个处理器…

优化Maven镜像配置:使用阿里云加速依赖下载

更新后的Maven镜像配置非常重要&#xff0c;尤其是在使用阿里云的Maven仓库时。以下是针对Maven settings.xml 文件的优化配置建议以及相关的详细解释&#xff1a; <mirrors><mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf>…

8.23CF训练题解

A题Painting the Ribbon题解 其实这是一个经典的数学思维题 &#xff0c;飘带有N段&#xff0c;每段可以着色&#xff0c;有M种颜色可以选择&#xff0c;另一个人有K次修改颜色的机会&#xff0c;问有没有方式使得飘带在K次修改后都无法变为单一颜色 &#xff1f; 其实最简单的…