原创首发

  • 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界面显示

with as hive性能 hive的with as_子查询


在MySQL中查看HIVE元数据信息


with as hive性能 hive的with as_应用场景_02

2.3、用途!!!

2.3.1、简单性

  • 简化用户对数据的理解和操作
  • 在MySQL应用场景中:
    关系数据库遵循范式理论,取数时JOIN多到飞起
    可以为一些常用的查询创建视图,从而简化用户操作

2.3.2、提供了一定程度的逻辑独立性

  • 在HIVE应用场景中:
    有些 非公共的维度表
  • 在MySQL应用场景中:
    没有视图时,程序是建立在表上的
    有了视图后,程序可建立在视图之上,从而使程序和表分割开来

比较

程序建立在表上

程序建立在视图之上

表变化时

改程序

改视图

应用变化时

改表

改视图



2.3.3、安全性

  • 在MySQL应用场景中:
    使用视图来 给用户提供允许范围内的结果集
    例如,基表中含有手机号等用户不需要的敏感信息
    做法:1、创建视图,提供所需数据;2、把视图授权给用户。

3、比较HIVE的【子查询】和【视图】

  1. 都可简化复杂的查询
  2. 视图 支持 表名在别的SQL中使用,子查询不支持
  3. 执行速度:差不多
  4. 都不是否缓存数据
  5. 视图的元数据信息会被记录到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界面显示

with as hive性能 hive的with as_子查询


在MySQL中查看HIVE元数据信息


with as hive性能 hive的with as_应用场景_02

2.3、用途!!!

2.3.1、简单性

  • 简化用户对数据的理解和操作
  • 在MySQL应用场景中:
    关系数据库遵循范式理论,取数时JOIN多到飞起
    可以为一些常用的查询创建视图,从而简化用户操作

2.3.2、提供了一定程度的逻辑独立性

  • 在HIVE应用场景中:
    有些 非公共的维度表
  • 在MySQL应用场景中:
    没有视图时,程序是建立在表上的
    有了视图后,程序可建立在视图之上,从而使程序和表分割开来

比较

程序建立在表上

程序建立在视图之上

表变化时

改程序

改视图

应用变化时

改表

改视图



2.3.3、安全性

  • 在MySQL应用场景中:
    使用视图来 给用户提供允许范围内的结果集
    例如,基表中含有手机号等用户不需要的敏感信息
    做法:1、创建视图,提供所需数据;2、把视图授权给用户。

3、比较HIVE的【子查询】和【视图】

  1. 都可简化复杂的查询
  2. 视图 支持 表名在别的SQL中使用,子查询不支持
  3. 执行速度:差不多
  4. 都不是否缓存数据
  5. 视图的元数据信息会被记录到meta store