• 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" 中没有匹配,这些行同样会列出。

    一入运维深似海,从此不见彼岸花
  • 相关阅读:
    CentOS设置密码复杂度及过期时间等
    CentOS开启telnet连接
    Centos6.5升级openssh至7.4版本
    Centos7搭建SVN服务器
    Centos7.2yum安装时候出现db5错误的解决办法
    在Centos中yum安装和卸载软件的使用方法(转)
    Centos6.5 恢复误删的系统面板
    ecmall 2.3.0 最新补丁20140618
    ecmall在linux下的安装注意事项(转)
    PHP Strict standards:Declaration of … should be compatible with that of…(转)
  • 原文地址:https://www.cnblogs.com/cn-jasonho/p/13285586.html
Copyright © 2020-2023  润新知