Hive QL 是Hive支持的类似SQL的查询语言。Hive QL大体可以分为DDL、DML和UDF语言。DDL语言主要是创建数据库、创建表、数据库和表的删除;DML主要进行数据的添加、查询;UDF支持用户定义查询函数。


这里写目录标题

  • 本文主要介绍DDL语言
  • 1.1 创建数据库
  • 1.2 查询数据库
  • 1.3 修改数据库属性
  • 1.4 删除数据库
  • 1.5 创建表
  • 1.6 修改表
  • 1.7 删除表
  • 参考资料


本文主要介绍DDL语言

数据库和数据库表的增删改查!

1.1 创建数据库

CREATE DATABASE [IF NOT EXISTS] database_name --判断是否存在
[COMMENT database_comment]--注释
[LOCATION hdfs_path]--存储数据的路径
[WITH DBPROPERTIES (property_name=property_value, ...)];

给大家展示一下建表语句:

hive 量字段相除 hive 删除语句_大数据


创建一个数据库,数据库的默认存储位置在/user/hive/warehouse/*.db。

下面是一些常用的创建数据库的命令。

create database db_hive;--简单创建一个数据库
create database db_hive2 location '/database.db';--在根目录下创建一个数据库
use db_hive;--进入该数据库

1.2 查询数据库

  • 显示所有数据库
show databases;
  • 利用like关键字过滤数据库
show databases like 'db_hive*';
  • 查看数据库详情
desc database hive2; --显示一部分信息
desc database extended hive2; --显示额外的信息

1.3 修改数据库属性

ALTER DATABASE 命令为某个数据库的 DBPROPERTIES 设置键-值对属性值,来描述这个数据库的属性信息.

  • 修改数据库的创建时间
alter database hive
 set dbproperties('createtime'='20210430');

hive 量字段相除 hive 删除语句_大数据_02

1.4 删除数据库

  • 删除空数据库(只能删除空的数据库)
drop database hive2;
drop database if exists db_hive2;--最好采用是否存在判断一下

删除非空会报错!

hive 量字段相除 hive 删除语句_hadoop_03

  • 删除非空的数据库(加入cascade强制删除)
drop database hive2 cascade;

成功删除!

hive 量字段相除 hive 删除语句_hive 量字段相除_04

1.5 创建表

  • 创建表的语法
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name--建表,分为内、外表
[(col_name data_type [COMMENT col_comment], ...)] --列名以及列名的注释
[COMMENT table_comment]--表的注释
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]--创建分区表
[CLUSTERED BY (col_name, col_name, ...)--分桶表
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]--分桶表的属性,按什么分桶,分几段
[ROW FORMAT row_format]--定义行的格式
[STORED AS file_format]--指定文件格式
[LOCATION hdfs_path]--表的存储位置
[TBLPROPERTIES (property_name=property_value, ...)]--额外的属性
[AS select_statement]--通过查询其他表的方式建表
  • 外部表和管理表
    外部表通过EXTERNAL关键字指定。
    外部表:删除该表并不会删除HDFS上的数据,但数据库中表的元数据信息会被删除掉。
    管理表:当我们删除一个管理表时,Hive 也会删除这个表中数据。
    实例:创建一个外部表给它数据然后删除它。


    该数据还存在。
  • 外部表和管理表的互相转换
-- 查询表的类型
desc formatted 表名;
--将管理表转化为外部表
alter table 表名 set tblproperties('EXTERNAL'='TRUE');
--将外部表转化为管理表
alter table 表名 set tblproperties('EXTERNAL'='FALSE');
  • 创建表时,最好指定分隔符
CREATE TABLE test01(id int,name string)
row format delimited fields terminated by ',';

1.6 修改表

  • 重命名表
--重命名语法
ALTER TABLE 表名 RENAME TO 新的表名;
-- 例子
alter table test01 rename to test05;

hive 量字段相除 hive 删除语句_hive 量字段相除_05

  • 增加、修改、替换列的信息

更新列

ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name 
column_type [COMMENT col_comment] [FIRST|AFTER column_name]
--将test01 id那一列转换为string类型并重命名为stu_id
alter table test01 change id stu_id string;

修改类型成功

hive 量字段相除 hive 删除语句_大数据_06

--将test01 stu_id那一列重命名为id 但也需要指定数据类型
alter table test01 change  stu_id id string;

重命名成功

hive 量字段相除 hive 删除语句_hive 量字段相除_07


增加和替换列

ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)
--增加 一列
alter table test01 add columns(name strings);

ADD增加一列成功

hive 量字段相除 hive 删除语句_大数据_08

--replace 替换表的列
alter table test01 replace columns (stu_id string);

replace可以将指定列转化为重命名为其他列,可以将2列命名为1列(会只显示一列的原因只是元数据修改了,hdfs中并未修改)

hive 量字段相除 hive 删除语句_数据库_09


我们再将表的列名重新设置为2个,数据又回来了。这里可以说明,replace只是改变了元数据的列数,并不会改变HDFS的列数。

hive 量字段相除 hive 删除语句_hadoop_10


ADD 是代表新增一字段,REPLACE 则是表示替换表中所有字段

1.7 删除表

drop table 表名;

到这里Hive的DDL语言就学习完了,主要是对数据库和数据库中的表进行增删改查的工作。