hive之DDl数据定义

本文介绍了Hive的数据存储路径和数据库管理,包括创建、显示、修改和删除数据库的命令,以及建表的各种操作,如普通建表、CTAS、CREATETABLELIKE,还有修改表结构和删除表的方法。Hive的数据存储在HDFS上,默认路径可通过配置文件设置。
摘要由CSDN通过智能技术生成

接下来,我们了解一下hive的数据定义语言

了解hive库

Hive作为一个“数据库”,在结构上积极向传统数据库看齐,也分数据库(Schema),每个数据库下面有各自的表组成。

1.Hive在HDFS上的默认存储路径

Hive的数据都是存储在HDFS上的,默认有一个根目录,在hive-site.xml中,由参数hive.metastore.warehouse.dir指定。默认值为/user/hive/warehouse。启动hive的时候,默认有一个default数据库,数据存储在warehouse里面。

创建数据库

CREATE DATABASES[IF NOT EXISTS]database name  --指定库名
[COMMENT 'database_comment']  --指定库的描述信息
[LACATION hdfs_path]  --指定在hdfs对应的目录 
[WITH DBPREPERTIES('dbname'='mydb','createtime'='2023-04-25')];  --指定库的附属信息





建库相关操作

1.显示所有的数据库

show databases;

2.模糊查询就是想查询具体某一个数据库,但是只记得一部分了,可以这样做

show databases like 'my*';

3.查看数据库的相关信息

decs database db_name;

desc database [extended] db_name;  --extended:可选,可查询数据库的信息中显示属性


4.切换使用数据库

use db_name;

5.修改数据库

用户可以使用alter databases命令来修改数据库的某一些信息。其中能够修改的信息包括dbproperties,location,owner user。需要注意的是:修改数据库location不会改变当前已有表的路径信息,而只是改变后续创建的新表的默认的父目录

alter database db_name set dbproperties('createtime'='2021-4-26');
alter database db_name set location hdfs_path;
alter database db_name set owner user  user_name;
查看:desc database extended db_name;


6.删除数据库

注意所删除的数据库下面不能有表。

drop database db_name;

7.有表也强制删除

drop database db_name cascade;

8.if not exists | if exists

前面是创建库表的时候使用,后者删除的时候使用,由于判断hive是否有该数据库,如果没有则创建,如果有则删除。

create database if not exists db_name;

drop database if exists db_name;


建表相关操作

首先在建表的时候必须先明确自己在那个库,如果不在自己想要的库,则需要use切换库。

1.普通建表


create [temporary][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,...)] 
[sored by(col_name[ASC |DESC],...)] into num_buckets buckets]
[row format delimited fields  terminated by 分隔符]   指定每行数据中的每个元素分隔符   
[collection items terminated by]                     指定集合的元素分隔符
[map keys terminated by ]                            指定map的kv分割符
[lines terminated by ]                               指定行分隔符
[stored as file_format]                              指定表数据的存储格式
[location hdfs_path]                                 指定表对应的hdfs目录
[telproperties (键值形式)];                          指定表的附属信息


其中:
[temporary] 临时表,该表当前会话可预见,会话结束表被删除
[external]表示创建外表,不加为内表
[patitioned] 指定分区表信息 分区是分目录
[clustered by] 指定分桶表
[stored as]   指定文件的格式,常用的格式有,textfile(默认值),sequence file,orc file,parquet file等等

2.create table as select(ctas) 建表

使用select查询语句返回的结果,直接建表,表的结构和查询语句的结构保持一致,且包含查询结构(只允许创建内部表)


create [temporary] table [if not exists ]table_name
[comment table_comment]
[row format]
[stored as]
[location hdfs_path]
[telproperties (键值形式)] 
[as select_statement]

3.create table like 语法

改语法允许用户复刻一张已经存在的表结构,与上述的ctas语法不同,该语法创建出来的表不包含数据

create [temporary][external] table [if not exists]
[db.name]table_name
[like exist_table_name]
[row format]
[stored as]
[location hdfs_path]
[telproperties (键值形式)] 

4.查看所有表

show tables [in database_name] [like i*];     --like 用于模糊查询

5.查看表结构

desc [extended | formatted] tb_name;    

--extended: 展示详细的信息
--formatted:对详细的信息进行可视化展示

6.修改表名

alter table tb_name rename to new_tb_name;     --只是修改表的元数据信息,不会改变数据

7.修改表的属性

alter table tb_name set tblproperties(property_name=property_value,...);


8.修改列信息

1.更新列,修改数据表中列的名称,描述,数据类型,或者列的位置,语法如下

alter table tb_name change[column]col_name col_new_name 
col_type [comment col_comment][first|after column_name];

2.增加列  可以增加很多列,从最后添加 

alter table tb_name add columns  (col_name col_typr,...);

3.替换列  将表中所有的列全部替换,注意替换时,对应的列的类型不能够由大变小

alter table tb_name replace columns  (col_name col_typr,...);

注意:以上只是修改了hive表的元数据信息,hdfs中存储的数据并没有改变

9.删除数据表

drop table【if exists】tb_name;  

truncate table tb_name;   只对内部表有效
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嚄825

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值