zoukankan      html  css  js  c++  java
  • SQL联合查询(内联、左联、右联、全联)的语法

    1.数据环境准备

    CREATE TABLE CUST_INFO(CST_ID VARCHAR(40),CST_NM VARCHAR(100),PASSWORD VARCHAR(6));
    INSERT INTO CUST_INFO VALUES('1','郭啸天','123456');
    INSERT INTO CUST_INFO VALUES('2','杨铁心','123456');
    
    CREATE TABLE CUST_INFO_DETAIL(CST_ID VARCHAR(40),SEX VARCHAR(4),AGE INT);
    INSERT INTO CUST_INFO_DETAIL VALUES('1','',34);
    INSERT INTO CUST_INFO_DETAIL VALUES('3','',38);

    1.1 表CUST_INFO

    CST_ID

    CST_NM

    PASSWORD

    1

    郭啸天

    123456

    2 杨铁心 123456

    1.2 表CUST_INFO_DETAIL

    CST_ID SEX AGE
    1 34
    3 38

    2.各种连接

    2.1 内联(inner join)

    如果想把用户信息列写出来,那么一般这么写:
    SELECT * FROM CUST_INFO T1 ,CUST_INFO_DETAIL T2 WHERE T1.CST_ID=T2.CST_ID

    等同于

    SELECT * FROM CUST_INFO T1  INNER JOIN  CUST_INFO_DETAIL T2  ON T1.CST_ID=T2.CST_ID

    把两个表中都存在CST_ID的行拼成一行(即内联),但后者的效率会比前者高很多,建议用后者(内联)的写法。

    运行结果如下:

    CST_ID

    CST_NM

    PASSWORD

    CST_ID

    SEX

    AGE

    1

    郭啸天

    123456

    1

    34

    2.2 左联(left join)

    显示左表CUST_INFO中的所有行,并把右表CUST_INFO_DETAIL中符合条件加到左表CUST_INFO中;右表CUST_INFO_DETAIL中不符合条件,就不用加入结果表中,并且NULL表示

    SQL:

    CST_ID

    CST_NM

    PASSWORD

    CST_ID

    SEX

    AGE

    1

    郭啸天

    123456

    1

    34

    2 杨铁心 123456 NULL NULL NULL

    2.3 右连接(right join)

    显示右表CUST_INFO_DETAIL中的所有行,并把左表CUST_INFO中符合条件加到右表CUST_INFO_DETAIL中;左表CUST_INFO中不符合条件,就不用加入结果表中,并且NULL表示。

    T_ID

    CST_NM

    PASSWORD

    CST_ID

    SEX

    AGE

    1

    郭啸天

    123456

    1

    34

    NULL NULL NULL 3 38

    2.4 全连接(full join)

    显示左表CUST_INFO、右表CUST_INFO_DETAIL两边中的所有行,即把左联结果表+右联结果表组合在一起,然后过滤掉重复的。

    ID

    CST_NM

    PASSWORD

    CST_ID

    SEX

    AGE

    1

    郭啸天

    123456

    1

    34

    NULL NULL NULL 3 38
      杨铁心 123456 NULL NULL NULL
  • 相关阅读:
    转】用Maven构建Mahout项目
    转】Mahout学习路线图
    转】Spark DataFrames入门指南:创建和操作DataFrame
    转】Spark DataFrame小试牛刀
    转】用Maven构建Hadoop项目
    【转】Hive导入10G数据的测试
    软考概述
    vi 按了ctrl+s之后
    VC6.0入门使用
    后台使用oracle前台使用easyui分页机制
  • 原文地址:https://www.cnblogs.com/OliverQin/p/6694164.html
Copyright © 2011-2022 走看看