zoukankan      html  css  js  c++  java
  • 12 联结表

    12.1 使用联结

    联结是一种机制,用来在一条SELECT语句中关联表,因此称之为联结。使用特殊的语法,可以联结多个表返回一组输出,联结在运行时关联表中正确的行。


    12.2 创建联结

    创建联结的方法是:指定要联结的所有表以及关联它们的方式。

    看这样一个例子:

    SELECT vend_name, prod_name, prod_price
    FROM vendors, products
    WHERE vendors.vend_id = products.vend_id
    ORDER BY vend_name, prod_name;

    输出的结果是:

    SELECT语句所指定的两个列(prod_name和prod_price)在一个表中,而另一个列(vend_name)在另一个表中。 FROM子句列出了两个表,分别是vendors和products。它们就是这条SELECT 语句联结的两个表的名字。这两个表用WHERE子句正确联结, WHERE子句指示MySQL匹配vendors表中的vend_id和products表中的vend_id。

    可 以 看 到 要 匹 配 的 两 个 列 以 vendors.vend_id 和 products.vend_id指定。这里需要这种完全限定列名,因为如果只给出vend_id, 则MySQL不知道指的是哪一个(它们有两个,每个表中一个)。

    12.2.1 使用WHERE的重要性

    这里引入笛卡尔积的概念:

    由没有联结条件的表关系返回的结果为笛卡儿积。检索出的行的数目将是第一个表中的行数乘以第二个表中的行数。
    上面的例子中,如果没有WHERE子句,得到的结果就是笛卡尔积结果。

    12.2.2 内部联结

    前面所描述的联结都是等值联结,也叫内部联结。
    下面的SELECT语句返回与前面例子完全相同的数据:

    SELECT vend_name, prod_name, prod_price
    FROM vendors INNER JOIN products
    ON vendors.vend_id = products.vend_id;

    这里,两个表之间的关系是FROM子句的组成部分,以INNERJOIN指定。在使用这种语法时,联结条件用特定的ON子句而不是WHERE子句给出。传递给ON的实际条件与传递给WHERE的相同。 

    12.2.3 联结多个表


    在上一章子查询我们举了一个例子

    SELECT cust_name, cust_contact
    FROM customers
    WHERE cust_id IN ( SELECT cust_id 
                FROM orders
                WHERE order_num IN ( SELECT order_num
                                            FROM orderitems
                                            WHERE prod_id = 'TNT2'; ) );

    如果改成多表联结,可以这样改:

    SELECT cust_name, cust_contact
    FROM customers, orders,  orderitems
    WHERE customers. cust_id = orders. cust_id 
    AND orders.order_num =  orderitems. order_num 
    AND prod_id = 'TNT2';           
                
  • 相关阅读:
    spring boot welcome-file-list
    spring boot web.xml listener
    Linkflow CDP
    连接数据,构建中台,Linkflow如何推动数据化浪潮 CDP
    客户全生命周期服务解决方案的提供商。
    自然语言处理的发展历史 发展方向 行业(法律)
    SpringBoot 设置 profiles 并在其他配置文件里面读取 pom.xml
    SpringBoot 配置文件无法解析占位符
    微服务 SaaS 低代码开发平台
    混沌工程与分布式系统
  • 原文地址:https://www.cnblogs.com/xlzfdddd/p/10159225.html
Copyright © 2011-2022 走看看