zoukankan      html  css  js  c++  java
  • 数据库之十二:集合运算与连接运算

    1、集合运算:


    1.1、Union,对2个结果进行纵向连接,类似于数学中的并集运算

       要求2个运算结果必须有相同的列且对应列的类型必须一致,

        ORDER BY子句只能在最后使用一次,对运算结果进行排序

       这里会丢弃重复的记录,只保留一个,如果需要全部显示出来则需要使用union all

    Select *  from student where ssex=''
    union
    Select * from student where ssex=''

    1.2、Intersect:

      选取表中共同的部分,语法同union基本一致

    1.3、Except:

      减法,计算两个集合的差集,语法与union也是一致的

    2、连接:


    集合是纵向连接,而连接是横向连接

    2.1、内连接:

    Select
    
    select a.*,b.* from student a inner join sc b on a.sid=b.sid

     会根据连接项进行连接,没有匹配的记录会被丢弃

    2.2、外连接:左外连接,右外连接,全外连接

    a、左外连接以左表为主表,当右表没有匹配到左表的记录会用空值填充

    select a.*,b.* from student a left join sc b on a.sid=b.sid

    右外连接同左外连接一样,只是这里的主表是右表,左表为连接到的会用空值填充

    select a.*,b.* from student a right join sc b on a.sid=b.sid

    (这里全部连接上了)

    c、全外连接两个表没有连接到的都会用空值填充

    select a.*,b.* from student a full join sc b on a.sid=b.sid

    3张以上表连接,可以理解为先两张表连接结果再与第三张表进行连接

    select a.*,b.*,c.* 
    
    from student a left join sc b on a.sid=b.sid
    
                   left join course c on b.cid=c.cid

    交叉连接,连接结果是两张表的笛卡尔积,即表1中的每条记录与表2中的每条记录分别连接,最终结果条数是表1和表2条数的乘积

    select a.*,b.*
    
    from student a cross join sc b

    尽管很渺小,但终究会变得伟大
  • 相关阅读:
    Can't remove netstandard folder from output path (.net standard)
    website项目的reference问题
    The type exists in both DLLs
    git常用配置
    Map dependencies with code maps
    How to check HTML version of any website
    Bootstrap UI 编辑器
    网上职位要求对照
    Use of implicitly declared global variable
    ResolveUrl in external JavaScript file in asp.net project
  • 原文地址:https://www.cnblogs.com/chenbao1012/p/11840441.html
Copyright © 2011-2022 走看看