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 条件]
[GROUPBY 分组列]
[HAVING 条件]
[ORDERBY 排序列]
[CLUSTERED BY 分桶列[SORTED BY 排序列] INTO 分桶数 BUCKETS]
[CLUSTER BY 列| [DISTRIBUTE BY 列] [SORT BY 排序列]]
[LIMIT 正整数];
结构case when … then … else … end
from 表名 select 查询字段
casewhen 查询条件 then'表达式可做重命名'else'表达式'end;