Hive(二)

修改表的结构:
重命名:

alter table table_1 rename to table_2;

增加列信息:
alter table table_1 add columns (mycol string,mysco string);

更新列:
alter table table_1 change column mycol int;

删除表:

drop table table_1;

数据查询:

查询所有列(全表查询):

select * from score;

查询特定列:

select s_id,c_id from table_1;

常用函数:

求总行数(count):

select count(1) from score;

求分数最大数(max);

select max(s_score) from score;

求分数最小值(min):

select min(s_score) from score;

求分数总和(sum):

select sum(s_scote) from score;

求分数平均值:

select avg(s_score) from score;

limilt语句:

限制返回的行数:

select * from score limit 3;(返回三行)  

where语句:

用于条件限制:

例:查询分数大于80的学生的学号:

select stu_num from students where contrnt>80;

like语句:

选择类似的值

% 代表任意个字符

_ 代表一个字符        

例:查询姓李的学生的学号:

select num_stu from students where name like '李%';

例:寻找姓李的单名学生的学号:

select num_stu from students where name like '李_';

逻辑运算符

and or not

例:查询不姓王的学生姓名:

select name from students where name not '王%';

分组与having语句

分组语句group by 语句,可以按照一个或多个队列的结果进行分组,然后进行操作

select s_id,avg(s_sorce) from score group by s_id;

having语句:

只针对表中的列发挥作用,where后面不能写分组函数,having后面可以使用分组函数

having只用于group by 分组统计语言

例:求每个学生的平均分数:

select s_id ,avg(s_sorce) from score group by s_id;

求每个学生平均分数大于85的人:

select s_id ,avg(s_sorce)  avgsore from score 

group by s_id having avgsore > 85;

join操作

支持等值连接,不支持非等值连接

例:查询分数对应的科目名

select s.s_id,s.s_score,stu.s_name,stu.s_birth  from score s join student stu on s.s_id = stu.s_id;

合并表:

select * from teacher join course on teacher.t_id = course.t_id;

内连接:

select * from teacher inner join course on tercher.t_id = course.t_id;

左连接:

select * from teacher legt join course on teacher.t_id = course.t_id;

右连接:

select * from teacher right join course on teacher.t_id = course.t_id;

多表连接:

select * from teacher 

join course on teacher.t_id = course.t_id

select * from student

join course on teacher.t_id = student.t_id;

排序:

Order By

默认升序排列(ascend)(ASC)

降序:(descend)(DESC)

例:查询学生成绩,按照分数降序排列:

select * from student left join score on students.s_id = score.s_id order by sco.s_score DESC;

查询学生成绩,按照分数升序排列:

select * from student left join score on students.s_id = score.s_id order by sco.s_score ASC;

按照分数平均值排序:

select s_id avg(s_score) avg from score group by s_id order by avg;

 常用内置函数:

字符串连接函数:

concat

select concat(‘abc’,‘def’,‘gh’); 'abcdefgh'

将小写字母转化为大写字母:
upper

select upper(‘asd’);   'ASD'

自定义函数:

UDF(一进一出)

UDAF(多进一出)

UDTF(一进多出)

你可能感兴趣的:(hive,hadoop,数据仓库)