关于hive建表查询语句小记

库相关操作

创建数据库

CREATE DATABASE [IF NOT EXISTS] database_name 
[COMMENT database_comment] 
[LOCATION hdfs_path] 
[WITH DBPROPERTIES (property_name=property_value, ...)];

IF NOT EXISTS

也就是没有重复库就创建,有重复就不执行建库

保证了建库的容错性

COMMENT database_comment

库的备注,批注,可以简略写一下库的作用

LOCATION hdfs_path

指定库在hdfs的存储路径

default库的路径 /user/hive/warehouse上

往后建库的默认路径 /user/hive/warehouse/库名.db

WITH DBPROPERTIES

以键值对的形式对表库的属性进行自定义,如时间,创建者等

create database if not exists tss1
comment 'test base'
location '/tmp/tss.db'
with dbproperties ('time'="2020-10-28",'writer'="tss");

切换当前数据库

use 库名

 修改数据库

 alter database|schema 更改的属性

删除数据库

drop database [if not exists] 库名;

数据库不为空
drop database [if not exists] 库名 cascade;

 表的相关操作

创建表

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]

各个选项介绍

(1)IF NOT EXISTS 选项来忽略表存在这个异常。

(2)EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时可以指定一个指向实际数据的路径(LOCATION),在删除表的时候,内部表的元数据和数据会被一起删除,而外 部表只删除元数据,不删除数据。

(3)COMMENT:为表和列添加注释。

(4)PARTITIONED BY 创建分区表

(5)CLUSTERED BY 创建分桶表

(6)SORTED BY 不常用,对桶中的一个或多个列另外排序

(7)ROW FORMAT 序列化数据,按照什么方式序列化处理

(8)STORED AS指定存储文件类型 常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、TEXTFILE(文本)、RCFILE(列式存储格式文件)

(9)LOCATION :指定表在 HDFS 上的存储位置。

(10)AS:后跟查询语句,根据查询结果创建表。

(11)LIKE 允许用户复制现有的表结构,但是不复制数据。

举例:

create table if not exists 
student( id int, name string )
row format delimited fields terminated by '\t' 
stored as textfile
location '/user/hive/warehouse/student';

创建一个管理表,字段之间按照'\t'分割,普通文本类型,在数据库default下创建表

create table if not exists student2 
as select id, name from student;

根据as后面查询出的数据进行建表,类型一样,数据复制填入

create table if not exists student3 
like student;

根据like后面表的类型创建表,类型一样,数据不复制

create external table 
if not exists 
student(id int, name string)
row format delimited fields terminated by '\t';

创建一个外部表,其他与管理表类似

管理表改外部表
alter table student2 set tblproperties('EXTERNAL'='TRUE');
外部表转内部表
alter table student2 set tblproperties('EXTERNAL'='FALSE');

注意:('EXTERNAL'='TRUE')和('EXTERNAL'='FALSE')为固定写法,区分大小写!

修改表

ALTER TABLE table_name RENAME TO new_table_name

重命名表 

ALTER TABLE table_name CHANGE [COLUMN] 
col_old_name col_new_name column_type 
[COMMENT col_comment] 
[FIRST|AFTER column_name]

修改表中字段

其中comment 指定字段注解

first 修改字段位置放到第一位,after 放在什么字段之后

增加替换

 其中add是追加字段

REPLACE 则是表示替换表中所有字段

其中替换是可以多个字段写的

其中替换和修改使用较多,因为add的位置不可控,相比之下灵活性不高

alter table student add columns(sex string);

增加字段

alter table student replace columns(id long,sex string, name string);

替换表

删除表

drop table 表名;

以上就是库,表增删改的基本内容啦

如有错误,欢迎评论区指正

部分参考尚硅谷,如有侵权,联系删

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值