創建數據庫
hive創建數據庫的最簡單寫法和mysql差不多:
create database foo;
僅當名為foo的數據庫當前不存在時才創建:
create database if not exists foo;
創建數據庫時指定位置,這個位置一般是在hdfs上的位置:
create database foo location '/db/foo';
查看已經創建的數據庫:
show databases ;
使用通配符查看foo開頭的數據庫:
show databases like 'foo.*';
查看創建數據庫的語句:
show create database foo ;

hive為每一個數據庫創建一個目錄,這個數據庫中的表將會以子目錄的形式放在這個數據庫目錄下
有一個例外就是default數據庫中的表,default數據庫沒有自己的目錄,所以是直接放在/user/hive/warehouse下面的:
同樣的,當創建數據庫如果沒有指定存儲位置,默認就是在/user/hive/warehouse/下的:
數據庫描述信息
在創建數據庫時可以指定描述性信息:
create database foo comment 'this is foo database';
通過describe database可以查看到數據庫的詳細信息:
describe database foo;
數據庫鍵值對信息
數據庫可以有一些描述性的鍵值對信息,在創建時添加:
create database foo with dbproperties ('own'='cc', 'day'='20180120');
查看數據庫的鍵值對信息:
describe database extended foo;

要修改數據庫的鍵值對信息:
alter database foo set dbproperties ('k1'='v1', 'k2'='v2');
刪除數據庫
drop database if exists foo;
注意:
默認情況下是不允許直接刪除一個有表的數據庫的:
刪除一個有表的數據庫有兩種辦法:
1. 先把表刪干凈,再刪庫。
2. 刪庫時在后面加上cascade,表示級聯刪除此數據庫下的所有表:
drop database if exists foo cascade;
prompt顯示當前數據庫名稱
如果在一個數據庫很多的環境下工作,需要 在不同的庫之間切來切去(手動敲查詢的時候全使用dbName.table可不是什么好主意…),可能一不小心就忘記自己當前在哪個數據庫下了,可以通過設置一個屬性改變當前的命令提示符,更專業的說法是prompt(用過CLI界面的應該對這個概念很熟悉),通過設置hive.cli.print.current.db屬性可以在hive cli中顯示當前數據庫的名稱,比如當前的數據庫名稱是foo:
set hive.cli.print.current.db=true
.
