Apply关键字用法介绍

    作者:郝光明更新于: 2021-05-01 18:57:02

    SQL Server基础:Apply关键字用法介绍。数据库是一个 单位或是一个应用领域的通用数据处理系统,它存储的是属于企业和事业部门、 团体和个人的有关数据的 集合。数据库中的数据是从全局观点出发建立的,按一定的 数据模型进行组织、描述和存储。其结构基于数据间的自然联系,从而可提供一切必要的存取 路径,且数据不再针对某一应用,而是面向全组织,具有整体的结构化特征。

    APPLy关键字是SQLServer版本中开始提供的一个系统关键字。APPLY的功能同联接很类似,APPLY运算分左右两个部分.

    Apply关键字用法介绍_60数据库_万文数据库_数据库设计_课课家

    1、概念介绍

    APPLy关键字是SQLServer版本中开始提供的一个系统关键字。

    APPLY的功能同联接很类似,APPLY运算分左右两个部分,

    APPLY的右表达式:左表达式的每一行都和右表达式进行一次计算,即右表达式需要根据左表达式提供的值进行相关计算来获取相关结果,然后返回给客户端。

    APPLY的右表达式:是一个子查询或表值函数。

    2、APPLY运算符和联接查询区别

    APPLY:先进行左表达式的数据获取,然后根据左表达式的记录依次对右表达式的值进行相关获取。

    联接:先对左右两张表进行笛卡尔乘积运算。

    3、APPLY运算符的语法格式

    CROSS APPLY:内部联接,两张表直接连接,不需要任何的关联条件,产生的结果就是这两张表的笛卡儿集等价于CROSS JOIN;

    CROSS Apply 和 CROSS JOIN的区别:Cross Apply 可以在关联表子查询中用前一个关联表的字段的值,CROSS JOIN不可以。

    比如:

    1. SELECT * FROM t1 a CROSS APPLY t2 b WHERE a.id=b.id  
    2. --相当于 inner join  
    3. SELECT * FROM t1 a CROSS JOIN t2 b WHERE a.id=b.id --报错 

    OUTER APPLY:左外联接,右侧的表表达式返回一个空集合,CROSS APPLY运算符不会返回相应的左侧行,即OUTER APPLY和在派生表上进行LEFT JOIN是等同的

    1. SELECT * FROM t1 a OUTER APPLY (select * from t2 where id=a.id) b  
    2. -- 相当于 left join。 

    4、Cross Apply 用途

    4.1 配合表值函数使用

    如果查询结果集需要用到表值函数对某个字段的值进行处理的话,可以使用CROSS APPLY。

    4.2 top子查询的用法

    -- 查询语文第一名,数学前两名,英语前五名的name,学科,分数,用cross apply实现方法如下

    1. SELECT b.* FROM ( 
    2. select Subject='Chiness',num=1  
    3. union all 
    4. select 'Math',3 union all 
    5. select 'English',5 
    6. )a cross apply (select top(a.num) * from Students  
    7. where Subject=a.Subject )b
      数据库中的数据是为众多用户所 共享其信息而建立的,已经摆脱了具体 程序的限制和制约。不同的用户可以按各自的用法使用数据库中的数据;多个用户可以同时共享数据库中的数据资源,即不同的用户可以同时存取数据库中的同一个数据。数据共享性不仅满足了各用户对信息内容的要求,同时也满足了各用户之间信息通信的要求。

课课家教育

未登录