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

    尽管很渺小,但终究会变得伟大
  • 相关阅读:
    ORACLE中的TOP-N查询(TOP-N分析)、分页查询
    ORACLE复杂查询之子查询
    ORACLE复杂查询之连接查询
    利用rand7() 产生rand10()(腾讯)
    汉罗塔1(递归和分治)
    数位dp(不要62)
    数位dp(二进制01问题)
    多重背包
    模拟(所有边权)
    模拟(进制)
  • 原文地址:https://www.cnblogs.com/chenbao1012/p/11840441.html
Copyright © 2011-2022 走看看