三.Hive数据的DDL,DML

SQL:数据库的核心语言,采纳为操作关系型数据库的国际标准语言( ISO )

非关系型数据库引入此语言( hive : HQL 额外的功能 )

分类:

  1. 数据定义语言(表结构) :Data definition language DDL ,create /drop /alter
  2. 数据操作语言 (数据修改):Data manipulation language DML ,update /delete /insert
  3. 数据查询语言(数据查询) :Data Query language DQL , select

1. DDL(和数据无关,与结构有关)

1.1 针对数据库

1.1.1. 创建数据库

语法:create database [if not exists] dbName [location path]; 例如: create database db1; //默认存储路径 /user/hive/warehouse/ create database db1;//报错 create database if not exists db1;//不报错 create database db2 location '/user/db2.db';//创建数据库并指定存储路径

1.1.2. 查看数据库

使用某一个数据库:use databaseName; 查看所有的数据库:show databases; 查看某一个数据库的详细信息:desc database [extended] dbName

1.1.3. 修改数据库

只能修改数据库的描述信息 语法:alter database dbName set dbproperties('desc'='ceshi db'); #例如: alter database db1 set dbproperties('desc'='ceshi db');

1.1.4. 删除数据库

语法: drop database [if not exists] dbName

1.2 针对数据表

1.2.1. 创建表

完整版的建表语句: create [external] table [if not exists] tbName (col definiton [comment 字段的描述信息] ... ... ...) [comment 表的描述信息] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] # 创建分区 [CLUSTERED BY (col_name, col_name, ...) ] # 创建分桶表 [row format ... ... ...] # 指定表的分隔符 [location path] # 指定表的存储位置 [AS select_statement] # 创建表的方式 LIKE existing_table_or_view_name # 创建表的方式 创建表方式一:直接创建 create table tbName (col type... ...) 创建表方式二:查询建表法 , AS (复制表结构,和表中所有数据到新的表中) create table tbName as select * from tbName2 ; 创建表方式三:like建表法 , LIKE (只复制表结构,不复制表中所有数据到新的表中) create table tbName like tbName2;

【知识点】Hive的分区表(文件夹)和分桶表(文件)的区别

1,Hive分区。

是指按照数据表的某列或某些列分为多个区,区从形式上可以理解为文件夹,比如我们要收集某个大型网站的日志数据,一个网站每天的日志数据存在同一张表上,由于每天会生成大量的日志,导致数据表的内容巨大,在查询时进行全表扫描耗费的资源非常多。那其实这个情况下,我们可以按照日期对数据表进行分区,不同日期的数据存放在不同的分区,在查询时只要指定分区字段的值就可以直接从该分区查找。

2,分桶。

分桶是相对分区进行更细粒度的划分。分桶将整个数据内容按照某列属性值得hash值进行区分,如要安装name属性分为3个桶,就是对name属性值的hash值对3取摸,按照取模结果对数据分桶。如取模结果为0的数据记录存放到一个文件,取模为1的数据存放到一个文件,取模为2的数据存放到一个文件。

1.2.2. 查看表

show tables; 查看当前库中的所有的表 show create table tbName; 查看某一个表的具体的建表语句(获取当前表设置的分隔符信息) show tables in dbName; 指定查看某一个数据库中的所有的表 show tables like 'stu*' ; 模糊查询多个表,不管用 desc tbName; 查看表中的具体的字段信息 desc extended tbName ; 查看表的详情 (查看外部表) desc formatted tbName ; 查看表的详情 (查看内部表和外部表)

1.2.3. 修改表

1. 修改表的名称 alter table tbName rename to newTbName ; #例如 alter table dog rename to dog ; 2. 修改表字段的定义 添加新的列: alter table tbName add columns(colName type... ....) #例如: alter table dog add columns(remk string); 修改列定义:change可以修改 列名称 / 列类型 / 列的位置 alert table tbName change oldColName newColName newType [first|after colName] #例如: ALTER TABLE dog CHANGE remk remark string; 表结构替换: 替换调原来的表结构 alert table tbName replace columns(colName type... ....) 注意:hive2.0+版本中,对类型转换进行限制 小类型 》大类型 ---> 运行 大类型 》小大类型 ---> 运行

1.2.4. 删除表

1. 删除内部表 drop table tbName; truncate table tbName; 注意:更换mysql驱动包的版本 2. 删除外部表 方式一:设置外部表属性未false alter table tbName set tblproperties('external'='false'); drop table tbName; 方式二:删除外部表存储文件 hdfs dfs -rm -r -f /user/hive/warehouse/tbName

2. DML

数据仓库