博客
关于我
mySQL和Hive的区别
阅读量:797 次
发布时间:2023-02-12

本文共 1466 字,大约阅读时间需要 4 分钟。

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

法二:

select distinct name from Grade where name not in (select distinct name                    from Grade                    where grade <= 80)

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

法一:

select class,namefrom(select Grade.name,class,grade, dense_rank() over(partition by class order by Grade.grade desc) as rankingfrom Grade,Classwhere Grade.name = Class.name and subject = "语文")where ranking = 1

法二:

select class,name from(select cla
你可能感兴趣的文章
mysql启动和关闭外键约束的方法(FOREIGN_KEY_CHECKS)
查看>>
Mysql启动失败解决过程
查看>>
MySQL启动失败:Can't start server: Bind on TCP/IP port
查看>>
mysql启动报错
查看>>
mysql启动报错The server quit without updating PID file几种解决办法
查看>>
MySQL命令行登陆,远程登陆MySQL
查看>>
mysql命令:set sql_log_bin=on/off
查看>>
mySQL和Hive的区别
查看>>
MySQL和Java数据类型对应
查看>>
mysql和oorcale日期区间查询【含左右区间问题】
查看>>
MYSQL和ORACLE的一些操作区别
查看>>
mysql和redis之间互相备份
查看>>
MySQL和SQL入门
查看>>
mysql在centos下用命令批量导入报错_Variable ‘character_set_client‘ can‘t be set to the value of ‘---linux工作笔记042
查看>>
Mysql在Linux运行时新增配置文件提示:World-wrirable config file ‘/etc/mysql/conf.d/my.cnf‘ is ignored 权限过高导致
查看>>
Mysql在Windows上离线安装与配置
查看>>
MySQL在渗透测试中的应用
查看>>
Mysql在离线安装时启动失败:mysql服务无法启动,服务没有报告任何错误
查看>>
Mysql在离线安装时提示:error: Found option without preceding group in config file
查看>>
MySQL基于SSL的主从复制
查看>>