zoukankan      html  css  js  c++  java
  • [读书笔记]子查询

    大部分子查询可以使用连接来编写,在可以使用连接的地方,一般首选连接。

    ---------------------------------------------------------------------------------------------------------------------------------------------------

     主题

    嵌套子查询  关联子查询  派生表  使用EXISTS运算符

    ---------------------------------------------------------------------------------------------------------------------------------------------------

    嵌套子查询

    只在一个方向嵌套——返回在外部查询中使用的单个值,或者与IN运算符一起使用的一个完整的值列表。

    例子:

    SELECT * FROM Product WHERE OrderDate=(SELECT MIN(OrderDate) FROM SalesOrder);

    SELECT * FROM Product WHERE ID IN (SELECT ID FROM SpecialProduct);

     

    简单的理解就是外部查询的查询条件为内部查询的返回值,且内部查询不受外部查询的影响,区别关联子查询。

    关联子查询

    与嵌套子查询的区别在于信息传递时双向的,而不是单向的。

    建议每个查询表格使用别名,否则有可能会出错。

    外部查询看起来很像一个嵌套子查询,然后内部查询显示引用外部查询。

    WHERE子句中的关联查询例子(也可以在SELECT列表中等):

    SELECT soh.CustomerID,soh.SalesOrderID,soh.OrderDate

    FROM Sales.SalesOrderHeader soh

    WHERE soh.OrderDate=(

    SELECT MIN(soh2.OrderDate)

    FROM Sales.SalesOrderHeader soh2

    WHERE soh2.CustomerID=soh.CustomerID)

    ORDER BY soh.CustomerID;

    派生表

    作用:对于给定表的每个行,可能在子查询中有多个结果,但是需要比IN运算符提供更复杂的操作。

    创建派生表要做的事情:

    1.将生成结果集的查询使用小括号括起来;

    2.给查询结果取别名,这样它可以作为表被引用

    语法:

    SELECT <select list>

    FROM ( <query that returns a regular result set>) AS <alias name>

    JOIN <some other base or derived table>

     

    EXISTS运算符

    返回简单的TRUEFALSE结果,当使用EXIST关键字时,SQL SERVER不需要执行一行一行的连接,而是寻找记录,知道找到第一个匹配的记录,然后停止在那里。只要有一个匹配,EXISTS就为TRUE,不需要继续查找。如果要测试的是TRUE值,SQL会查找到有true值停止。如果要测试的是FALSE值——NOT EXISTS()SQL会查找到FALSE值停止。

    -------------------------------------------------------------------------------------------------------------------------------------

    临时表

    使用SELECT INTO创建临时表,保存存储过程结果集

     SELECT <select list>

    INTO <#tempname>

    FROM <table>

    ......do something........

    DROP TABLE <#tempname>

     

    ISNULL函数

    接受一个变量或表达式,验证其是否是一个NULL值,如果是返回其它制定值,否返回原值:

    ISNULL(<expression to test>,<replace value if null>)

     

    IF <条件表达式>

    BEGIN

    <SQL语句>

    END

    ELSE

    BEGIN

    <SQL语句>

    END

     

    CAST函数

    CAST(expression AS data_type) 

    CONVERT函数

    CONVERT(data_type,expression[,style])

    区别:

    CONVERT函数包含了CAST函数的所有功能,但只有CAST函数是ANSI兼容的。

  • 相关阅读:
    python字符串,数组操作
    python爬虫之有道在线翻译
    英雄联盟界面
    学习photoshop心得
    linux命令总结之lsof命令
    linux命令总结之netstat命令
    linux命令总结之route命令
    linux命令总结之ip命令
    linux命令总结之dig命令
    IP地址的分类——a,b,c 类是如何划分的
  • 原文地址:https://www.cnblogs.com/lsr-flying/p/4313086.html
Copyright © 2011-2022 走看看