HiveQL命令(一)- 数据库操作

文章目录

  • 前言
  • 一、数据库操作
    • [1. 创建数据库](#1. 创建数据库)
      • [1.1 语法及解释](#1.1 语法及解释)
      • [1.2 创建数据库示例](#1.2 创建数据库示例)
    • [2. 查看数据库](#2. 查看数据库)
      • [2.1 查看所有数据库](#2.1 查看所有数据库)
      • [2.2 查看数据库信息](#2.2 查看数据库信息)
        • [2.2.1 语法及解释](#2.2.1 语法及解释)
        • [2.2.2 查看数据库信息示例](#2.2.2 查看数据库信息示例)
    • [3. 切换数据库](#3. 切换数据库)
      • [3.1 语法](#3.1 语法)
      • [3.2 示例](#3.2 示例)
    • [4. 修改数据库](#4. 修改数据库)
      • [4.1 语法](#4.1 语法)
      • [4.2 示例](#4.2 示例)
    • [5. 删除数据库](#5. 删除数据库)
      • [5.1 语法及解释](#5.1 语法及解释)
      • [5.2 示例](#5.2 示例)
  • 注意

前言

本指南旨在提供一份全面而详细的 Hive 数据库操作手册,帮助读者深入理解并熟练运用 Hive 中的数据库管理命令。我们将从最基础的创建数据库开始,逐步介绍如何查看现有数据库及其信息、切换当前使用的数据库、修改数据库属性及位置,直到最后讲解如何删除不再需要的数据库。


一、数据库操作

1. 创建数据库

1.1 语法及解释

创建数据库的语法如下:

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

语法解释:

  • (DATABASE|SCHEMA):指定要创建的对象类型。SCHEMA 和 DATABASE 的用法是可以互换的,它们的含义是一样的。
  • [IF NOT EXISTS]:这是一个可选的子句,确保只有在指定的数据库或模式不存在时才进行创建。
  • [COMMENT database_comment]:这是一个可选的参数,用于提供关于数据库或模式的注释或描述。
  • [LOCATION hdfs_path]:这是一个可选的参数,用于指定数据库或模式在HDFS(分布式文件系统)中的位置。
  • [WITH DBPROPERTIES (property_name=property_value, ...)]:这是一个可选的参数,用于指定数据库或模式的属性。可以自定义多个属性,每个属性由属性名和属性值组成。

1.2 创建数据库示例

创建数据库ods_test01

sql 复制代码
create database if not exists ods_test01
comment '创建测试数据库示例'
location '/user/hive/location/ods_test01'
with dbproperties ('creator'= 'handsome','create_time'='2024-12-13 21:34:35');

创建数据库ods_test02

sql 复制代码
create database if not exists ods_test02;

创建数据库ods_test01后自定义的/user/hive/location/ods_test01目录会自动创建。

创建数据库ods_test02没有指定location属性,默认会保存到配置文件hive-site.xml中设置的hive在HDFS上的默认目录/user/hive/warehouse下,默认名称为数据库名称.db此处为ods_test02.db

在这个创建数据库的示例中,数据库ods_test01对应hdfs上的/user/hive/location/ods_test01目录,也就是说数据库ods_test01中的表和数据若没有特殊指定位置,都将保存在/user/hive/location/ods_test01目录下。

可以使用如下命令查看数据库ods_test01的目录。

可以使用如下命令查看数据库ods_test02的目录。

或者可以访问hdfs的UI页面查看数据库ods_test01和数据库ods_test02的目录。


2. 查看数据库

2.1 查看所有数据库

sql 复制代码
show databases;

2.2 查看数据库信息

2.2.1 语法及解释

查看数据库信息语法如下。

sql 复制代码
DESCRIBE DATABASE [EXTENDED] database_name;

语法解释:

  • EXTENDED:显示更详细的信息(数据库属性信息)。
2.2.2 查看数据库信息示例

查看数据库ods_test01和数据库ods_test02的信息。

sql 复制代码
describe database ods_test01;
describe database ods_test02;

查看数据库ods_test01和数据库ods_test02的信息及数据库属性信息。

sql 复制代码
describe database extended ods_test01;
describe database extended ods_test02;

3. 切换数据库

3.1 语法

切换数据库的语法如下。

sql 复制代码
USE database_name;

3.2 示例

切换到数据库ods_test01

sql 复制代码
use ods_test01;

4. 修改数据库

4.1 语法

修改数据库属性语法如下。

sql 复制代码
ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...);

修改数据库所属用户语法如下。

sql 复制代码
ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role;

修改数据库位置语法如下。

sql 复制代码
ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path;

4.2 示例

修改数据库ods_test01属性示例。

sql 复制代码
alter database ods_test01 set dbproperties  ('creator'= 'alter_handsome','new_pro'='alter_test');

查看数据库ods_test01修改后的属性。

sql 复制代码
describe database extended ods_test01;

修改数据库ods_test01所属用户示例。

sql 复制代码
alter database ods_test01 set owner user test_user;

查看数据库ods_test01修改后的用户。

sql 复制代码
describe database ods_test01;

修改数据库ods_test01的位置示例。

sql 复制代码
alter database ods_test01 set location 'hdfs://hadoop:9000/user/hive/new_location/ods_test01.db';

在 Hive 中,修改数据库的位置时,实际上只更新了MySQL中元数据存储的位置信息,并不会自动移动 HDFS 上的数据。这意味着旧位置的数据仍然保留在原来的 HDFS 路径中,而新的路径将被用作未来操作的默认位置。也就是说修改数据库的位置后,并不会改变创建数据库时设置的数据库位置,而是在元数据中把新位置映射到原位置。

查看数据库ods_test01修改后的位置。

sql 复制代码
describe database ods_test01;

5. 删除数据库

5.1 语法及解释

删除数据库语法如下。

sql 复制代码
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];

语法解释:

  • [RESTRICT|CASCADE]:这是一个可选的子句,用于指定删除操作的级联行为。如果使用RESTRICT,则只有在数据库或模式为空(没有表或其他对象)时才允许删除。如果使用CASCADE,则会删除数据库或模式以及其中的所有对象。默认使用RESTRICT

5.2 示例

删除空数据库ods_test02

sql 复制代码
drop database if exists ods_test02;

删除不为空的数据库ods_test01

sql 复制代码
drop database if exists ods_test01 cascade;

注意

删除数据库后,hdfs上对应的数据库目录和MySQL中数据库对应的元数据会一起删除;所以对于数据库的删除不能直接删除删除hdfs上对应的目录。

相关推荐
TDengine (老段)3 小时前
TDengine 数学函数 DEGRESS 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
TDengine (老段)3 小时前
TDengine 数学函数 GREATEST 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
安当加密4 小时前
云原生时代的数据库字段加密:在微服务与 Kubernetes 中实现合规与敏捷的统一
数据库·微服务·云原生
爱喝白开水a4 小时前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板_langchain prompt
开发语言·数据库·人工智能·python·langchain·prompt·知识图谱
想ai抽4 小时前
深入starrocks-多列联合统计一致性探查与策略(YY一下)
java·数据库·数据仓库
武子康4 小时前
Java-152 深入浅出 MongoDB 索引详解 从 MongoDB B-树 到 MySQL B+树 索引机制、数据结构与应用场景的全面对比分析
java·开发语言·数据库·sql·mongodb·性能优化·nosql
longgyy4 小时前
5 分钟用火山引擎 DeepSeek 调用大模型生成小红书文案
java·数据库·火山引擎
starfalling10245 小时前
【hive】一种高效增量表的实现
hive
ytttr8735 小时前
C# 仿QQ聊天功能实现 (SQL Server数据库)
数据库·oracle·c#
盒马coding6 小时前
第18节-索引-Partial-Indexes
数据库·postgresql