一 创建表:
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
#[EXTERNAL] :创建一张外部表,如果不加创建的就是内部表(管理表)
[(col_name data_type [COMMENT col_comment], ...)]
#字段名 字段类型
#comment : 字段的描述信息
[COMMENT table_comment]
#comment : 表的描述信息
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
#PARTITIONED BY :分区
[CLUSTERED BY (col_name, col_name, ...)
#CLUSTERED BY :分桶
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
#SORTED BY :排序,当我们插入数据时就会按照此字段进行排序(几乎不用)
[ROW FORMAT row_format]
DELIMITED [FIELDS TERMINATED BY ''] #按照指定字符进行字段的分割
[COLLECTION ITEMS TERMINATED BY ''] #对于集合数据类型(ARRAY、MAP 和 STRUCT)按照指定字段进行分割
[MAP KEYS TERMINATED BY ''] #对map集合数据按照指定字符进行分割切出K,V
[LINES TERMINATED BY ''] #以指定的字符进行行的分割。(一般都不用写因为换行都是以\n结束)
[STORED AS file_format]
#存储文件的格式:默认是textfile
[LOCATION hdfs_path]
#指定表所存储的路径
[TBLPROPERTIES (property_name=property_value, ...)]
#指定表的属性可以有多个,多个之间使用","分开
[AS select_statement]
#基于现有表的数据创建新表(可以把现有数据放到新表中)
[LIKE table_name]
#基于现现的表创建新表(基于现有表的表结构创建新表,没有数据)
二 创建表:
1.创建一个空表(内部表)
create table student(
id int comment ‘this is id’,
name string comment ‘this is name’
)
comment ‘this is table’
row format delimited fields terminated by ‘\t’
stored as textfile
location ‘/user/hive/warehouse/demo’
tblproperties (‘name’=‘student’,‘id’=‘111111’);
2.创建内部表(管理表)和外部表
create table stu_manager
like student;
create external table stu_external
like student;
3.查看表信息
desc 表名;
desc formatted 表名; #查看表的详细信息
三 外部表和内部表的转换
alter table 表名 set tblproperties(‘EXTERNAL’=‘TRUE/FALSE’);
注意: true-外部表(删除表时表中的数据不会删除)
false-内部表 (删除表时表中的数据会被删除)
四 表的其它操作
1.修改表名称 : alter table 旧名 rename to 新名;
2.修改字段名
alter table 表名 change [columns] 旧字段名 新字段名 字段类型
3.添加字段
alter table 表名 add columns 字段名 字段类型
4.替换字段名
alter table 表名 replace columns (字段名 字段类型,字段名 字段类型.......)
注意:
1.从表中的第一个字段开始替换
2.如果要替换的字段少于原表中的字段那么原表中多余的字段将会被删除掉
3.替换的字段类型必须和原字段的类型能够隐式转换。
五 删除表
hive (default)> drop table dept;
六 清空表
truncate table 表名
注意:只能清空管理表的内容