原创首发
- 1、【子查询】和【WITH AS】的关系
- 2、视图
- 2.1、概念
- 2.2、写法
- 2.3、用途!!!
- 2.3.1、简单性
- 2.3.2、提供了一定程度的逻辑独立性
- 2.3.3、安全性
- 3、比较HIVE的【子查询】和【视图】
1、【子查询】和【WITH AS】的关系
WITH AS
是 子查询 的一种写法
旧版MySQL 子查询 不支持WITH AS
写法,只支持括号写法WITH AS
写法 可读性更高,更方便注释,推荐使用!
- 括号子查询写法
SELECT t.f FROM (子查询)t;
- 1
-
WITH AS
子查询写法
WITH
-- 注释1
t1 AS (子查询),
-- 注释2
t2 AS (子查询)
SELECT f1,f2 FROM t2;
2、视图
2.1、概念
视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据
用来创建视图的表叫做基表,基表数据改变后,从视图获取的数据也随之改变
HIVE视图是只读的,不能向视图插入数据
2.2、写法
CREATE VIEW t AS
SELECT ...
在HIVE创建视图后,HUE界面显示在MySQL中查看HIVE元数据信息
2.3、用途!!!
2.3.1、简单性
- 简化用户对数据的理解和操作
- 在MySQL应用场景中:
关系数据库遵循范式理论,取数时JOIN多到飞起
可以为一些常用的查询创建视图,从而简化用户操作
2.3.2、提供了一定程度的逻辑独立性
- 在HIVE应用场景中:
有些 非公共的维度表 - 在MySQL应用场景中:
没有视图时,程序是建立在表上的
有了视图后,程序可建立在视图之上,从而使程序和表分割开来
比较 | 程序建立在表上 | 程序建立在视图之上 |
表变化时 | 改程序 | 改视图 |
应用变化时 | 改表 | 改视图 |
2.3.3、安全性
- 在MySQL应用场景中:
使用视图来 给用户提供允许范围内的结果集
例如,基表中含有手机号等用户不需要的敏感信息
做法:1、创建视图,提供所需数据;2、把视图授权给用户。
3、比较HIVE的【子查询】和【视图】
- 都可简化复杂的查询
- 视图 支持 表名在别的SQL中使用,子查询不支持
- 执行速度:差不多
- 都不是否缓存数据
- 视图的元数据信息会被记录到
meta store
原创首发
- 1、【子查询】和【WITH AS】的关系
- 2、视图
- 2.1、概念
- 2.2、写法
- 2.3、用途!!!
- 2.3.1、简单性
- 2.3.2、提供了一定程度的逻辑独立性
- 2.3.3、安全性
- 3、比较HIVE的【子查询】和【视图】
1、【子查询】和【WITH AS】的关系
WITH AS
是 子查询 的一种写法
旧版MySQL 子查询 不支持WITH AS
写法,只支持括号写法WITH AS
写法 可读性更高,更方便注释,推荐使用!
- 括号子查询写法
SELECT t.f FROM (子查询)t;
- 1
-
WITH AS
子查询写法
WITH
-- 注释1
t1 AS (子查询),
-- 注释2
t2 AS (子查询)
SELECT f1,f2 FROM t2;
2、视图
2.1、概念
视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据
用来创建视图的表叫做基表,基表数据改变后,从视图获取的数据也随之改变
HIVE视图是只读的,不能向视图插入数据
2.2、写法
CREATE VIEW t AS
SELECT ...
在HIVE创建视图后,HUE界面显示在MySQL中查看HIVE元数据信息
2.3、用途!!!
2.3.1、简单性
- 简化用户对数据的理解和操作
- 在MySQL应用场景中:
关系数据库遵循范式理论,取数时JOIN多到飞起
可以为一些常用的查询创建视图,从而简化用户操作
2.3.2、提供了一定程度的逻辑独立性
- 在HIVE应用场景中:
有些 非公共的维度表 - 在MySQL应用场景中:
没有视图时,程序是建立在表上的
有了视图后,程序可建立在视图之上,从而使程序和表分割开来
比较 | 程序建立在表上 | 程序建立在视图之上 |
表变化时 | 改程序 | 改视图 |
应用变化时 | 改表 | 改视图 |
2.3.3、安全性
- 在MySQL应用场景中:
使用视图来 给用户提供允许范围内的结果集
例如,基表中含有手机号等用户不需要的敏感信息
做法:1、创建视图,提供所需数据;2、把视图授权给用户。
3、比较HIVE的【子查询】和【视图】
- 都可简化复杂的查询
- 视图 支持 表名在别的SQL中使用,子查询不支持
- 执行速度:差不多
- 都不是否缓存数据
- 视图的元数据信息会被记录到
meta store