zoukankan      html  css  js  c++  java
  • 笛卡尔积与交叉联接

    1 笛卡尔积定义

    A,B为集合,用A中元素为第一元素,B中元素为第二元素构成的有序对,所有这样的有序对组成的集合叫做AB的笛卡尔积,记作AxB

    例如,A={a,b},B={0,1,2},

    AxB={<a,o>,<a,1>,<a,2>,<b,0>,<b,1>,<b,2>,}

    BxA={<0,a>,<0,b>,<1,a>,<1,b>,<2,a>,<2,b>}


    交差联接

    交差联接是笛卡尔积在SQL中的实现,SQL中使用关键字“CROSS JOIN”来表示交差联接。

    例如:存在表tb_Class及表tb_Student,两表拥有的数据如下图所示。

     

     

    对两表进行交叉连接查询:

    SELECT * FROM tb_Class a CROSS JOIN tb_Student b
    SELECT * FROM tb_Student c CROSS JOIN tb_Class d 

    得到以下查询结果:

     

    3 小知识

    1) 交叉连接不能使用ON关键字,但可以使用WHERE子句定义连接条件。

    SELECT * FROM tb_Class a CROSS JOIN tb_Student b WHERE a.classid=b.classid


    此时,与以下查询结果一致。

    SELECT * FROM tb_Class a ,tb_Student b WHERE a.classid=b.classid

    所以,如果添加了WHERE子句,则交叉联接的行为将与内部联接行为相似。

    2 )交叉连接返回的数据行数为第一个表中符合条件的数据行数乘以第二个表中符合条件的数据行数。

    实例中的 tb_Class表有4数据,tb_Student表有3行数据,所以返回的结果有12行。

  • 相关阅读:
    Linux 系统中用户切换(su user与 su
    linux 用户打开进程数和文件数调整
    hive sql 语法详解
    iOS
    iOS
    MySQL的事务的处理
    iOS
    iOS AOP编程思想及实践
    iOS 静态库和动态库(库详解)
    iOS 沙盒目录结构及正确使用
  • 原文地址:https://www.cnblogs.com/riasky/p/3465164.html
Copyright © 2011-2022 走看看