数据定义语言部分,用于创建、修改和删除数据库、表、视图、函数和索引。
数据库
1、如何创建一个数据库
create database dba;
如果数据库dba已经存在的话,将会抛出一个错误信息。避免出现这种情况可以使用
create database if not exists dba;
2、查看hive中所包含的数据库
show databases;
如果数据库比较多的话,可以使用正则表达式来进行匹配所需要的数据库名。
show databases like 'h.*';
含义为列出以字母h开头,其他字符结尾的数据库名。
3、数据库存在形式
hive会为每一个数据库创建一个目录。数据库的文件目录名是以 .db 结尾的。
数据库所在的目录位于属性 hive.metastore.warehouse.dir 所指定的顶层目录之后。
使用默认配置的话,顶层目录也就是/user/hive/warehouse。
当我们创建数据库dba时,hive将会对应的创建一个目录,如下所示:
/user/hive/warehouse/dba.db。
可以通过如下命令来修改这个默认的位置:
create database dba location '/my/preferred/directory';
4、为数据库添加描述
为数据库增加一个描述信息的命令为:
create database dba comment 'this is my dba';
可以使用describe database命令查看该信息,并且这个命令还可以显示出数据库所在的文件目录路径。
describe database dba;
5、为数据库添加键值对相关属性信息
还可以为数据库增加一些和其相关的键-值对属性信息。6、
create database dba with dbproperties('creator'='zhaozhen','data'='2018-09-06');
可以通过下面这个命令来显示:
describe database extenden dba;
6、设置工作数据库
use命令用于将某个数据库设置为用户当前的工作数据库,但是没有一个命令可以让用户查看当前所在是哪个数据库,幸运的是,可以重复使用use命令。
use dba;
在hive v0.8.0版本以及之后的版本支持可以通过设置一个属性值来在提示符里面显示当前所在的数据库。
set hive.cli.print.current.db=true;
7、删除数据库
命令:
drop database if exists dba;
默认情况下,hive是不允许用户删除一个包含有表的数据库的,要么先删除数据库表,再删除数据库;
要么在删除命令的后面加上关键字cascade,使hive自行先删除数据库中的表。
drop database if exists dba cascade;
8、修改数据库
修改数据库只能修改描述这个数据库的属性信息。数据库的其他元数据信息都是不可更改的,包括数据库名和数据库所在的目录位置。
alter database dba set dbproperties('edited-by'='zhao');