基本数据类型
集合数据类型

创建数据库
CREATE DATABASE [IF NOT EXISTS] database_name[COMMENT database_comment][LOCATION hdfs_path][WITH DBPROPERTIES (property_name=property_value, ...)];
1)创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/.db。
create database 库名;
2)避免要创建的数据库已经存在错误,增加 if not exists 判断。(标准写法)
create database if not exists 库名;
3)创建一个数据库,指定数据库在 HDFS 上存放的位置
* create database 库名 location ‘路径’;
查询数据库
1)显示数据库
show databases;
2)过滤显示查询的数据库
例: show databases like ‘db_hive*’;
3)显示数据库信息
desc database 库名;
4)显示数据库详细信息,extended
desc database extended 库名;
5)切换当前数据库
use 库名;
修改数据库
用户可以使用 alter database 命令为某个数据库的 dbproperties 设置键-值对属性值,
来描述这个数据库的属性信息
例: alter database db_hive set dbproperties(‘createtime’=’20170830’);
删除数据库
1)删除数据库
drop database 库名;
2)如果删除的数据库不存在,最好采用 if exists 判断数据库是否存在
drop database if exists 库名;
3)如果数据库不为空,可以采用 cascade 命令,强制删除
drop database 库名 cascade;
创建表
1)建表语句
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name(1)CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。(2)[EXTERNAL] 创建一个外部表,在建表的同时可以指定一个指向实际数据的路径(LOCATION),在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。加了就是外部,不加就是内部[(col_name data_type [COMMENT col_comment], ...)]col_name:字段data_type:字段类型[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]:定义行的格式[STORED AS file_format]:指定文件格式[LOCATION hdfs_path]:指定表的位置信息[TBLPROPERTIES (property_name=property_value, ...)]:额外属性[AS select_statement]:
管理表
默认创建的表都是所谓的管理表,有时也被称为内部表
当我们删除一个管理表时,Hive 也会删除这个表中数据。管理表不适合和其他工具共享数据。
外部表
因为表是外部表,所以 Hive 并非认为其完全拥有这份数据。删除该表并不会删除掉这
份数据,不过描述表的元数据信息会被删除掉。
管理表与外部表的互相转换
(1)查询表的类型
desc formatted 表名;
(2)修改内部表 为外部表
alter table 表名 set tblproperties(‘EXTERNAL’=’TRUE’);
(3)修改外部表 为内部表
alter table 表名 set tblproperties(‘EXTERNAL’=’FALSE’);
注意:(‘EXTERNAL’=’TRUE’)和(‘EXTERNAL’=’FALSE’)为固定写法,区分大小写!
修改表
重命名表
增加、修改和删除表分区
增加/修改/替换列信息
语法
更新列
ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_namecolumn_type [COMMENT col_comment] [FIRST|AFTER column_name]例:.alter table 表名 change 旧列名 新列名 数据类型;
增加列和替换列
ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENTcol_comment], ...)例:alter table 表名 add columns(列名 数据类型);增加列例:alter table 表名 replace columns(列名 数据类型);替换列
注:ADD 是代表新增一字段,字段位置在所有列后面(partition 列前),
REPLACE 则是表示替换表中所有字段
(1)查询表结构
desc 表名;
(2)添加列
alter table 表名 add columns(列名 数据类型);
(3)更新列
alter table dept change column deptdesc desc string;
alter table 表名 change 旧列名 新列名 数据类型;
(4)替换列
alter table dept replace columns(deptno string, dname string, loc string);
alter table 表名 replace columns(列名 数据类型,。。。,。。。);
(5)定义行的格式
row format delimited fields terminated by “\t”;
删除表
drop table 表名;
