Hive SQL 语法大全~

基于语法描述说明

CREATE DATABASE [IF NOT EXISTS] db_name [LOCATION] 'path';
SELECT expr, ... FROM tbl ORDER BY col_name [ASC | DESC]
(A | B | C)

如上语法,在语法描述中出现:

  • [],表示可选,如上[LOCATION]表示可写、可不写
  • |,表示或,如上ASC | DESC,表示二选一
  • ...,表示序列,即未完结,如上SELECT expr, ... 表示在SELECT后可以跟多个expr(查询表达式),以逗号隔开
  • (),表示必填,如上(A | B | C)表示此处必填,填入内容在A、B、C中三选一

数据库操作

创建数据库

CREATE DATABASE [IF NOT EXISTS] db_name [LOCATION 'path'] [COMMENT database_comment];
  • IF NOT EXISTS,如存在同名数据库不执行任何操作,否则执行创建数据库操作
  • [LOCATION],自定义数据库存储位置,如不填写,默认数据库在HDFS的路径为:/user/hive/warehouse
  • [COMMENT database_comment],可选,数据库注释

删除数据库

DROP DATABASE [IF EXISTS] db_name [CASCADE];
  • [IF EXISTS],可选,如果存在此数据库执行删除,不存在不执行任何操作
  • [CASCADE],可选,级联删除,即数据库内存在表,使用CASCADE可以强制删除数据库

数据库修改LOCATION

ALTER DATABASE database_name SET LOCATION hdfs_path;

==不会在HDFS对数据库所在目录进行改名,只是修改location后,新创建的表在新的路径,旧的不变==

选择数据库

USE db_name;
  • 选择数据库后,后续SQL操作基于当前选择的库执行
  • 如不使用use,默认在default库执行

若想切换回使用default库

USE DEFAULT;

查询当前USE的数据库

SELECT current_database();

表操作

数据类型

分类 类型 描述 字面量示例
原始类型 BOOLEAN true/false TRUE
TINYINT 1字节的有符号整数 -128~127 1Y
SMALLINT 2个字节的有符号整数,-32768~32767 1S
INT 4个字节的带符号整数 1
BIGINT 8字节带符号整数 1L
FLOAT 4字节单精度浮点数1.0
DOUBLE 8字节双精度浮点数 1.0
DEICIMAL 任意精度的带符号小数 1.0
STRING 字符串,变长 “a”,’b’
VARCHAR 变长字符串 “a”,’b’
CHAR 固定长度字符串 “a”,’b’
BINARY 字节数组
TIMESTAMP 时间戳,毫秒值精度 122327493795
DATE 日期 ‘2016-03-29’
时间频率间隔
复杂类型 ARRAY 有序的的同类型的集合 array(1,2)
MAP key-value,key必须为原始类型,value可以任意类型 map(‘a’,1,’b’,2)
STRUCT 字段集合,类型可以不同 struct(‘1’,1,1.0), named_stract(‘col1’,’1’,’col2’,1,’clo3’,1.0)
UNION 在有限取值范围内的一个值 create_union(1,’a’,63)

基础建表

CREATE [EXTERNAL] TABLE tb_name
    (col_name col_type [COMMENT col_comment], ......)
    [COMMENT tb_comment]
    [PARTITIONED BY(col_name, col_type, ......)]
    [CLUSTERED BY(col_name, col_type, ......) INTO num BUCKETS]
    [ROW FORMAT DELIMITED FIELDS TERMINATED BY '']
    [LOCATION 'path']
  • [EXTERNAL],外部表,需搭配
  • [ROW FORMAT DELIMITED FIELDS TERMINATED BY '']指定列分隔符
  • [LOCATION 'path']表数据路径
  • 外部表示意
    sql CREATE EXTERNAL TABLE test_ext(id int) COMMENT 'external table' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs://node1:8020/tmp/test_ext';
  • [COMMENT tb_comment]表注释,可选
  • [PARTITIONED BY(col_name, col_type, ......)]基于列分区

sql -- 分区表示意 CREATE TABLE test_ext(id int) COMMENT 'partitioned table' PARTITION BY(year string, month string, day string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

  • [CLUSTERED BY(col_name, col_type, ......)]基于列分桶

sql CREATE TABLE course (c_id string,c_name string,t_id string) CLUSTERED BY(c_id) INTO 3 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY &#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值