HiveQL 数据定义语言使用(一)—Hive中数据库的创建、显示、删除和修改操作介绍

问题导读:

         1、创建数据库命令中DATABASE可以被哪个关键字代替使用?

         2、在创建数据库的时候如何指定数据库存放路径?

         3、如果一个数据库中含有表,那么删除该数据库有哪两种方式?

         4、删除数据库命令中CASCADE的作用,默认值是?

         5、数据库修改操作只能修改数据哪两方面信息?

        Hive 中数据库的概念本质上仅仅是表的一个目录或者命令空间。然而,对于具有很多组和用户的集群来说,可以避免表命名冲突。如果用户没有显式的指定数据库,那么将会使用默认数据库default。

一、创建数据库

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
  [COMMENT database_comment]
  [LOCATION hdfs_path]
  [WITH DBPROPERTIES (property_name=property_value, ...)];

        如上,是创建Hive数据库的一般模型,其中,DATABASE和SCHEMA表示同一个意思,所有数据库相关的命令中,都可以使用SCHEMA关键字代替DATABASE,如“CREATE DATABASE test” 和“CREATE SCHEMA test ”都表示创建test数据库。

       COMMENT:对数据库添加一些描述性信息;
       LOCATION:指定数据库存放路径。默认是根据Hive-site.xml如下配置路径后面目录中创建以.db结尾的数据库目录。

<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>hdfs://secondmgt:8020/hive/warehouse</value>
</property>

WITH DBPROPERTIES:为数据库增加一些和其相关的键-值对属性信息。

      提示:数据库创建命令是在Hive0.6版本中被引入的,属性设置“WITH DBPROPERTIES”是在Hive0.7版本中被引入的。

      事例操作如下:

hive> CREATE DATABASE test
    > COMMENT 'Test database is used for exercise'
    > LOCATION '/input'
    > WITH DBPROPERTIES ('creator'='NIITYZU','data'='2015-01-06');
OK
Time taken: 0.07 seconds
查看数据详细信息:

hive> DESCRIBE DATABASE EXTENDED test;
OK
test    Test database is used for exercise      hdfs://secondmgt:8020/input/testdb      hadoopUser
Time taken: 0.018 seconds, Fetched: 1 row(s)

二、显示数据库

      传统数据库中一般使用SHOW命令查看所有的数据,Hive中也是一样,Hive中还提供一种用LIKE使用正则表达式来筛选出需要的数据库名。一般模式如下:

SHOW (DATABASES|SCHEMAS) [LIKE identifier_with_wildcards];

      事例操作如下:

hive> SHOW DATABASES;
OK
default
hive
test
Time taken: 0.013 seconds, Fetched: 3 row(s)

hive> SHOW DATABASES LIKE 't.*';
OK
test
Time taken: 0.033 seconds, Fetched: 1 row(s)
三、删除数据库

      用户可以使用以下模式删除数据库

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];

      IF EXISTS是可选的,默认情况下,Hive是不允许用户删除一个包含有表的数据库的。用户要么先删除数据库中所有的表,再删除数据库;要么在删除数据语句后面加上关键字CASCADE,使Hive先自行删除数据库中的表,默认情况下后面接的是RESTRICT(可以不加)。否则会报以下错误:

hive> DROP DATABASE test;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. InvalidOperationException(message:Database test is not empty. One or more tables exist.)
加上CASCADE后,数据库可以正常删除,并且其对应的目录也同时被删除。

hive> DROP DATABASE test CASCADE;
OK
Time taken: 0.607 seconds

四、修改数据库

       用户可以使用ALTER DATABASE命令为某个数据库的DBPROPERTIES设置键-值对属性值,来描述这个数据库的属性信息;也可以使用该命令修改数据库的用户或权限,但是数据库的其他元数据信息都是不可以更改的,包括数据库名和数据库所在的目录位置。一般模式如下:

ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...); 
ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role; 
       此处不详细介绍修改功能。

你可能感兴趣的:(HiveQL 数据定义语言使用(一)—Hive中数据库的创建、显示、删除和修改操作介绍)