高级查询

1.多表查询

    1.1内连接:使用比较运算符对各个表中的数据进行比较,并列出各个表中与条件相匹配的数据行(使用 inner join或者join)
         1.等值连接:使用=连接比较列,其结果集中列出所有被连接的数据表的字段(包括重复列)
                     例子:select S.*,C.* from 表1 S inner join 表2 C on  S.sno = C.sno
         2.自然连接:在等值连接的基础上去掉重复列
         3.非等值连接:使用除了 =之外的其他运算来连接比较列
    1.2.外连接:(和内连接不同,内连接要取消所有和被连接表不符合比较关系的所有数据,但是外连接是要返回from子句中的表或者视图的所有数据)
          1.完全连接  FULL OUTER JOIN
             返回两个表中所有匹配和不匹配的行,不匹配的部分为NULL
          2.左外连接  LEFT OUTER JOIN
          3.右外连接   RIGHT OUTER JOIN
             左外连接和右外连接是正好相反的:举个栗子
               select C.班级编号,C.班级名,D.系别编号,D.系别名称   from 班级信息   C LEFT JOIN 系别信息 D on C.所属系别=D.系别编号      
      1.3 交叉连接:  
           返回两个表中所有行的可能性,可以使用where子句也可以不使用 where子句
      1.4 自连接
         需要给表起两个别名
      1.5联合查询
         可上下拼接两个查询结果union :保证每个联合查询中具有相同数量的表达式,并且每个查询表达式具有相同的数据类型

       1.6交查询
        INTERSECT用于连接两个select语句的查询结果的交集
      1.7差查询
         EXCEPT用于返回两个或者两个以上的SELECT语句的差集

2.子查询

      根据子查询返回的行数不同,可以将其分为 IN关键字子查询,EXISTS关键字子查询,多行子查询,单值子查询,嵌套子查询
       2.1IN关键字子查询
        将原表中的列值和返回的查询子结果的值进行比较,匹配则最终结果中包含该结果
      2.2.Exists关键字子查询
         Exists后的子查询不返回任何值,只返回TRUE或者false,如果为true,则将该条数据放入最终结果集中
     2.3.单值子查询
        返回单值得子查询就是单值子查询
     2.4.比较运算符
        select  列表 from 表 where expression operator [ANY(some)|ALL] (subquery)
        具体的ANY 和ALL与比较运算符结合的关系--> 
        =ANY<==>IN               <>ALL<==>NOT IN
       <ANY<==>< MAX         <ALL<==> <MIN
       <=ANY<==><=MAX      <=ALL<==><=MIN
       >ANY<==>MAX             >ALL<==>>MIN
       >=ANY<==>>=MAX       >=ALL<==>>=MIN 
        使用 any和all时,必须使用 比较运算符
        例子:select  学号,姓名  from 学生信息  where 出生日期 > any (select 出生日期 from 学生信息 where 所属班级=‘20050502’)
     2.5.嵌套子查询
        将一个查询块嵌套在另一个查询块的where或者having子句中的查询称为嵌套查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值