SQLServer 2008 技术内幕T
1、SQL编程有许多独特之处,如:面向集合的思维方式、查询元素的逻辑处理顺序、三逻辑。如果不掌握这些知识就开始用SQL编程,得到的将是冗余的、性能低下的代码,而且难以维护。 2、在SQLServer中负责生成实际工作计划(执行计划)的组件是:查询优化器(que
1、SQL编程有许多独特之处,如:面向集合的思维方式、查询元素的逻辑处理顺序、三值逻辑。如果不掌握这些知识就开始用SQL编程,得到的将是冗余的、性能低下的代码,而且难以维护。
2、在SQLServer中负责生成实际工作计划(执行计划)的组件是:查询优化器(query optimizer)。只有在确保结果集正确的前提下,优化器才会走捷径。明确区分查询的逻辑处理和物理处理是非常重要的。
3、逻辑查询的各个阶段:
(5) SELECT (5-2) DISTINCT (5-3) TOP (<top_specification>) (5-1) <select_list> (1) FROM (1-J) <left_table> <join_type> JOIN <right_table> ON <on_predicate> |(1-A) <left_table> <apply_type> APPLY <right_table_expression> AS <alias> |(1-P) <left_table> PIVOT (<pivot_specification>) AS <alias> |(1-U) <left_table> UNPIVOT (<unpivot_specification>) AS <alias> (2) WHERE <where_predicate> (3) GROUP BY <group_by_specification> (4) HAVING <having_predicate> (6) ORDER BY <order_by_list>; </order_by_list></having_predicate></group_by_specification></where_predicate></alias></unpivot_specification></left_table></alias></pivot_specification></left_table></alias></right_table_expression></apply_type></left_table></on_predicate></right_table></join_type></left_table></select_list></top_specification>
第一步:FROM :表示出查询的来源表,在联结运算中涉及的阶段是(1-J1)笛卡儿积、(1-J2)ON筛选器和(1-J3)添加外部行。并生成虚拟表VT1。
1.1、笛卡儿积:两表执行笛卡儿积,生成虚拟表VT1-J1。
1.2、ON筛选器:针对VT1-J1中满足ON为true的行,插入VT1-J2。
1.3、添加外部行:如果指定了OUTER JOIN (相对于CROSS JOIN或INNER JOIN ),则将保留表中没有匹配的行,作为外部行添加,生成VT1-J3。
第二步:WHERE:根据WHERE 子句中的谓词对VT1中的数据进行行筛选,只对结果为TRUE的行,插入VT2。
第三步:GROUP BY :根据group by中的列表,将VT2进行分组,每一组只有一个结果行,生成VT3。
第四步:HAVING:根据HAVING出现的谓词对VT3金信筛选,只让结果为TRUE的组才插入VT4。
第五步:SELECT:处理SELECT 子句中的元素,产生VT5。
5.1、计算表达式:根据SELECT 列表中的表达式,生成VT5-1。
5.2、DISTINCT:删除VT5-1中重复的行,生成VT5-2。
5.3、TOP:根据ORDER BY 子句定义逻辑排序,从VT5-2中选择前面指定数量或百分比的行,生产VT5-3。
第六步:ORDER BY :根据ORDER BY 子句中指定的列名,对VT5-3进行排序。生成游标VC6。
对于三值逻辑:
a、所有的查询筛选器(ON、WHERE 和HAVING )都把null当作FALSE来处理。
b、check约束中的null值被当作TRUE来对待。
c、UNIQUE约束、集合运算(UNION 和EXCEPT)、及排序和分组操作,认为两个null是相等的。
注意:
1、如果FROM 子句中有多个表运算符,则按从左到右的顺序进行处理。每个表运算符的结果作为下一个表运算符的左输入,最后生成虚拟表作为下一阶段的输入。
2、因为在WHERE之前还没对数据分组,所以WHERE 子句不能使用聚合。在筛选器中,ON对保留表中部分行的删除并不是最终的,而WHERE是最终的。只有使用外联结的时候,ON和WHERE才有逻辑区别。
3、如果在查询中指定了GROUP BY ,后续所有步骤都只能在指定的分组上操作。
4、HAVING是唯一可用于分组数据的筛选器。
5、由于SQL具有多个运算同时计算(all-at-once operation),所以SELECT 语句中的逻辑顺序是无关的。
6、ORDER BY 是唯一可以使用SELECT 中别名的步骤。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

写在前面&笔者的个人理解基于图像的3D重建是一项具有挑战性的任务,涉及从一组输入图像推断目标或场景的3D形状。基于学习的方法因其直接估计3D形状的能力而受到关注。这篇综述论文的重点是最先进的3D重建技术,包括生成新颖的、看不见的视图。概述了高斯飞溅方法的最新发展,包括输入类型、模型结构、输出表示和训练策略。还讨论了尚未解决的挑战和未来的方向。鉴于该领域的快速进展以及增强3D重建方法的众多机会,对算法进行全面检查似乎至关重要。因此,本研究对高斯散射的最新进展进行了全面的概述。(大拇指往上滑

OpenAI发布的GPT-4o模型无疑是一个巨大的突破,特别是在其能够处理多种输入媒介(文本、音频、图片)并生成相应输出方面。这种能力使得人机交互更加自然和直观,极大地提升了AI的实用性和可用性。GPT-4o的几个关键亮点包括:高度可扩展性、多媒体输入输出、自然语言理解能力的进一步提升等等。1.跨媒介输入/输出:GPT-4o+能够接受文本、音频和图片的任意组合作为输入,并直接生成这些媒介的输出。这打破了传统AI模型仅处理单一输入类型的限制,使得人机交互更加灵活和多样化。这一创新有助于推动智能助手

1、编程可以用于开发各种软件和应用程序,包括网站、手机应用、游戏和数据分析工具等。它的应用领域非常广泛,覆盖了几乎所有行业,包括科学研究、医疗保健、金融、教育、娱乐等。2、学习编程可以帮助我们提高问题解决能力和逻辑思维能力。编程过程中,我们需要分析和理解问题,找出解决方案,并将其转化为代码。这种思维方式能够培养我们的分析和抽象能力,提高我们解决实际问题的能力。

Python通过其易学性和强大功能,是初学者的理想编程入门语言。其基础包括:变量:用于存储数据(数字、字符串、列表等)。数据类型:定义变量中数据的类型(整数、浮点数等)。运算符:用于数学运算和比较。控制流:控制代码执行流(条件语句、循环)。

Python 使初学者能够解决问题。其用户友好的语法、广泛的库以及变量、条件语句和循环等功能可实现高效的代码开发。从管理数据到控制程序流程和执行重复任务,Python 提供了

C++编程谜题涵盖斐波那契数列、阶乘、汉明距离、数组最大值和最小值等算法和数据结构概念,通过解决这些谜题,可以巩固C++知识,提升算法理解和编程技巧。

C是一种初学者学习系统编程的理想选择,它包含以下组件:头文件、函数和主函数。一个简单的C程序可以打印“HelloWorld”,需要包含标准输入/输出函数声明的头文件,并在主函数中使用printf函数来打印。通过使用GCC编译器可以编译和运行C程序。掌握基础后,可以继续学习数据类型、函数、数组和文件处理等主题,以成为熟练的C程序员。

在Golang中通过SQL与JSON数据交互共有以下步骤:使用json.Unmarshal函数将JSON数据解析为Go结构体,实现JSON到结构体的转换。使用database/sql包访问和操作SQL数据库,执行诸如插入、查询等操作。结合上述步骤,可以在Go中构建基于SQL和JSON的应用,实现用户注册和登录等功能。
