该文章主要内容为表结构的变化,包括表名修改、字段的新增、删除和修改,下面为具体内容:
一、新建表
1,Oracle
create table oracle_test(
name varchar(20) comment '姓名'
,age decimal(3) comment '年龄'
,sex varchar(10) comment '性别'
,school varchar(40) comment '学校'
)
;
2,hive
create table hive_test(
name string comment '姓名'
,age decimal(3) comment '年龄'
,sex string comment '性别'
,school string comment '学校'
)
row format delimited
fields teminated by '\t'
;
二、修改表名
1,Oracle
格式:rename 当前表名 to 新表名;
示例:rename oracle_test to oracle_test2;
释义:修改表oracle_test的表名为oracle_test2
2,hive
格式:alter table 表原来的名字 rename to 表新的名字
示例:alter table hive_test rename to students;
释义:将表名由 hive_test 修改为 students 。
三、修改列名
1,Oracle
格式:alter table 表名 rename column 当前列名 to 新列名;
示例:alter table oracle_test rename column age to birthday;
释义:修改表oracle_test的age字段名称为birthday
2,hive
格式:alter table 表名字 change column 列原来的名字 列的新名字 列的新字段类型
示例:alter table hive_test change column school class string;
释义:将表 hive_test 的字段 school 修改为 class,并且字段类型为 string;
四、新增字段
1,Oracle
格式:alter table 表名 add (新字段 字段类型(字段长度) );
示例:alter table oracle_test add (class varchar(20) );
释义:表oracle_test新增字段class,数据类型为varchar,字段长度为20
2,hive
格式:alter table 表名 add columns (新字段 字段类型 comment '字段注释');
示例:alter table hive_test add columns (c_time string comment '当前时间');
释义:表hive_test新增字段c_time,字段类型为string,注释为当前时间
注意:新增的字段会放在该表的最后一个字段位置
五、在指定位置新增字段
1,Oracle
Oracle只可以在表的最前面或者最后面新增字段,不可以指定字段的位置
(1)如果表很大需要采用视图的方式
(2)如果数据量不是很大,可以通过字段转移的方式,但是不推荐这种方式
(3)如果数据量很小,那就可以先删除,再新建表,但是再删除表之前,一定要做好数据的备份
2,hive
格式:alter table 表名 change 需要指定位置的字段 需要指定位置的字段 字段类型 after 指定的字段位置 ;
示例:alter table hive_test change c_time c_time string after sex ;
释义:将表hive_test的c_time字段指定到sex字段之后
注意:这里需要两步,先新增字段在表的最后,然后在指定字段的位置
六、删除表字段
1,Oracle
格式:alter table 表名 drop column 字段名;
示例:alter table oracle_test drop column sex;
释义:删除表oracle_test的sex字段
2,hive
hive中不支持alter table table_name drop columns这种语法,支持replace
可以采用:
-- 新建表,如果表存在,则直接进行删除字段的操作
create table hive_test2 (
col1 string,
col2 string);
--删除column_2
alter table hive_test2 replace columns(
col1 string); --col2 不写,即删除col2,保留col1
七、修改表的字段类型
1,Oracle
格式:alter table 表名 modify (字段名 字段类型 默认值 是否为空);//默认值和是否为空可以不写
示例:alter table oracle_test modify(age varchar(10));
释义:修改表oracle_test的age字段为varchar类型,字段长度为10
2,hive
格式:alter table 表名 change column 原字段名称 现字段名称 数据类型;
示例:alter table hive_test change column age age string;
释义:修改表hive_test的age字段的数据类型为string
我是晓之以理的喵,欢迎大家多多交流~~