linux之SQL语句简明教程---表格连接

如今我们介绍连接 (Join) 的概念。要了解连接,我们须要用到很多我们之前已介绍过的指令。我们先如果我们有下面的两个表格,

Store_Information 表格

Store_Name Sales Txn_Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 700 08-Jan-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
Eas 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 句easy被了解,尤其是这个 SQL 句含盖好几个不同的表格时。

接下来我们看第三行,就是 WHERE 子句。 这是我们阐述连接条件的地方。在这里,我们要确认Geography 表格中 Store_Name
栏位的值与 Store_Information 表格中 Store_Name 栏位的值是相等的。这个 WHERE 子句是一个连接的灵魂人物,由于它的角色是确定两个表格之间的连接是正确的。假设 WHERE 子句是错误的,我们就极可能得到一个笛卡儿连接 (Cartesian Join)。笛卡儿连接会造成我们得到全部两个表格每两行之间全部可能的组合。在这个样例中,笛卡儿连接会让我们得到 4 x
4 = 16 行的结果。

Linux实測结果:

1.先创建Geography表

2.相表中插入响应的数据

3.连接查询

时间: 2024-10-10 14:02:18

linux之SQL语句简明教程---表格连接的相关文章

linux之SQL语句简明教程---外部连接

之前我们看到的左连接 (left join),又称内部连接 (inner join).在这个情况下,要两个表格内都有同样的值,那一笔资料才会被选出.那如果我们想要列出一个表格中每一笔的资料,无论它的值在另一个表格中有没有出现,那该怎么办呢?在这个时候,我们就需要用到 SQL OUTER JOIN(外部连接) 的指令. 外部连接的语法是依数据库的不同而有所不同的.举例来说,在 Oracle 上,我们会在 WHERE子句中要选出所有资料的那个表格之后加上一个 "(+)" 来代表说这个表格中

linux之SQL语句简明教程---INSERT INTO

到目前为止,我们学到了将如何把资料由表格中取出.但是这些资料是如果进入这些表格的呢? 这就是这一页 (INSERT INTO) 和下一页 (UPDATE) 要讨论的. 基本上,我们有两种作法可以将资料输入表格中内.一种是一次输入一笔,另一种是一次输入好几笔.我们先来看一次输入一笔的方式. 依照惯例,我们先介绍语法.一次输入一笔资料的语法如下: INSERT INTO "表格名" ("栏位1", "栏位2", ...) VALUES ("

linux之SQL语句简明教程---CREATE VIEW

视观表 (View) 可以被当作是虚拟表格.它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料. 建立一个视观表的语法如下: CREATE VIEW "VIEW_NAME" AS "SQL 语句"; "SQL 语句" 可以是任何一个我们在这个教材中有提到的 SQL. 来看一个例子.假设我们有以下的表格: Customer 表格 栏位名称 资料种类 First_Name char(50) Last_N

linux之SQL语句简明教程---Subquery

我们可以在一个 SQL 语句中放入另一个 SQL 语句.当我们在 WHERE 子句或 HAVING 子句中插入另一个 SQL 语句时,我们就有一个 subquery 的架构. Subquery 的作用是什么呢?第一,它可以被用来连接表格.另外,有的时候 subquery 是唯一能够连接两个表格的方式. Subquery 的语法如下: SELECT "栏位1" FROM "表格" WHERE "栏位2" [比较运算素] (SELECT "

linux之SQL语句简明教程---AND OR

在上一页中,我们看到 WHERE 指令能够被用来由表格中有条件地选取资料. 这个条件可能是简单的 (像上一页的样例).也可能是复杂的. 复杂条件是由二或多个简单条件透过 AND 或是 OR的连接而成.一个 SQL 语句中能够有无限多个简单条件的存在. 复杂条件的语法例如以下: SELECT "栏位名" FROM "表格名" WHERE "简单条件" {[AND|OR] "简单条件"}+; {}+ 代表{}之内的情况会发生一或多

linux之SQL语句简明教程---UNION

UNION 指令的目的是将两个 SQL 语句的结果合并起来.从这个角度来看, UNION 跟 JOIN有些许类似,因为这两个指令都可以由多个表格中撷取资料. UNION 的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类.另外,当我们用 UNION 这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT). UNION 的语法如下: [SQL 语句 1] UNION [SQL 语句 2]; 假设我们有以下的两个表格, Store_Information 表格 S

linux之SQL语句简明教程---UNION ALL

UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起. UNION ALL 和UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复. UNION ALL 的语法如下: [SQL 语句 1] UNION ALL [SQL 语句 2]; 我们用和上一页同样的例子来显示出 UNION ALL 和 UNION 的不同.同样假设我们有以下两个表格, Store_Information 表格 Store_Name Sales Txn_Da

linux之SQL语句简明教程

本教程参考http://www.1keydata.com/cn/sql/ 目的是让初学者了解linux下Mysql的操作,但是我仍想侧重于SQL语句的讲解 sql语句的学习将按照下图的流程: 当然在这之前我们需要简单了解下linux下mysql的安装,以及基本操作. 关于如何安装和使用linux下mysql请参考:http://blog.csdn.net/u013018721/article/details/34889367 转载请注明:小刘

linux之SQL语句简明教程---UPDATE DELETE FROM

我们有时候可能会需要修改表格中的资料.在这个时候,我们就需要用到 UPDATE 指令.这个指令的语法是: UPDATE "表格名" SET "栏位1" = [新值] WHERE "条件"; 最容易了解这个语法的方式是透过一个例子.假设我们有以下的表格: Store_Information 表格 Store_Name Sales Txn_Date Los Angeles 1500 05-Jan-1999 San Diego 250 07-Jan-1