Hive表DDL操作(一) 第3关:Alter 表/列

40 篇文章 5 订阅
17 篇文章 9 订阅

相关知识

为了完成本关任务,你需要掌握: 1.如何修改表; 2.如何修改列。

Alter 重命名表

重命名表的语法为:

 
  1. ALTER TABLE table_name RENAME TO new_table_name;
  1. 将上一关创建的items_info表重命名为items
 
  1. ALTER TABLE items_info RENAME TO items;

Alter 修改表

修改表列的语法为:

 
  1. ALTER TABLE table_name [PARTITION partition_spec] CHANGE [COLUM] col_old_name col_new_name colum_type [COMMENT col_comment] [FIRST|AFTER column_name] [CASCADE|RESTRICT];
  • 以上操作可以修改表的列名、列数据类型、列存储位置以及注释说明
  • FIRSTAFTER用于指定是否交换列的前后顺序
  • 该操作只改变表的metadataRESTRICT方式,即默认方式)
  • CASCADE关键字用于限定修改操作同时同步到表metadata和分区metadata
  1. 修改表itemsprice列名为items_price
 
  1. ALTER TABLE items CHANGE price item_price FLOAT COMMENT 'items price';

Alter 修改列

增加表列和删除表列或替换表列的语法为:

 
  1. ALTER TABLE table_name [PARTITION partition_spec] ADD|REPLACE COLUMNS (col_namedata_type [COMMENT col_comment],…) [CASCADE|RESTRICT]
  • ADD COLUMNS:用于在表中已存在实体列(existing columns)之后且分区列(partition columns,或伪列)之前添加新的列
  • REPLACE COLUMNS:删除表中现有的全部列,添加新的列集合。该操作仅支持使用内部的SerDe(DynamicSerDe、MetadataTypedColumnsetSerDe/LazySimpleSerDe和ColumnarSerDe)的表(SerDe用于实现表数据与 HDFS 数据之间的转换方式)
  1. items添加生产日期item_date列,数据类型为STRING,说明为items date
 
  1. ALTER TABLE items ADD COLUMNS (item_date STRING COMMENT 'item date');

编程要求

请根据右侧命令行内的提示,在Begin - End区域内进行sql语句代码补充,具体任务如下:

student表结构:

INFOTYPECOMMENT
SnoINTstudent sno
nameSTRINGstudent name
ageINTstudent age
sexSTRINGstudent sex
scoreSTRUCT <Chinese:FLOAT,Math:FLOAT,English:FLOAT>student score
  • 创建数据库test3
  • 在数据库tets3中,创建表student,表结构如上所示,和第二关相同
  • 重命名表名字studentstudent_info
  • 修改列名agestudent_age
  • 增加一列birthday,数据类型为STRING,说明信息为student birthday

按照以上要求填写命令。每个要求对应一条命令,共5条命令,以;隔开。

#********* Begin *********#
echo "
drop database if exists test3 cascade;

CREATE DATABASE IF NOT EXISTS test3  
LOCATION '/hive/test3'  
WITH DBPROPERTIES('creator'='John','date'='2022-04-20');  
 
CREATE TABLE IF NOT EXISTS test3.student(  
Sno INT COMMENT 'student sno',  
name STRING COMMENT 'student name',  
age INT COMMENT 'student age',  
sex STRING COMMENT 'student sex',  
score STRUCT <Chinese:FLOAT,Math:FLOAT,English:FLOAT> COMMENT 'student score');
 
ALTER TABLE student RENAME TO student_info;  
 
ALTER TABLE student_info CHANGE age student_age int; 
 
ALTER TABLE student_info ADD COLUMNS (birthday STRING COMMENT 'student birthday'); 


"
#********* End *********#

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值