Hive HQL知识DDL汇总之数据库操作

9 篇文章 2 订阅
5 篇文章 1 订阅
本文详细介绍了Hive中的DDL操作,包括数据库的创建、查询、修改和删除。Hive的元数据默认存储在derby数据库,但企业通常配置为存储在MySQL。数据本身则保存在HDFS中。通过HQL,可以执行类似SQL的数据库操作,例如创建数据库、显示数据库列表、修改数据库属性以及删除数据库。需要注意的是,Hive的数据库元数据信息不可更改,且数据库非空时无法直接删除,需使用`cascade`参数进行强制删除。
摘要由CSDN通过智能技术生成

Hive HQL知识DDL汇总之数据库操作

1. 概述

  1. Hive可以将结构化数据、文件转换为一张表来进行数据查询和分析。
  2. Hive基于SQL规范实现了一套类SQL的查询规范,称之为HQL
  3. SQL本身是一种编程语言规范,数据类型定义、函数定义、DDL(data definition language)、DML(data manipulation language)。
  4. HQL可以看成是输入的信息,经过hive驱动转换后(sql解析、sql优化、编译–将sql转换为mapreduce程序、执行器),最终是变成了mapreduce程序运行。
  5. 既然是SQL规范,则对应HQL语句大致可以分为DDL数据定义和DML数据操作语言。本文主要讲解DDL数据定义语言,也就是针对数据库创建、修改,数据表创建、修改等的操作。
  6. Hive本身不能存储数据,所以元数据也就是数据库表等结构信息存储在其他数据库中,默认是derby数据库,一般企业中配置为存储在mysql数据库中。表中数据则存储在hdfs文件系统中。
  1. 本文环境是配置将元数据存储在mysql中,具体环境配置可以参考我另外一篇博文
    在这里插入图片描述
  2. 这里可以看到存储在mysql中的hive表的元数据信息
    在这里插入图片描述
  3. 可以可以看到hive元数据的版本信息
    在这里插入图片描述
  4. 查看数据库列表信息
    在这里插入图片描述

2. 数据库和数据表在HDFS中位置

本文中,配置hive的数据库和数据库表的元数据存储在mysql数据库中。如上述截图所示
那对应的数据信息存储在哪里呢?没错,就是hdfs。

  • hive的网页端:http://linux100:10002/
    在这里插入图片描述
  • hdfs的网页端:http://linux100:9870/dfshealth.html#tab-overview
    在这里插入图片描述
    在这里插入图片描述
  • hive的数据存储路径
# 这个路径下就是数据库和数据表数据存储路径
/user/hive/warehouse/

在这里插入图片描述

3. 数据库操作

hive中默认数据库名:default

3.1 创建数据库

create database db_hive;

# 可以优化sql语句
create database if not exists db_hive;

# 可以指定数据库在hdfs上存储数据的位置(注意元数据并不存储在hdfs上).但一般不会这么指定,而是在配置文件中统一配置存储路径
create database if not exists db_hive location '/db_hive.db';

在这里插入图片描述
可以看出就算是创建数据库的操作,也是有一个完整的流程:

编译指令(Compiling command)
指令分析(Semantic Analysis)
完成指令编译( Completed compiling command)
执行指令(Executing command)
启动任务(Starting task)
完成指令执行( Completed executing command)
执行结果显示(OK)

3.2 查询数据库

  1. 显示数据库
  • 普通查询,显示所有数据库
show databases;

在这里插入图片描述

  • 过滤查询, 这里使用like进行模糊查询,*是通配符号
show databases like 'db_do*';

show databases like '*it';

在这里插入图片描述
在这里插入图片描述
2. 查看数据库详细信息, desc指令

  • 显示数据库信息
desc database db_doit;

在这里插入图片描述
注意,comment可以针对字段也可以针对数据库,数据库表加描述

create database db_comment_test comment 'this is about db comment test';

在这里插入图片描述

  • 显示数据库详细信息
desc database extended db_doit;

在这里插入图片描述
3. 切换数据库

use db_doit;

# 通过以下指令查询当前数据库
 select current_database();

在这里插入图片描述

3.3 修改数据库

修改数据库和表的指令和mysql一样,都是alter指令。
使用alter database对dbproperties 设置键值对属性值。
注意,数据库其他元数据信息不可更改,这一点和mysql等关系型数据库不一样,因为hive并不是一个真正的数据库。所以hive的数据库名、数据库所在目录位置都不能修改

# 这里把创建时间修改到2030年
alter database db_doit set dbproperties('createtime'='20300905');
# 使用以下指令查看详细信息
desc database extended db_doit;

在这里插入图片描述

3.4 删除数据库

  1. 删除空数据库drop指令
    删除前
    在这里插入图片描述
drop database db_drop_test;

删除后
在这里插入图片描述
2. 删除前判断数据库是否存在

drop database if exists db_drop_test;

在这里插入图片描述
在这里插入图片描述
3. 数据库不为空,强制删除 cascade参数

drop database db_drop_test2;

普通删除前
在这里插入图片描述
普通删除,删除失败
在这里插入图片描述
强制删除

# cascade 串联和级联的意思,可以理解为递归删除文件一样
drop database db_drop_test2 cascade;

删除后,删除成功
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值