当前位置:   article > 正文

mySQL和Hive的区别_hive和mysql数据类型

hive和mysql数据类型

SQL和HQL的区别

整体

1、存储位置:Hive在Hadoop上;Mysql将数据存储在设备或本地系统中;
2、数据更新:Hive不支持数据的改写和添加,是在加载的时候就已经确定好了;数据库可以CRUD;
3、索引:Hive无索引,每次扫描所有数据,底层是MR,并行计算,适用于大数据量;MySQL有索引,适合在线查询数据;
4、执行:Hive底层是MapReduce;MySQL底层是执行引擎;
5、可扩展性:Hive:大数据量;MySQL:相对就很少了。

SQL执行顺序:
from -> where -> group by -> having -> select -> order by -> limit

语法

内容

SQL

Hive

等值连接

支持

不支持

子查询

支持

不支持

insert和update

支持

不支持,仅支持覆盖重写整个表

IS [NOT] NULL

null代表空值

String类型的字段若是空(empty)字符串, 即长度为0, 那么对它进行IS NULL的判断结果是False

数组拆分

LATERAL VIEW explode(数组类型字段) newTable AS newzd

数组包含

find_in_set(value,Array)

array_contains(Array, value)

分号

语句结束标识

需要对分号进行转义表示

不等于

!=或者<>

不能使用!=,只能使用<>

group by别名问题

select中新命名的别名可以直接在group by 中使用

不能直接使用别名,只能使用原内容或者再嵌套一层

更多相关细节:
https://zhuanlan.zhihu.com/p/322399014
https://www.cnblogs.com/yxzfscg/p/4892124.html

SQL相关面试题

学生成绩表Grade

id

name

subject

grade

001

张三

语文

81

001

张三

数学

75

002

李四

语文

76

002

李四

数学

90

003

王五

语文

81

003

王五

数学

100

学生班级表Class

name

class

张三

一班

李四

二班

王五

二班

题目一:用一条SQL 语句查询出每门课都大于80分的学生姓名
法一:

select name 
from Grade 
group by name 
having min(grade) > 80
  • 1
  • 2
  • 3
  • 4

法二:

select distinct name 
from Grade 
where name not in (select distinct name 
                   from Grade 
                   where grade <= 80)
  • 1
  • 2
  • 3
  • 4
  • 5

题目二:用一条SQL语句查询出每个班语文成绩排名第一的学生班级以及姓名
法一:

select class,name
from
(select Grade.name,class,grade,
 dense_rank() over(partition by class order by Grade.grade desc) as ranking
from Grade,Class
where Grade.name = Class.name and subject = "语文"
)
where ranking = 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/926319
推荐阅读
相关标签
  

闽ICP备14008679号