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

    一入运维深似海,从此不见彼岸花
  • 相关阅读:
    项目实践精解读后感(需求分析注意点)
    XP@Scrum
    项目实践精解读后感2(需求分析注意点)
    十一过后,反思。
    可以自动化功能测试了Selenium
    部分关键字段重复的记录(保留最后记录)
    算是代码优化吗?还可以继续优化吗?
    hql查询~
    通用权限管理设计 之 数据库结构设计(摘录)
    jQuery Liger~
  • 原文地址:https://www.cnblogs.com/cn-jasonho/p/13285586.html
Copyright © 2011-2022 走看看