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, ...)];

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

创建一个数据库,数据库的默认存储位置在/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 hiveset dbproperties('createtime'='20210430');

1.4 删除数据库

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

删除非空会报错!

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

成功删除!

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;

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

更新列

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;

修改类型成功

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

重命名成功

增加和替换列

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

ADD增加一列成功

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

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

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

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

1.7 删除表

 drop table 表名;

到这里Hive的DDL语言就学习完了,主要是对数据库和数据库中的表进行增删改查的工作。下一章介绍DML语言,大家敬请期待!

参考资料

《大数据Hadoop3.X分布式处理实战》

Hadoop之Hive数据库和表的增删改查(DDL)相关推荐

  1. 数据库多表的增删改查操作

    数据库多表的增删改查操作: 增加操作(一对多)--- 一对多形式的表的建立: models.py: from django.db import models # Create your models ...

  2. Mysql数据库和表的增删改查以及数据备份恢复

    数据库 查看所有数据库 show databases; 使用数据库 use 数据库名; 查看当前使用的数据库 select database(); 创建数据库 create database 数据库名 ...

  3. 数据库创建表以及增删改查

    创建数据库 语法:create database [数据库名] 例:create database School; 创建表 语法:create table [表名] ( 列名1 数据类型, 列名2 数 ...

  4. 【MySQL】数据库2- MySQL表的增删改查(基础)

    目录 0. 注: 字符串编码方式查询 1. CRUD 2. 新增(Create) 2.1 单行数据 + 全列插入 2.2 多行数据 + 指定列插入 3. 查询(Retrieve)(查询操作不影响数据库 ...

  5. MySQL——数据库和表的增删改查

    1.DDL操作数据库 ①查询 SHOW DATABASES; ②创建 创建数据库 CREATE DATABASE 数据库名称; 创建数据库(判断,如果则创建) CREATE DATABASE IF N ...

  6. R操作MySQL数据库创建表、删除表、增删改查(CRUD)

    R操作MySQL数据库创建表.删除表.增删改查(CRUD) 关系数据中的数据是按照一定范式去存储的.当我们需要非常高级和复杂的Sql查询就可以使用关系数据库的数据资产.不光java和python可以容 ...

  7. Unity 2021连接外网数据库,建表,增删改查遇到的问题记录

    目录 一.连接外网数据库遇到的问题 二.解决问题的方案 动态链接库下载地址: 效果图 一.连接外网数据库遇到的问题 先抛出问题,就是连接内网数据库不会报错,连接外网时和查询时就报这个错: The gi ...

  8. 数据库概论之MySQL表的增删改查1

    MySQL表的增删改查 1.MySQL表的CRUD 2.插入数据 2.1 语法 2.2 注意事项 3.查找语句 3.1 全列查找 3.2 指定列查询 3.3 指定查询字段为表达式 3.4 查询字段指定 ...

  9. Mysql —— C语言链接mysql数据库,实现可以增删改查的角色权限登录系统

    /******************************************************************** * 标题:C语言链接mysql数据库,实现可以增删改查的角色 ...

最新文章

  1. python提取部分字符串三参数_Python3字符串
  2. mySQL5.5服务配置_配置mysql5.5主从服务器(转)
  3. androidstuido_schooltest_8_Network
  4. linux 设置ssh并发度,在linux如何使用ControlPersist加快SSH连接速度的问题
  5. C++学习之 delete 构造器
  6. 使用Beaglebone Black的I2C(一)
  7. Python3入门精通基础教程(合集)
  8. 运维每天基本的工作流程
  9. 一文搞定权限管理!授权、鉴权超详细解析
  10. 数据库服务器硬件运行环境,数据库及WEB服务器环境部署硬件配置模板
  11. Php7.5,phpwind7.5灵活的业务支持体系
  12. 计算机输入法无法输入小写字母,电脑打不出小写字母了怎么办
  13. js 身份证号码验证包含15位和18位
  14. php 增加空行,php 替换空行 不匹配空行
  15. 飞桨领航团AI达人创造营第一课2021.7.26
  16. 2019广工ACM校赛决赛A题:思维题 HDU 6461 zsl 和hzy的生存挑战
  17. 在vc中作用mapx
  18. python执行javascript网页_Python 爬虫如何优雅地执行 javascript 函数
  19. 使用深度学习进行图像去噪
  20. 迷人和漂亮的十几岁的明星

热门文章

  1. ajax异步文件上传和进度条
  2. 2022全国职业院校技能大赛软件测试赛项解析
  3. 【Numpy】reshape函数
  4. css 超出文本 省略号
  5. 浏览器对HTML5特性检测工具Modernizr
  6. MySQL事务介绍及原理
  7. html如何获取滚动条,js如何来实现获取滚动条宽度(代码示例)
  8. Appium工作原理简介
  9. vxworks常用调试命令
  10. 防火墙——IKE(IPSec2)