美文网首页数据库
sql --子查询 && 关联子查询

sql --子查询 && 关联子查询

作者: X1_blog | 来源:发表于2018-08-15 11:55 被阅读69次
  • 视图表 && 子查询
    子查询,即嵌套在其他查询中的查询,其结果集作为一个临时表使用,操作结束后释放临时表,和视图类似
    执行顺序: 嵌套最底层的模块最先执行,修改源表数据会更新

视图表查询和子查询的区别:

  1. 视图表查询会将结果临时存放在创建的视图表中,子查询是一次性的,查询后只做展示,内存被释放
  2. 子查询带有sql嵌套,使用视图表不一定

SELECT name,code FROM (SELECT name,code FROM tes AS TES_VIEW) AS son_view;

视图表查询:
创建视图:
CREATE VIEW tes_view (name,code) AS SELECT name,code FROM tes;
创建后在视图窗口出现tes_view 表,更新源表视图表同步刷新数据,本质是存储了一组sql语句(不保留数据)
视图只供查询,数据不可更改,查询数据来源于我们建立的实体表
优点:

  1. 安全因素, 视图可以隐藏一些数据,仅显示指定的列c
  2. 不需要理解底层源表结构,易于操作
  3. 视图提供了一个统一访问数据的接口, 可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)

  • 关联子查询: 对集合进行切分
    一个直观的例子:
    创建一张表tes, 有ab两类商品, name是商品值, 分别为1,2,3,那么平均值就是2
    问题是: 我要先按照type分类, 获取分类后的name平均值并对其做比较, 只筛选出高于name平均值的记录?
image.png
-- 加上and 可以限制到具体的类型
SELECT * FROM tes as a WHERE name>(SELECT avg(name) as avg FROM tes as b WHERE a.type=b.type GROUP BY type ) and type='a' 

解法不唯一, 仅作为参考
group by 指定了不同col的分类,where 筛选了高于avg的记录, 子查询用WHERE a.type=b.type则变为关联子查询, 不指定这一句此查询不合逻辑(不是标量子查询), name 要和多条记录做比较大小是会报错的!


  • 什么是标量子查询?
    标量子查询的结果是唯一的,不能返回多行结果

相关文章

  • sql --子查询 && 关联子查询

    视图表 && 子查询子查询,即嵌套在其他查询中的查询,其结果集作为一个临时表使用,操作结束后释放临时表,和视图类似...

  • SQL关联子查询

    简单易懂教你学会SQL关联子查询 初学SQL的人都会觉得SQL的关联子查询难以理解,为什么?这是有原因的。 关联子...

  • 数据库笔记-SQL子查询

    子查询:关联查询和非关联查询 子查询是「查询」中的「查询」,就是「嵌套查询」。 以 NBA 的SQL数据库文件为例...

  • 一文详解 SQL 关联子查询

    本文主要介绍什么是关联子查询以及如何将关联子查询改写为普通语义的sql查询。 在背景介绍中我们将讲讲常见的关联子查...

  • 速度问题

    sql里的关联子查询和交叉联接都是比较浪费时间的。 非关联子查询(Noncorrelated subquery) ...

  • 数据分析之SQL子查询

    文章阅读路线: SQL子查询概念 独立子查询实例 相关子查询实例 SQL子查询常见玩伴 1.SQL子查询概念 子查...

  • Oracel_子查询

    SQL子查询 子查询语法 子查询 (内查询) 在主查询之前一次执行完成。 子查询的结果被主查询(外查询)使用 。 ...

  • SQL必知必会(子查询)

    一、什么是关联子查询,什么是非关联子查询 子查询虽然是一种嵌套查询的形式,不过我们依然可以依据子查询是否执行多次,...

  • 深入解析,快速教会你 SQL 子查询优化!

    子查询 (Subquery)的优化一直以来都是 SQL 查询优化中的难点之一。关联子查询的基本执行方式类似于 Ne...

  • SQL查询_高级查询

    SQL查询_高级查询 一、子查询 子查询出现的位置一般为条件语句,oracle会先执行子查询,再执行父查询,子查询...

网友评论

    本文标题:sql --子查询 && 关联子查询

    本文链接:https://www.haomeiwen.com/subject/duklbftx.html