• SQL嵌套查寻初识,以及SOME ANY EXISTS的基础常识


    定义:
    1 .指在一个外层查询中包含有另一个内层查询。其中外层查询称为主查询,内层查询称为子查询。
    2 .SQL允许多层嵌套,由内而外地进行分析,子查询的结果作为主查询的查询条件
    3 .子查询中一般不使用order by子句,只能对最终查询结果进行排序
     
     注意:
    在一个SELECT 语句的WHERE 子句或HAVING 子句中嵌套另一个SELECT 语句的查询称为嵌套查询,又称子查询
     在大多数实现中,字查询不能是几个不同的SELECT语句的UNION,它只允许一个SELECT。
     
    语句形式:
     
    SELECT <目标表达式1>[,...]
    FROM<表或视图名1>
    //FROM(<查询到的表或视图名1>)
    WHERE [表达式] (SELECT <目标表达式2>[,...]
    FROM <表或视图名2>)
    [GROUP BY <分组条件>
    HAVING [<表达式>比较运算符] (SELECT <目标表达式2>[,...]
    FROM <表或视图名2> )]

    子查询存在NULL值时,避免使用NOT IN。因为当子查询的结果包括了NULL值的列表时,把NULL值当成一个未知数据,不会存在查询值不在列表中的记录。

    use student

    select *

    from student

    where 学号 not in

    (select 学号 from grade

    )

    由于子查询的结果包括了NULL值,所以最终的查询结果只有空值。正确查询的SQL语句如下:

    use student

    select *

    from  student

    where 学号 not  in 

    (select 学号 from grade where 学号  is not null)

    SQL支持3种定量比较谓词:SOME、ANY和ALL。它们都是判断是否任何或全部返回值都满足搜索要求的。其中SOME和ANY谓词是存在量的,只注重是否有返回值满足搜索要求。这两种谓词含义相同,可以替换使用。

    SOME是把每一行指定的列值与子查询的结果进行比较,如果哪行的比较结果为真,满足条件就返回该行。本实例的嵌套的子查询结果就是一个数值,然后“student”学生表的每一条记录的年龄列值与之相比较,满足就返回行。

    ANY属于SQL支持的3种定量谓词之一。且和SOME完全等价,即能用SOME的地方完全可以使用ANY。

    SQL中定量谓词不支持反操作,也就是说,不能在ANY或者SOME前加NOT关键字。但可以用“<>”号表示否定

    EXISTS谓词只注重子查询是否返回行。如果子查询返回一个或多个行,谓词返回为真值,否则为假。EXISTS搜索条件并不真正地使用子查询的结果。它仅仅测试子查询是否产生任何结果。

  • 相关阅读:
    jmter录制脚本、代理配置和操作
    Jmeter服务器性能压测之—QPS/RPS/TPS/RT/并发数/并发连接数/并发用户数/线程数/吞吐量等概念详解
    Chales 抓https 显示Unknown
    转:Jmeter-场景执行与结果收集、分析
    转:Jmeter-使用Stepping Thread Group插件来设置负载场景
    Jmeter ServerAgent
    AWVS13 破解
    Jenkins 配置邮箱服务器
    Linux + Jenkins + Jmeter
    系统故障处理
  • 原文地址:https://www.cnblogs.com/llcdbk/p/3948657.html
Copyright © 2020-2023  润新知