hive表操作(1)

内部表与外部表之间的转化
alter table 表名 set dbproperties('EXTERNAL' = 'TRUE') -> 注意区分大小写这里必须为大写

修改表
重命名
alter table table_name rename to table_name1(新表的表名须不存在)

增加/修改/替换列信息
更新列


alter table table_name change col_old_name col_new_name column_type(修改列信息)->注意string不能再转换成其他类型
alter table table_name add/replace columns (col__name col_type)->替换是表示替换表中所有字段

DML数据操作


向表中装载数据(load)
1)语法
load data [local] inpath '数据的path' [overwrite] into table table_name
local:表示从本地加载数据到hive表,否则从HDFS加载数据到hive表
overwrite:表示覆盖已有数据,否则表示追加

insert查询导入(从将一张表中的查询结果导入另一张表)
insert into/overwrite[table] table_name select * from table_name1

as select(创建表并加载数据)
create table if not exists table_name ad select id,name from table_name1;

location(指定数据在hdfs的位置)
create table if not exists table_name (id string,name string) row format delimited fields terminated by '\t' location '/path';

truncate(清空表,只删hdfs上数据)->并不能清空外部表
truncate table table_name;


查询语句


select name,salary+/-/*//1000 from student;

常用函数
1)求总行数(count)
select count(*) [as] cnt(取别名) from table_name;
2)求最大值(max)
select max(sal) from table_name;
3)求最小值(min)
select min(sal) from table_name;
4)求总和(sum)
select sum(sal) from table_name;
5)求平均值(avg)
select avg(sal) from table_name;

比较运算符
操作符
A=B
A>B
A>=B
A<B
A<=B
A [not] between B and C [B,C]

实例:
select * from student where sal between 200 and 1000;
select * from student where sal is [not] null;
select * from student where sal in (1500,5000) and/or sal > 1000 ;(只能找到工资为1500或者5000的人)

Like
1)使用like运算选择类似的值
2)选择条件可以包含字符和数字:
    % 代表零个或多个字符(任意个字符)
    _ 代表一个字符
3) rlike字句
    rlike字句是hive中这个功能的一个扩展,其可以通过java的正则表达式这个更强大的语言来指定匹配条件
select * from student where ename like 'A%' (ename 为a开头的)
select * from student where ename like '_A%'(第二个字母为a的)
select * from student where ename rlike [A](包含A的)

group by:一般和函数一起使用
//平均薪资大于2000的部门及部门平均薪资
select deptno,avg(sal) avg_sal from emp group by deptno having avg_sal > 2000; 这里不能用where,where后面不能用别名且where在group之前生效,having在group后生效

嵌套查询
select deptno,avg_sal from (select deptno,avg(sal) avg_sal from emp group by deptno)t1 where avg_sal>2000;

join连接
select
    e.empno,          指明表时效率更高
    e.ename,
from
    emp e       使用表的别名可以简化查询
join
    dept d
on e.deptno = d.deptno;
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值