Hadoop之Hive数据库和表的增删改查(DDL)
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)相关推荐
- 数据库多表的增删改查操作
数据库多表的增删改查操作: 增加操作(一对多)--- 一对多形式的表的建立: models.py: from django.db import models # Create your models ...
- Mysql数据库和表的增删改查以及数据备份恢复
数据库 查看所有数据库 show databases; 使用数据库 use 数据库名; 查看当前使用的数据库 select database(); 创建数据库 create database 数据库名 ...
- 数据库创建表以及增删改查
创建数据库 语法:create database [数据库名] 例:create database School; 创建表 语法:create table [表名] ( 列名1 数据类型, 列名2 数 ...
- 【MySQL】数据库2- MySQL表的增删改查(基础)
目录 0. 注: 字符串编码方式查询 1. CRUD 2. 新增(Create) 2.1 单行数据 + 全列插入 2.2 多行数据 + 指定列插入 3. 查询(Retrieve)(查询操作不影响数据库 ...
- MySQL——数据库和表的增删改查
1.DDL操作数据库 ①查询 SHOW DATABASES; ②创建 创建数据库 CREATE DATABASE 数据库名称; 创建数据库(判断,如果则创建) CREATE DATABASE IF N ...
- R操作MySQL数据库创建表、删除表、增删改查(CRUD)
R操作MySQL数据库创建表.删除表.增删改查(CRUD) 关系数据中的数据是按照一定范式去存储的.当我们需要非常高级和复杂的Sql查询就可以使用关系数据库的数据资产.不光java和python可以容 ...
- Unity 2021连接外网数据库,建表,增删改查遇到的问题记录
目录 一.连接外网数据库遇到的问题 二.解决问题的方案 动态链接库下载地址: 效果图 一.连接外网数据库遇到的问题 先抛出问题,就是连接内网数据库不会报错,连接外网时和查询时就报这个错: The gi ...
- 数据库概论之MySQL表的增删改查1
MySQL表的增删改查 1.MySQL表的CRUD 2.插入数据 2.1 语法 2.2 注意事项 3.查找语句 3.1 全列查找 3.2 指定列查询 3.3 指定查询字段为表达式 3.4 查询字段指定 ...
- Mysql —— C语言链接mysql数据库,实现可以增删改查的角色权限登录系统
/******************************************************************** * 标题:C语言链接mysql数据库,实现可以增删改查的角色 ...
最新文章
- python提取部分字符串三参数_Python3字符串
- mySQL5.5服务配置_配置mysql5.5主从服务器(转)
- androidstuido_schooltest_8_Network
- linux 设置ssh并发度,在linux如何使用ControlPersist加快SSH连接速度的问题
- C++学习之 delete 构造器
- 使用Beaglebone Black的I2C(一)
- Python3入门精通基础教程(合集)
- 运维每天基本的工作流程
- 一文搞定权限管理!授权、鉴权超详细解析
- 数据库服务器硬件运行环境,数据库及WEB服务器环境部署硬件配置模板
- Php7.5,phpwind7.5灵活的业务支持体系
- 计算机输入法无法输入小写字母,电脑打不出小写字母了怎么办
- js 身份证号码验证包含15位和18位
- php 增加空行,php 替换空行 不匹配空行
- 飞桨领航团AI达人创造营第一课2021.7.26
- 2019广工ACM校赛决赛A题:思维题 HDU 6461 zsl 和hzy的生存挑战
- 在vc中作用mapx
- python执行javascript网页_Python 爬虫如何优雅地执行 javascript 函数
- 使用深度学习进行图像去噪
- 迷人和漂亮的十几岁的明星