数据库

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

2018-08-15  本文已影响69人  X1_blog

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

  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. 视图提供了一个统一访问数据的接口, 可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)

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 要和多条记录做比较大小是会报错的!


上一篇 下一篇

猜你喜欢

热点阅读