SQL基础教程MICK版 ···第五章总结

  • 视图
  • 子查询
  • 标量子查询
  • 标量子查询、没有用标量子查询、常量的比较总结
  • 关联子查询
  • 自己的困惑

视图

1.视图的概念

​ 1)从SQL的角度来看视图就是一张表

(个人理解是,视图是逻辑上对表的筛选,表的内容是要存于内存中的,而视图只存SELECT 语句,有点类似于 视图是对表的查询, 由此可以知道,可以把经常要用到的查询语句做成视图)

2.视图与表的区别: 数据更新的限制,其中视图有两个限制;

视图的限制
1.定义视图不能有ORDER BY子句 会报错
2.如果定义视图的SELECT语句能够满足某些条件,那么这个视图就可以更新
典例
SELECT中没有用DISTINCT
FROM子句中只有一张表
没有使用GROUP BY子句,HAVING子句
/*
在没有满足第二个限制的视图无法进行更行操作,会报错的1.视图的创建
CREATE VIEW 视图名(<视图列1>,<视图列2>,...)
AS                  -- 这个必不可少的
(<SELECT语句>)
*/
--个人理解, 建立视图离不开一个实表  如果只写到AS就截止了,就会报错。
CREATE VIEW viewname(product_id,product_name)
AS
SELECT product_id,product_name
FROM product;/*
2.DROP掉视图
DROP VIEW 视图名;
*/
DROP VIEW viewname;

子查询

子查询
标量子查询
关联子查询
自己对这两者的理解
标量子查询:返回一个值,这里值是指的数值一直不变
关联子查询:根据条件的不同,返回其对应的值.因此找出关联条件是至关重要的

标量子查询

/*
标量子查询:它可以放在SELECT列中,可以放在WHERE子句中,也可以放在HAVING子句等等,几乎可以说,它可以放在任何位置
*/
--1 举例
SELECT product_id,product_name,product_type,sale_price,(SELECT AVG(sale_price)FROM product) AS sale_price_all  -- AS sale_price_all是子查询的名字FROM product;--2 与没有用标量子查询的区别
SELECT product_id,product_name,product_type,sale_price, AVG(sale_price) AS sale_price_all
FROM product;--3 与常量的比较
SELECT product_id,product_name,product_type,sale_price, 1000 AS sale_price_all
FROM product;

标量子查询、没有用标量子查询、常量的比较总结

聚合函数在SELECT中只执行了一次,而用标量子查询就可以根据行数的多少生成对应的列

关联子查询

/*
我的理解是:关联子查询是在多个标量子查询的基础上加个条件,用条件对多个标量子查询的值筛选出来一个
*/
-- 标量子查询的例子 1
SELECT product_id,product_name,product_type,sale_price,(SELECT AVG(sale_price)FROM product) AS sale_price_all-- (SELECT AVG(sale_price) FROM product) AS sale_price_all                 -- 用于计算出 sale_price的总值/总数的比值
FROM product;-- 关联子查询的例子 2
SELECT product_id,product_name,product_type,sale_price,(SELECT AVG(sale_price)FROM product AS P1WHERE P1.product_type = P2.product_type        --  根据这个条件筛选出对应 平均值GROUP BY product_type                        -- 对sale_price分成几组进行算平均值) AS sale_price_all
FROM productcopy AS P2;


自己的困惑

1.我发觉,以上面关联子查询的例子为例,去掉GROUP BY 操作的结果还是一样,
这一刻我觉得我的理解可能出现的偏差,真正的理解是怎么样的?
·······以下做出一种假设

​ 1)WHERE子句中有限定SELECT的能力,也就是,WHERE子句中是可以通过限定SELECT中的列,列进行对应的划分结果还是一样,

     很显然,经过查询之后,仔细分析了一波。假设是错误的。正确的解释应该是下面这个!!!!!
/*
根据语句执行顺序
和 下面三句话
先做外部主查询;
将主查询的值传入子查询并执行;
子查询再将查询结果返回主查询,主查询根据返回结果完成最终的查询。以下分析结果
*/
SELECT product_id,product_name,product_type,sale_price,(SELECT AVG(sale_price)    -- 6   条件筛选了之后,在进行AVG得到值FROM product AS P1     -- 3  子查询的表来自哪里WHERE P1.product_type = P2.product_type     -- 4  对子查询的限制条件是什么-- GROUP BY product_type      -- 5            --分成若干个组,很显然这个多余了,                       -- 因为4进行限制之后,才开始分组,--  然而这个限定条件已经不能让这个分组有什么实际意义了) AS sale_price_all       -- 2     对该表进行查询
FROM productcopy AS P2;    -- 1  主查询来自哪里

补充,继续贴出 语句执行顺序

执行顺序是
FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY

SQL基础教程MICK版 ···第五章总结相关推荐

  1. SQL基础教程MICK版 --第四章总结

    SQL基础教程MICK版 ···第四章总结 DML操作.事务的概念.性质.和表现形式 DML操作之INSERT DML操作之UPDATE DML操作之DELETE.TRUNCATE 事务的概念,DBM ...

  2. SQL基础教程MICK版 ···第三章总结

    SQL基础教程MICK版 ···第三章总结 SELECT语句 关于上表的语句顺序 和 执行顺序 完整的语法结构 GROUP BY需要注意的点 用于限定GROUP BY的 HAVING子句 关于ORDE ...

  3. SQL基础教程MICK版 ···第六章总结

    SQL基础教程MICK版 ···第六章总结 函数 谓语 CASE语句 -- 有点像SWITCH语句 函数 函数的分类 算术函数 聚合函数 字符串函数 转换函数 日期函数 算术函数 ABS括号内数值 返 ...

  4. SQL基础教程MICK版 第一章总结

    SQL基础教程MICK版 ···第一章总结 数据库的结构 二维表 SQL操作大概的内容 要注意的规则 表的创建 表的删除与表定义的更新 表的数据键入 数据库的结构 最常见的系统结构就是 客户端\服务器 ...

  5. SQL基础教程MICK版 ···第二章总结

    SQL基础教程MICK版 ···第二章总结 前期准备 SELECT 语句基础 算术运算符.比较运算符和 NOT运算符 特殊的NULL 逻辑运算符 前期准备 应用第一章学的 建一个数据库 在该库中 建立 ...

  6. SQL基础教程MICK版 ···第七、八、九章总结

    SQL基础教程MICK版 ···第七.八.九章总结 表的联结 -- 内联结.外联结 表的合并--- UNION (其他操作对MYSQL不适用.没有看) 关于ROLLUP---显示小计和总计 驱动的概念 ...

  7. 《Python基础教程第二版》第二章-Python列表和元祖

    序列 例: Edward = ['abc', 12] 序列中的所有元素都是有编号的,从0开始递增. Note: 使用负数索引-1,Python会从右边,也就是从最后一个元素开始计数.最后一个元素的位置 ...

  8. 《SQL基础教程(第2版)》作者MICK:上帝存在于细节之中(图灵访谈)

    本文仅用于学习和交流目的,不得用于商业目的.非商业转载请注明作译者.出处,并保留本文的原始链接:http://www.ituring.com.cn/art... 访谈嘉宾:MICK, 就职于日本的一家 ...

  9. sql基础教程和mysql基础教程_书评「SQL基础教程(第2版)」| 你应该知道的基础知识点梳理·上...

    写在前面关于这本书:SQL的基础教程,可以使你在SQL的学习中轻松实现从0到1的过程,循序渐进地掌握SQL的基础知识和技巧.对于零基础来说非常友好,看完能够迅速上手SQL. 关于本文:一篇对这本书的知 ...

最新文章

  1. ubuntu bind9 配置简单记录
  2. ITK:将vtkImageData转换为itk :: Image
  3. stata 导出 相关系数表_Stata: 空间权重矩阵的构建
  4. GB4208中规定的外壳防护等级IP
  5. PostgreSQL 分页——示例
  6. linux 线程_Linux 多线程编程(不限Linux)
  7. linux下mysql5.7修改密码
  8. [转]Java输入输出流的使用详细介绍
  9. UVA10450 POJ1953 World Cup Noise【斐波那契数列】
  10. 如何优化你的布局层级结构之RelativeLayout和LinearLayout及FrameLayout性能分析(二)...
  11. 数据接口复习 3 stack and queue
  12. 工商企业大数据爬虫系统
  13. estore简版商城思路
  14. 2021.11.20【读书笔记】|差异可变剪接事件及DTU分析
  15. Spring运行时值注入分析
  16. 2.04 标志寄存器
  17. cherry Tree的严重漏洞
  18. 烽火算法题 报数问题(不是约瑟夫环)双向链表 Java实现与C实现
  19. 如何myabtis使用注解对数据库进行操作呢?
  20. 开启Maven使用之路

热门文章

  1. 欧格教育:店铺装修注意哪些细节
  2. 【1】少儿Python编程学习_Microbit展示名字
  3. 非计算机专业推荐笔记本电脑,计算机专业笔记本电脑推荐
  4. 你在 Steam 上花了多少钱?
  5. 责任链模式在王者荣耀中的应用,妙!
  6. 【python 爬虫】豆瓣评论全爬取含展开
  7. 【Django基础01】_环境搭建和后台管理
  8. 我想起那天夕阳下的奔跑,那是我逝去的青春
  9. 世界上有两种TWS耳机,Airpods和非Airpods
  10. Go语言GOPATH是什么