SQLServer关键字详细信息(图形)

SQLServer关键字详细信息(图形)
以下介绍的CROSSAPPLY和OUTERAPPLY关键词为如下:

1.cross应用和外部的应用

MSDN的解释(个人理解的不是很清楚):

应用操作符可以为实现查询操作的外部表表达式返回的每一行调用表值函数。表值函数作为右输入输入,外部表表达式为左输入。

每一行的左输入结果通过对右输入的评价得到,并将生成的行合并为最终输出。

应用操作符生成的列列表是左侧输入中列的列表,后面是右输入返回的列。

应用有两种形式:

横涂外涂。

交叉应用程序只返回外部表中表值函数生成的结果集的行。

外部应用程序返回生成结果集的行,并返回不生成结果集的行,其中表值函数生成的表中的值为空。

因特网上的解释如下。

在SQL Server数据库操作中,一个新的应用表操作符被添加到2005多个版本中。新的应用程序操作符将右表表达式应用于左表表达式中的每一行。

它不计算任何表表达式(如连接),应用程序必须首先逻辑地计算左表达式。

应用程序有两种形式,一种是外应用程序,一种是交叉应用程序,该差值指定为外部,这意味着结果集将包含左空表表达式中所需的右表,并指定交叉,相反,结果集不包含用于左表达式空表的右表。

注意:如果要使用应用程序,数据库兼容性级别必须为90。

下面举个例子:

例如,有一个分类表(catery)如下:
还有一类列表(caterydetail)如下:
让我们看看外部应用程序的查询结果:
*选择
从一个catery dbo。
外部应用(选择*)
从dbo.caterydetail B
在b.cateryid = A ID
)作为C;
外部应用程序显示,在右表信息之后发现的左表信息也与它关联,当然,当右表信息为空(null)时,外部应用程序将显示在结果集中。

接下来,我们来看一下交叉应用查询的结果:
*选择
从一个catery dbo。
交叉应用(选择*)
从dbo.caterydetail B
在b.cateryid = A ID
)作为C;
根据这张照片和上面的对比,我们可以看到,这个返回的结果是只有一个,catery表虎的信息没有了,因为在caterydetail表没有相应的细节。

更多的信息可以通过数学中的外、应用和等价获得,而交叉应用相当于数学的交集,在交叉和联合的导言中如下:

作为红色所有部分的联合,即A和B全部:
交叉点是下层图的红色部分,也就是A和B的部分。
2.outer申请加入和离开

LEFT JOIN关键字返回左表中的所有行(catery),甚至在右表中没有匹配行(caterydetail)。

注意:在一些数据库中,左连接称为左外连接。

让我们看看左结果连接查询(或实例1.cross应用和外部的应用):
*选择
从一个catery dbo。
左连接dbo.caterydetail B b.cateryid = A ID;
LEFT JOIN关键字返回左表中的所有行(catery),甚至在右表中没有匹配行(caterydetail)。效果外应用相同的。

外应用程序和左连接的主要区别是:

左连接关键字只能是联接表,而不是复杂的SELECT语句或函数方法等。

外部应用程序关键字可以包含独立的复杂SELECT语句或其他函数方法,等等。

外施与左连接的性能差异:

本文的总结表明,左连接和外应用的性能比较表明,左连接比外部应用快,因此建议您尽可能使用左连接,而不使用外部连接。

附注:

该catery表和caterydetail表和脚本插入数据的结果:
创建表{ } { }(caterydetail dbo。
{标识(,)不为null,
{ } { }空cateryid int,
{哭泣} { }(varchar)空,
{ }主键约束pk_caterydetail聚集

{ ASC
)和(pad_index =关闭,statistics_norecompute =关闭,ignore_dup_key =关闭,allow_row_locks =,=在allow_page_locks)顾问
在{主}上

ansi_padding下集

集identity_insert { } { }对caterydetail dbo。
插入{ } { }(dbo。caterydetail {id},{ cateryid },{哭泣})值(n'meow )
插入{ } { }(dbo。caterydetail {id},{ cateryid },{哭泣})值(n'wang)
集identity_insert { } { }了caterydetail dbo。
/ ******对象:表{ } { } dbo。catery脚本日期: / / /:******
ansi_nulls上集

quoted_identifier上集

ansi_padding上集

创建表{ } { }(catery dbo。
{标识(,)不为null,
{姓名} { }为varchar(),
{ }主键约束pk_catery聚集

{ ASC
)和(pad_index =关闭,statistics_norecompute =关闭,ignore_dup_key =关闭,allow_row_locks =,=在allow_page_locks)顾问
{主}

ansi_padding下集

SET IDENTITY_INSERT {dbo}.{Catery} ON
插入{ } { }(dbo。catery {id},{姓名})(价值观,n'cat)
插入{ } { }(dbo。catery {id},{姓名})(价值观,n'dog)
插入{ } { }(dbo。catery {id},{姓名})(价值观,n'tiger)
集identity_insert { } { }了catery dbo。
以上内容都显示在本文中。希望你能喜欢。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部