Create/Drop/Alter/Use Database
Create Database
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
SCHEMA 和 DATABASE 是可以互换的,它们表示的是相同的东西。
CREATE DATABASE 语句在 Hive 0.6 (HIVE-675) 中加入的。 The WITH DBPROPERTIES 子句是 Hive 0.7 (HIVE-1836) 中加入的。
Drop Database
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
SCHEMA 和 DATABASE 是可以互换的,它们表示的是相同的东西。DROP DATABASE 语句是在 Hive 0.6 (HIVE-675) 中加入的。 hive 默认是 RESTRICT 模式,如果数据库中不为空,即存在表,DROP DATABASE 将会失败。为了一并删除数据库中的表,可以使用 DROP DATABASE … CASCADE,这个用法是在 Hive 0.8 (HIVE-2090) 中加入的。
Alter Database
ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...); -- (Note: SCHEMA added in Hive 0.14.0)
ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role; -- (Note: Hive 0.13.0 and later; SCHEMA added in Hive 0.14.0)
ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path; -- (Note: Hive 2.2.1, 2.4.0 and later)
SCHEMA 和 DATABASE 是可以互换的,它们表示的是相同的东西。ALTER SCHEMA 是在 Hive 0.14 (HIVE-6601) 中加入的。
ALTER DATABASE … SET LOCATION 不会将数据库的当前文件夹中的内容移动到新的指定路径。它不会更改数据库下的任何表/分区所关联的位置。它只会改变数据库中新建表的默认父目录。这种行为类似于更改表目录而不会将现有分区移动到其他位置。
不能更改关于数据库的其他元数据。
Use Database
USE database_name;
USE DEFAULT;
SELECT current_database();
USE为所有后续 HiveQL 语句设置当前数据库。若要还原到默认数据库,请使用关键字“default”而不是数据库名称。查看当前使用的数据库可以使用 SELECT current_database() (从Hive 0.13.0起)。
USE database_name 在 Hive 0.6 (HIVE-675) 中被加入。