zoukankan      html  css  js  c++  java
  • SQL 高级语法 (二)

    示例数据库:

    • Persons表
    Id_P LastName FirstName Address City
    1 Adams John Oxford Street London
    2 Bush George Fifth Avenue New York
    3 Carter Thomas Changan Street Beijing
    • Orders表
    Id_O OrderNo Id_P
    1 77895 3
    2 44678 3
    3 22456 1
    4 24562 1
    5 34764 65

    1、INNER JOIN 关键字

    说明:INNER JOIN关键字在表中存在至少一个匹配时返回行

    语法:

    SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name;

    实例:

    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName;
    
    LastName FirstName OrderNo
    Adams John 22456
    Adams John 24562
    Carter Thomas 77895
    Carter Thomas 44678

    2、LEFT JOIN 关键字

    说明:LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL

    语法:

    SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;

    实例:

    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName;
    LastName FirstName OrderNo
    Adams John 22456
    Adams John 24562
    Carter Thomas 77895
    Carter Thomas 44678
    Bush George NULL

    LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。

    3、RIGHT JOIN 关键字

    说明:RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL

    语法:

    SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name;

    实例:

    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons RIGHT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName;
    LastName FirstName OrderNo
    Adams John 22456
    Adams John 24562
    Carter Thomas 77895
    Carter Thomas 44678
    NULL NULL 34764

    RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。

    2、FULL JOIN 关键字(Oracel支持此语法,MySQL不支持)

    说明:FULL JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行;
    FULL JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

    语法:

    SELECT column_name(s) FROM table1 FULL JOIN table2 ON table1.column_name=table2.column_name;

    实例:

    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons FULL JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName;
    
    LastName FirstName OrderNo
    Adams John 22456
    Adams John 24562
    Carter Thomas 77895
    Carter Thomas 44678
    Bush George NULL
    NULL NULL 34764

    FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。

    一入运维深似海,从此不见彼岸花
  • 相关阅读:
    EffectiveC++ 第6章 继承与面向对象设计
    关于并查集的路径压缩(Path Compress)优化
    EffectiveC++ 第5章 实现
    linux 中ls命令文件夹颜色修改
    linux中发出“滴”的怪声的解决方案
    java 常量池技术
    linux与window文件路径问题
    struts上传文件大小超过配置值的问题
    MDC介绍 -- 一种多线程下日志管理实践方式
    java单例模式的二种正确实现
  • 原文地址:https://www.cnblogs.com/cn-jasonho/p/13285586.html
Copyright © 2011-2022 走看看