## hive数据库操作
* 上一节创建的hive数据库,实际上mysql中是没有的,而是在hdfs中存着。
* 具体可以在hadoop_hive库中的DBS表中查看到数据库的信息。
![](https://img.kancloud.cn/76/4f/764fdda6e32d76691b2cb4a200c2ad04_792x63.png)
* 可以看到在hdfs中存的位置。
## 数据库操作
### 1.1 查看数据列表
~~~sql
show databases;
~~~
[![](https://github.com/heibaiying/BigData-Notes/raw/master/pictures/hive-show-database.png)](https://github.com/heibaiying/BigData-Notes/blob/master/pictures/hive-show-database.png)
### 1.2 使用数据库
~~~sql
USE database_name;
~~~
### 1.3 新建数据库
语法:
~~~sql
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name --DATABASE|SCHEMA 是等价的
[COMMENT database_comment] --数据库注释
[LOCATION hdfs_path] --存储在 HDFS 上的位置
[WITH DBPROPERTIES (property_name=property_value, ...)]; --指定额外属性
~~~
示例:
~~~sql
CREATE DATABASE IF NOT EXISTS hive_test
COMMENT 'hive database for test'
WITH DBPROPERTIES ('create'='heibaiying');
~~~
### 1.4 查看数据库信息
语法:
~~~sql
DESC DATABASE [EXTENDED] db_name; --EXTENDED 表示是否显示额外属性
~~~
示例:
~~~sql
DESC DATABASE EXTENDED hive_test;
~~~
### 1.5 删除数据库
语法:
~~~sql
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
~~~
* 默认行为是 RESTRICT,如果数据库中存在表则删除失败。要想删除库及其中的表,可以使用 CASCADE 级联删除。
示例:
~~~sql
DROP DATABASE IF EXISTS hive_test CASCADE;
~~~