Hiveql增删改查常用语句

0. 数据类型

基本类型

数据类型 长度 格式
tinyint 1 byte 20
smalint 2 byte 20
int 4 byte 20
bigint 8 byte 20
boolean 布尔 true
float 单精度浮点数 3.14
double 双精度浮点数 3.14
string 字符序列, 单双引号 ‘hello’
timestamp 整数,浮点数,字符串 距离1970.1.1经过的毫秒数

集合类型

数据类型 描述 举例
array 数组,含有相同类型的元素,通过下标获取值,如列名[0]表示第一个元素 array(‘hello’,’world’)
map 键值对,通过键获取值,如列名[‘key’]获取字符串key对应的值 map(‘key’,’value’)
struct 结构体,类似键值对但不包含键,通过列名.first获得first对应的内容 struct(‘hello’,’world’)

默认分隔符

分隔符 功能 备注
\n 分割文本文件,每行作为一条记录
^A 分割字段 在linux下Ctrl+v Ctrl+a打出来,下同
^B 分割array,struct,map内每个元素 map中每组键值对为一个元素
^C 分割map键和值

1. 创建数据库和表

单行命令

命令 功能
show databases; 显示所有数据库
show tables; 显示当前数据库下所有表
create database 数据库名 [location ‘数据库位置’ comment ‘数据库备注’]; 创建数据库
use 数据库; 切换数据库,默认为default

创建表

CREATE [EXTERNAL] [数据库名.] TABLE [IF NOT EXISTS] 表名
(列名 数据类型 [COMMENT '列备注字符串'], ...)
[COMMENT '表备注字符串']
[ROW FORMAT DELIMITED]
[fields terminated by '列分隔符']
[collection items terminated by '元素分隔符']
[map keys terminated by '键值分隔符']
[lines terminated by '行分隔符']
[partitioned by (一级分区名 string, 二级分区名 string, ...]
[STORED AS textfile]
[LOCATION '表存储位置']
关键字 功能
EXTERNAL 外部表,省略则创建内部表
ROW FORMAT DELIMITED 设置自定义格式的分割符
fields terminated by 设置列分隔符,默认为^A,常改为\t
collection items terminated by 设置元素间分隔符,默认为^B
map keys terminated by 设置键值间分隔符,默认为^C
lines terminated by 设置文本中行分隔符,默认为\n
partitioned by 设置分区名, 可将数据分配到不同分区内分目录保存,一级表示第一层目录
STORED AS textfile 按文本文件类型保存表
LOCATION 设置保存位置,默认在当前数据库下

2. 删除数据库和表

删除命令 功能
drop database [if exists] 数据库名 [cascade] 存在则删除数据库下所有表和数据库
drop table [if exists] 表名 存在则删除表

3. 修改表

alter table 表名

命令 功能
rename to 新表名 修改表名
add columns (列名 数据类型,…) 向表中添加新列
drop column 列名 删除表中指定列
change 列名 新列名 新数据类型 修改表中指定列的列名和数据类型
replace columns (列名 数据类型 新列名 新数据类型,…) 替换已有列的列名和数据类型,须一致
add partition (一级分区名=’自定义分区’,…) location ‘分区位置’ 添加新的分区,要求已表已存在分区,分区名须对应
partition (分区名=’自定义分区’) rename to partition (分区名=’新分区’) 修改自定义分区名
drop partition (分区名=’自定义分区’,…) 删除自定义分区

4. 查询表

基本查询

SELECT [DISTINCT] 列名, ... 
FROM 表名 
[WHERE 条件] 
[GROUP BY 分组列] 
[HAVING 条件] 
[ORDER BY 排序列]
[CLUSTERED BY 分桶列[SORTED BY 排序列] INTO 分桶数 BUCKETS]
[CLUSTER BY 列| [DISTRIBUTE BY 列] [SORT BY 排序列]] 
[LIMIT 正整数];

结构case when … then … else … end

from 表名 select 查询字段 
case when 查询条件 then '表达式可做重命名' 
else '表达式' end;

5. 运算符

运算符 功能 适用范围
=,!=,>,<,>=,<= 基本比较运算符 所有基本数据类型
is NULL,is not NULL 是否为空 所有类型
like, rlike, regexp 匹配成功返回则,匹配到null返回null,后两个支持正则 字符串类型
+,-,*,/,% 加减乘除取模 所有数字类型
and, or, not, &&, , !
A[n] 返回数组A中第n+1个元素 array类型
M[key] 返回MAP中key对应的值 map类型
S.x 返回结构体S中x对应的值 struct类型

6. 常用函数

  1. show functions; 查看当前会话包含的所有函数
  2. describe function [extended] 函数名; 查看函数说明文档

聚合函数

聚合函数 功能 返回类型
count 统计查询的行数 bigint
sum,avg,max,min 对一列数据求和,平均,最大,最小值 double
var_pop 求方差 double
stddev_pop 求标准偏差 double
covar_pop 求协方差 double
collect_set 对array数组去重 array

科学计算函数

科学计算函数 功能 返回类型
round(d,n) 对浮点数d四舍五入保留n位小数 double
floor(d) 返回比浮点数d小的最大整数 bigint
ceil(d) 返回比浮点数d大的最小整数 bigint
rand(n) 以整数n作种子生成随机数 double
exp(d) e的d次幂 double
log(b,d) 以b为底d的对数 double
pow(d,p) d的p次幂 double
sqrt(d) d的平方根 double
abs(d) d的绝对值 double
pmod(d,p) d对p取模 double
sin, cos, tan, asin, acos, atan 三角函数 double
pi() π圆周率 double

类型转换函数

类型转换函数 功能 返回类型
cast(e as type) 将e转换成其他数据类型,失败返回null 转换后数据
binary(e) 将e转换成二进制 转换后数据

字符串函数

字符串函数 功能 返回类型
concat 拼接多个字符串成一个字符串 string
encode 对字符串按指定编码集进行编码 binary
decode 对二进制按指定编码集进行解码 string
instr 查找字符串在目标字符串中的索引位置,从1开始 int
length 字符串长度 int
lower,upper 转换为小写/大写字母 string
initcap 首字母大写 string
ltirm,trim 去除前空格,去除前后空格 string
parse_url 抽取url指定部分的内容 string
substr 截取指定位置长度的字符串 string
split 按正则拆分字符串 array
rpad 左填充,指定填充长度和内容 string
regexp_replace 按正则替换目标字符串 string
printf 格式化打印字符串 string
space 打印多个空格 string

表生成函数

类型转换函数 功能 返回类型
explode 生成多行,每行对应数组中一个元素或一个键值对 多行
stack 将多列转换成多行 多行
json_tuple 从json中获取多个键作为一个元组返回 tuple
parse_url_tuple 元组形式获取url内容 tuple

猜你喜欢

转载自blog.csdn.net/wxfghy/article/details/80677785