zoukankan      html  css  js  c++  java
  • oracleI基础入门(6)sql语句join and 别名 Crazy

    表格连接join
    现在我们介绍连接(join)的概念。要了解连接,我们需要用到许多我们之前已介绍过的指令。
    我们先假设我们有以下的两个表格,
    Store_Information  表格
    store_name                 Sales               Date
    Los Angeles                  $1500             Jan-05-1999
    San Diego                    $250               Jan-07-1999
    Los Angeles                  $300               Jan-08-1999
    Boston                          $700               Jan-08-1999
    Geography 表格
    region_name             store_name
    East                          Boston
    East                          New York
    West                         Los Angeles
    West                         San Diego
    而我们要知道每一区 (region_name) 的营业额 (sales)。 Geography 这个表格告诉我们每一
    区有哪些店,而 Store_Information 告诉我们每一个店的营业额。若我们要知道每一区的营
    业额,我们需要将这两个不同表格中的资料串联起来。当我们仔细了解这两个表格后,我们
    会发现它们可经由一个相同的栏位,store_name,连接起来。我们先将 SQL 句列出,之后
    再讨论每一个子句的意义:
    SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2
    WHERE A1.store_name = A2.store_name GROUP BY A1.region_name
    结果:
    REGION SALES
    East $700
    West $2050
    在第一行中,我们告诉 SQL 去选出两个栏位:第一个栏位是 Geography 表格中的
    region_name 栏位 (我们取了一个别名叫做 REGION);第二个栏位是 Store_Information 表
    格中的 sales 栏位 (别名为 SALES)。请注意在这里我们有用到表格别名:Geography 表格
    的别名是 A1,Store_Information 表格的别名是 A2。若我们没有用表格别名的话,第一行
    就会变成
    SELECT Geography.region_name REGION, SUM(Store_Information.Sales) SALES
    很明显地,这就复杂多了。在这里我们可以看到表格别名的功用:它能让 SQL 句容易被了
    解,尤其是这个 SQL 句含盖好几个不同的表格时。
    接下来我们看第三行,就是 WHERE 子句。这是我们阐述连接条件的地方。在这里,我们
    要确认 Geography 表格中 store_name 栏位的值与 Store_Information 表格中 store_name
    栏位的值是相等的。这个 WHERE 子句是一个连接的灵魂人物,因为它的角色是确定两个
    表格之间的连接是正确的。如果 WHERE 子句是错误的,我们就极可能得到一个笛卡儿连
    接 (Cartesian join)。笛卡儿连接会造成我们得到所有两个表格每两行之间所有可能的组合。
    在这个例子中,笛卡儿连接会让我们得到 4 x 4 = 16 行的结果。

  • 相关阅读:
    引用类型中的push()、pop()、shift()方法
    SQL Server ->>监控和管理Tempdb
    SQL Server ->> 与SQL Server服务配置相关的DMV
    SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Temporal Table(历史表)
    SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Row-Level Security(行级别安全控制)
    SQL Server ->> SQL Server 2016新特性之 -- sp_set_session_context存储过程和SESSION_CONTEXT函数
    SQL Server ->> Enable Instant File Initialization(开启文件及时初始化)
    SQL Server ->> 尝试优化ETL中优化Merge性能
    SQL Server ->> 校检函数CHECKSUM、CHECKSUM_AGG、BINARY_CHECKSUM和HASHBYTES
    SQL Server ->> Database Promgramming Object Security Control(数据库编程对象安全控制)
  • 原文地址:https://www.cnblogs.com/flyscan/p/2534344.html
Copyright © 2011-2022 走看看