一. 内部表
1. 内部表基本操作
创建内部表: create table [if not exists] 内部表名(字段名 字段类型 , 字段名 字段类型 , … )[row format delimited fields terminated by ‘字段分隔符’] ;
复制内部表: 方式1: like方式复制表结构 方式2: as 方式复制表结构和数据
删除内部表: drop table 内部表名;
注意: 删除内部表效果是mysql中表相关元数据被删除,同时存储在hdfs中的业务数据本身也被删除
查看表格式化信息: desc formatted 表名; – 内部表类型: MANAGED_TABLE
注意: 还可以使用truncate清空内部表数据 格式: truncate table 内部表名;
2. 示例
-- 操作表的前提:先有库并使用它
create database hive2;
use hive2;
-- 一.内部表的创建和删除
-- 1.演示创建内部表
-- 建表方式1
create table inner_stu1(
id int,
name string
);
-- 插入数据
insert into inner_stu1 values(1,'张三');
-- 建表方式2: 复制表结构
create table inner_stu2 like inner_stu1;
-- 插入数据
insert into inner_stu2 values(1,'张三');
-- 建表方式3: 复制表结构和数据
create table inner_stu3 as
select * from inner_stu1;
-- 2.演示查看内部表结构详细信息
-- 内部表类型: MANAGED_TABLE
desc formatted inner_stu1;
desc formatted inner_stu2;
desc formatted inner_stu3;
-- 3.演示内部表的删除
-- 删除内部表
drop table inner_stu3;-- 元数据和业务数据均被删除
-- 清空内部数据
truncate table inner_stu2;
-- 注意: delete和update不能使用
delete from inner_stu1;-- 报错
update inner_stu1 set name = '李四'; -- 报错
二. 外部表基本操作
1. 外部表基本操作
创建外部表: create external table [if not exists] 外部表名(字段名 字段类型 , 字段名 字段类型 , … )[row format delimited fields terminated by ‘字段分隔符’] ;
复制表: 方式1: like方式复制表结构 注意: as方式不可以使用
删除外部表: drop table 外部表名;
注意: 删除外部表效果是mysql中元数据被删除,但是存储在hdfs中的业务数据本身被保留
查看表格式化信息: desc formatted 表名; – 外部表类型: EXTERNAL_TABLE
注意: 外部表不能使用truncate清空数据本身
2. 示例
-- 二.外部表的创建和删除
-- 1.外部的表创建
-- 建表方式1
create external table outer_stu1(
id int,
name string
);
-- 插入数据
insert into outer_stu1 values(1,'张三');
-- 建表方式2
create external table outer_stu2 like outer_stu1;
-- 插入数据
insert into outer_stu2 values(1,'张三');
-- 注意: 外部表不能使用create ... as 方式复制表
create external table outer_stu3 as</