Hive SQL语言

news2025/1/13 15:43:20

目录

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_condition


 join_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.coloradmin.cn/o/2062916.html

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

相关文章

【日记】好想换电脑(634 字)

正文 最近连着发了好多高温橙色预警,就算坐在行内都能感觉到明显的闷热。 每次写日记想一想今天都做了些什么,总是觉得什么也没做。上班之后感觉生活十分枯燥。明明学生时代有那么多的事情可以写。 昨天涩得太晚了,2 点钟才睡。今天有些睡眠不…

9年多来 LVFS为Linux系统提供了超过1.1亿个固件文件

本周是红帽公司的理查德-休斯(Richard Hughes)启动 Linux 厂商固件服务(LVFS)九年的日子,该服务旨在通过开源的 Fwupd 固件更新工具简化固件更新/分发流程。 在纪念 LVFS 九岁生日之际,Richard Hughes 与大…

快速了解软件测试——测试用例的方法

测试用例的编写方法有八种,其中等价类、边界值、判定表、场景法、流程图重要且使用得多 ●等价类●边界值●判定表●因果图[了解]●正交法[了解]●场景法●流程图●错误推测法[了解] 1、等价类 为什么要用等价类划分法? ●从大量数据中划分范围(等价类),然后从每…

DVWA靶场通关(CSRF)

CSRF 是跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服…

【npm】npm 代理问题

使用electron 打包失败,报如下错误: proxyconnect tcp: dial tcp :0: connectex: The requested address is not valid in its context.解决办法 npm config delete proxy npm config delete https-proxy如果设置了代理,使用以下命令设置 …

手撕⼆叉树——堆

1. 树 1.1 树的概念与结构 树是⼀种⾮线性的数据结构,它是由 n ( n>0 ) 个有限结点组成⼀个具有层次关系的集合。把它 叫做 树是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,⽽叶朝下的。 • 有⼀个特殊的…

AntSK:在无网络环境中构建你的本地AI知识库的终极指南

亲爱的读者朋友们,我是许泽宇,今天我将深入探讨一个引人注目的开源工具——AntSK。这个工具让您在没有互联网连接的情况下,仍然能够进行人工智能知识库的对话和查询。想象一下,即使身处无网络环境中,您也可以轻松与AI进…

class 1: vue初识

目录 特点Vue.js 2和Vue.js 3优缺点对比Vue.js 2缺点Vue.js 3优点 架构createApp的对象参数template属性data属性methods属性 vue是由Evan You开源的轻量级前端框架,诞生于2014年,Vue.js 3采用MVVM架构,支持声明式编程、组件化开发、前端路由…

【IEEE独立出版】第三届人工智能、物联网和云计算技术国际会议(AIoTC 2024,9月13-15)

第三届人工智能、物联网与云计算技术国际会议(AIoTC 2024)将于2024年9月13日-15日在中国武汉举行。 本次会议由华中师范大学伍伦贡联合研究院与南京大学联合主办、江苏省大数据区块链与智能信息专委会承办、江苏省概率统计学会、江苏省应用统计学会、Sir Forum、南京理工大学、…

防火墙iptalbes和firewalld

一、IPtables介绍 Iptables是unix/linux自带的一款开源的基于包过滤(对OSI模型的四层或者是四层以下进行过滤)的防火墙工具,它的功能十分强大,可以对流入和流出服务器的数据包进行很精细的控制。 iptables其实并不是真正的防火墙,我们可以把…

软信天成:国内企业需要什么样的国产主数据管理平台?(三)

在前两期的内容里,我们探讨了当前国内企业使用国产主数据管理平台的紧迫需求,概述了软信自主研发的智能主数据管理平台如何通过“数据建模”、“个性化配置”、“PIM管理”以及“权限管理”四大功能推动企业高效运作。 本期,我们将为您介绍平…

瑞吉外卖--登录退出功能的实现

登录功能 需求分析 1. Controller 定义:Controller是MVC(Model-View-Controller)设计模式中的一部分,负责处理HTTP请求并返回HTTP响应。在Spring MVC中,Controller通常是一个处理特定HTTP请求的类。作用: …

可调电阻是否有正负极?

可调电阻没有固定的正负极,但是有一根箭头表示旋转的方向。 可调电阻在形状上类似于一个圆柱形或方形的小盒子,通常带有三个引脚或更多,其中一个是中心引脚,其余的是两个端部引脚。不像电解电容或二极管那样有固定的正负极&#…

PHP轻创推客集淘客地推任务平台于一体的综合营销平台系统源码

🚀轻创推客,营销新纪元 —— 集淘客与地推任务于一体的全能平台🌐 🌈【开篇:营销新潮流,轻创推客引领未来】 在瞬息万变的营销世界里,你还在为寻找高效、全面的营销渠道而烦恼吗?&…

Android经典实战之跳转到系统设置页面或其他系统应用页面大全

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 在Android开发中,经常需要跳转到系统设置页面或其他系统应用页面。以下是一些常见的跳转方式及对应的Intent动作: 1. 跳…

全渠道分销零售行业免费开源ERP解决方案

引言 协助分销及零售连锁企业快速搭建新零售格局,充分整合移动社交流量、门店流量,实现企业线上线下 全渠道管理运营。 业务挑战 传统的经营模式,客户流失严重 分销及零售企业还处于传统经营模式,单一的商品、收银方式、会员维护…

绝对能让你效率起飞的10个AI工具及ChatGPT国内镜像集合【2024必备】

随着GPT的兴起,一大批AI工具随之诞生,其中有很多堪称神器 分享10个国内可以使用使用的网站和AI搬砖工具,摸鱼起飞就靠他们了。 1: AI Plus【AI对话】 推荐指数:⭐️⭐️⭐️⭐️⭐️ 适合人群:学生党、打…

前端面试题每日一学_2

今日一题: 下面JS代码执行后,最终的三个console.log的输出结果是什么? var obj { num: 1 }; var arr1 [1, 2, obj]; var arr2 arr1.slice(1); arr2[0]; arr2[1].num; obj.num; arr1[2].num; console.log(arr1[1] arr2[0]); console.log…

家政预约小程序源码+快速搭建全攻略

前言: 家政预约小程序是一种便捷的家政服务预约平台,它通过互联网技术将家政服务资源与用户连接起来,为用户提供高效、便捷的家政服务预约体验。 一、家政服务小程序开发架构 前端:小程序前端开发主要使用的技术包括HTML、CSS、…

向量嵌入是什么?理解LLM数据表示的基础

向量嵌入将数据转换为数学方程,赋予了人工智能的认知能力,但它们是如何使机器能够“学习”和“成长”的呢? 向量嵌入是什么? 向量嵌入这玩意儿,其实就是给数据穿上一件数学的外衣,让它们之间的关系和相似…