一.DDL数据定义

1.库的DDL

1.1创建数据库
CREATE DATABASE [IF NOT EXISTS] database_name        --指定数据库名称
[COMMENT database_comment] --指定数据库描述
[LOCATION hdfs_path] --指定创建的数据库在hdfs上存储的路径
[WITH DBPROPERTIES (property_name=property_value, ...)]; --指定库的一些属性

案例实操

create database if not exists db_hive
comment "this is my first db"
with dbproperties ("name"="db_hive","owner"="atguigu"); create database if not exists db_hive; --创建数据库,并指定在hdfs上的路径
create database if not exists db_hive2
location '/db_hive2';
1.2查询数据库
show databases;
1.3查看数据库详情
--简单查看
desc database 数据库名;
--详细查看 (详细查看可以看到库的属性信息,简单查看看不到)
desc database extended 数据库名;
1.4切换数据库
use 数据库名;
1.5修改数据库

只能修改数据库的属性信息,别的都无法更改。例如:库名,库的存储位置等元数据信息无法更改。

案例实操

alter database db_hive set dbproperties('createtime'='20200624');
1.6删除数据库
drop database 数据库名;

--如果数据库不为空,可以在最后加上cascade强制删除
drop database 数据库名 cascade; --为了更严谨,我们可以在删除之前判断数据库是否存在
drop database if exists 数据库名 cascade;

注意:删除掉数据库以后,hdfs上对应的目录也会删除,谨慎操作。

2.表的DDL

2.1创建表
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name          --指定表名  【external 外部表/内部表】
[(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 DELIMITED --指定hive表在hdfs上存储的原始数据的格式
[FIELDS TERMINATED BY char] --每行数据中字段的分隔符 ascII码表的第一个字符 ^A
[COLLECTION ITEMS TERMINATED BY char] --集合元素分隔符 ascII码表的第二个字符 ^B
[MAP KEYS TERMINATED BY char] --map集合中 key 和 value 的分隔符 ascII码表的第三个字符 ^C
[LINES TERMINATED BY char] --每行数据的分隔符 默认值:'\n'
]
[STORED AS file_format] --指定hive的数据在hdfs上存储的格式
[LOCATION hdfs_path] --指定hive数据在hdfs上存储的路径
[TBLPROPERTIES (property_name=property_value, ...)] --指定表的属性
[AS select_statement] --按照as后面的查询语句的结果来创建表,复制表结构以及表数据
[LIKE table_name] --按照like后面的表结构来创建表,只复制表结构,不复制表数据
2.2管理表(内部表)和外部表

管理表(内部表):hive掌控者这个数据的生命周期,如果删除一个管理表,hdfs上存储的数据也跟着一起删除。所以一般我们创建管理表时,一般不会再location表的存储路径,就默认放在/user/hive/warehouse下

外部表:hive不完全掌控外部表的数据的生命周期,删除外部表,只删除hive表的元数据,不会删除掉hdfs上存储的数据

一般外部表都是先有的hdfs上的数据,然后我们创建一个外部表,手动指定这个外部表的存储路径。

2.3创建表的三种方式

方式一:直接创建

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

方式二:根据AS select语句查询结构创建表,复制表结构,复制表数据

create table student3 as select * from student;

方式三:根据like 创建表,只复制表结构,不复制表数据

create table student4 like student;
2.4创建管理表、外部表

管理表:不加external关键字

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

外部表

create external table if not exists dept(
deptno int,
dname string,
loc int
)
row format delimited fields terminated by '\t'
location '/company/dept';
2.5外部表和内部表转换

通过设置表属性“EXTERNAL”来控制表是外部表还是内部表

TRUE 是 外部表 FALSE 是内部表

alter table student set tblproperties('EXTERNAL'='TRUE/FALSE');
2.6查看表结构
--简单查看表信息
desc 表名; --详细查看表信息
desc formatted 表名;
2.7修改表
重命名表
ALTER TABLE table_name RENAME TO new_table_name

案例:alter table student2 rename to student3
更新列

列名可以随意修改,列的类型只能小改大,不能大改小(遵循自动转换规则)

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

案例:alter table dept change column deptdesc desc string;
增加列

ADD是代表新增一字段,字段位置在所有列后面(partition列前)

ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment], ...) 

案例:alter table dept add columns(deptdesc string);
替换列

REPLACE则是表示替换表中所有字段,REPLACE使用的时候,字段的类型要跟之前的类型对应上,数量可以减少或者增加,其实就是包含了更新列,增加列,删除列的功能。

ALTER TABLE table_name REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...) 

案例:alter table dept replace columns(deptno string, dname,string, loc string);
2.8删除表
drop table dept;
2.9清空表数据(Truncate)

注意:Truncate只能删除管理表,不能删除外部表中数据

truncate table student;

Hive(三)【DDL 数据定义】的更多相关文章

  1. HIVE之 DDL 数据定义 & DML数据操作

    DDL数据库定义 创建数据库 1)创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db. hive (default)> create dat ...

  2. Hive(5)-DDL数据定义

    一. 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_pat ...

  3. hive从入门到放弃(二)——DDL数据定义

    前一篇文章,介绍了什么是 hive,以及 hive 的架构.数据类型,没看的可以点击阅读:hive从入门到放弃(一)--初识hive 今天讲一下 hive 的 DDL 数据定义 创建数据库 CREAT ...

  4. Hive 官方手册翻译 -- Hive DDL(数据定义语言)

    Hive DDL(数据定义语言) Confluence Administrator创建, Janaki Lahorani修改于 2018年9月19日 原文链接 https://cwiki.apache ...

  5. oracle学习笔记(三) DCL 数据控制语言与 DDL 数据定义语言

    DCL 数据控制语言 Data control language 之前说过的授权和收权利语句 grant, revoke DDL 数据定义语言 Data define language create ...

  6. 第4章 DDL数据定义

    第4章 DDL数据定义 4.1 创建数据库 1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db. hive (default)> creat ...

  7. sql 两大类 DDL数据定义语言 和DCL数据控制语言

    SQL分为五大类: DDL:数据定义语言   DCL:数据控制语言     DML:数据的操纵语言  DTL:数据事务语言  DQL:数据查询语言. DDL (date definition lang ...

  8. mysql DDL数据定义语言

    DDL数据定义语言 本节涉及MySQL关键字:create.alter(rename,add,chang,modify,drop).drop.delete.truncate等. -- 创建表:-- 数 ...

  9. DDL数据定义语言

    DDL数据定义语言 (一)概述 DDL(Data Definition Language):数据定义语言,用来定义数据库对象,库.表.列等:创建.删除.修改 库,表结构.主要分为操作数据库的DDL和操 ...

随机推荐

  1. fd定时器--timerfd学习

    定时器 可以用系统定时器信号SIGALARM 最近工作需要于是又发现了一个新玩意timerfd配合epoll使用. man 手册看一下 TIMERFD_CREATE(2) Linux Programm ...

  2. 重学STM32---(十)之CAN通信(二)

    目录 前言 程序编写 主代码 测试 前言   CAN协议是非常难的,但是在stm32中却是简单的,只需要我们配置寄存器即可,,,即使这样,我在学习的时候也遇到了许多困难 程序编写 1.开时钟,不用说 ...

  3. JAVA笔记12__字节、字符缓冲流/打印流/对象流/

    /** * !!:以后写流的时候一定要加入缓冲!! * 对文件或其它目标频繁的读写操作,效率低,性能差. * 缓冲流:好处是能更高效地读写信息,原理是将数据先缓冲起来,然后一起写入或读取出来. * * ...

  4. DeWeb 电脑和手机动态适配

    DeWeb 做多平台适配很方便! 多平台适配代码在OnMouseUp中. X,Y分别表示当前设备的Width/Height: Button : mbLeft : 屏幕纵向, mbRight:屏幕横向: ...

  5. 攻防世界 Misc 新手练习区 ext3 bugku Writeup

    攻防世界 Misc 新手练习区 ext3 bugku Writeup 题目介绍 题目考点 WinHex工具的使用 linux磁盘挂载mount命令 Writeup 下载附件拖进winhex分析一下,查 ...

  6. python Max retries exceeded with URL in requests

    使用requests进行重试 import requests from requests.adapters import HTTPAdapter from requests.packages.urll ...

  7. sqlalchemy delete object

    In SQL Alchemy you are deleting Objects that you get with a query from the database. This you can do ...

  8. [hdu6145]Arithmetic of Bomb II

    对于题中的"normal expression"(仅含加减乘和无前导0的非负整数,无括号)的计算,实际上并不需要通常的表达式求值,而可以用下述方式计算-- 维护三元组$(a,b,c ...

  9. [cf1392I]Kevin and Grid

    令$v$为点数(有公共点的格子中存在红/蓝色).$e$为边数(有公共边的格子中存在红/蓝色).$f$为以此法(即仅考虑这些点和边)所分割出的区域数(包括外面).$s$为连通块个数,将欧拉定理简单扩展, ...

  10. 解决fatal: unable to access '': Failed to connect to 127.0.0.1 port 1181: Connection refused的问题

    今天把项目提交的git远程的时候遇到一个问题 fatal: unable to access '': Failed to connect to 127.0.0.1 port 1181: Connect ...