1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > SQL基础教程MICK版 ···第五章总结

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

时间:2022-04-22 01:44:43

相关推荐

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

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

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

视图

1.视图的概念

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

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

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

/*在没有满足第二个限制的视图无法进行更行操作,会报错的1.视图的创建CREATE VIEW 视图名(<视图列1>,<视图列2>,...)AS-- 这个必不可少的(<SELECT语句>)*/--个人理解, 建立视图离不开一个实表 如果只写到AS就截止了,就会报错。CREATE VIEW viewname(product_id,product_name)ASSELECT product_id,product_nameFROM 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_allFROM product;--3 与常量的比较SELECT product_id,product_name,product_type,sale_price,1000 AS sale_price_allFROM 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;-- 关联子查询的例子 2SELECT 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_allFROM 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 主查询来自哪里

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。