基本类型
数据类型 | 长度 | 格式 |
---|---|---|
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键和值 |
单行命令
命令 | 功能 |
---|---|
show databases; | 显示所有数据库 |
show tables; | 显示当前数据库下所有表 |
create database 数据库名 [location ‘数据库位置’ comment ‘数据库备注’]; | 创建数据库 |
use 数据库; | 切换数据库,默认为default |
创建表
关键字 | 功能 |
---|---|
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 | 设置保存位置,默认在当前数据库下 |
删除数据库和表
删除命令 | 功能 |
---|---|
drop database [if exists] 数据库名 [cascade] | 存在则删除数据库下所有表和数据库 |
drop table [if exists] 表名 | 存在则删除表 |
修改表
命令 | 功能 |
---|---|
rename to 新表名 | 修改表名 |
add columns (列名 数据类型,…) | 向表中添加新列 |
drop column 列名 | 删除表中指定列 |
change 列名 新列名 新数据类型 | 修改表中指定列的列名和数据类型 |
replace columns (列名 数据类型 新列名 新数据类型,…) | 替换已有列的列名和数据类型,须一致 |
add partition (一级分区名=’自定义分区’,…) location ‘分区位置’ | 添加新的分区,要求已表已存在分区,分区名须对应 |
partition (分区名=’自定义分区’) rename to partition (分区名=’新分区’) | 修改自定义分区名 |
drop partition (分区名=’自定义分区’,…) | 删除自定义分区 |
运算符
运算符 | 功能 | 适用范围 |
---|---|---|
=,!=,>,<,>=,<= | 基本比较运算符 | 所有基本数据类型 |
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类型 |
聚合函数
聚合函数 | 功能 | 返回类型 |
---|---|---|
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 |
查询
SELECT [DISTINCT] 列名, ...
FROM 表名
[WHERE 条件]
[GROUP BY 分组列]
[HAVING 条件]
[ORDER BY 排序列]
[CLUSTERED BY 分桶列[SORTED BY 排序列] INTO 分桶数 BUCKETS]
[CLUSTER BY 列| [DISTRIBUTE BY 列] [SORT BY 排序列]]
[LIMIT 正整数];
FROM 表名 SELECT 查询字段
case when 查询条件 then '表达式可做重命名'
else '表达式' end;