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 句列出,之后再讨论每一个子句的意义:
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。若我们没有用表格别名的话, 第一行就会变成
很明显地,这就复杂多了。在这里我们可以看到表格别名的功用:它能让 SQL 句容易被了解,尤其是这个 SQL 句含盖好几个不同的表格时。
接下来我们看第三行,就是 WHERE 子句。 这是我们阐述连接条件的地方。在这里,我们要确认Geography 表格中 Store_Name
栏位的值与 Store_Information 表格中 Store_Name 栏位的值是相等的。这个 WHERE 子句是一个连接的灵魂人物,因为它的角色是确定两个表格之间的连接是正确的。如果 WHERE 子句是错误的,我们就极可能得到一个笛卡儿连接 (Cartesian Join)。笛卡儿连接会造成我们得到所有两个表格每两行之间所有可能的组合。在这个例子中,笛卡儿连接会让我们得到 4 x
4 = 16 行的结果。
Linux实测结果:
1.先创建Geography表
2.相表中插入响应的数据
3.连接查询
linux之SQL语句简明教程---表格连接的更多相关文章
- linux之SQL语句简明教程---外部连接
之前我们看到的左连接 (left join),又称内部连接 (inner join).在这个情况下,要两个表格内都有同样的值,那一笔资料才会被选出.那如果我们想要列出一个表格中每一笔的资料,无论它的值 ...
- linux之SQL语句简明教程---INSERT INTO
到目前为止,我们学到了将如何把资料由表格中取出.但是这些资料是如果进入这些表格的呢? 这就是这一页 (INSERT INTO) 和下一页 (UPDATE) 要讨论的. 基本上,我们有两种作法可以将资料 ...
- linux之SQL语句简明教程---CREATE VIEW
视观表 (View) 可以被当作是虚拟表格.它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料. 建立一个视观表的语法如下: CREATE VIEW & ...
- linux之SQL语句简明教程---Subquery
我们可以在一个 SQL 语句中放入另一个 SQL 语句.当我们在 WHERE 子句或 HAVING 子句中插入另一个 SQL 语句时,我们就有一个 subquery 的架构. Subquery 的作用 ...
- linux之SQL语句简明教程---AND OR
在上一页中,我们看到 WHERE 指令可以被用来由表格中有条件地选取资料. 这个条件可能是简单的 (像上一页的例子),也可能是复杂的.复杂条件是由二或多个简单条件透过 AND 或是 OR的连接而成.一 ...
- linux之SQL语句简明教程---UNION ALL
UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起. UNION ALL 和UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复 ...
- linux之SQL语句简明教程---UNION
UNION 指令的目的是将两个 SQL 语句的结果合并起来.从这个角度来看, UNION 跟 JOIN有些许类似,因为这两个指令都可以由多个表格中撷取资料. UNION 的一个限制是两个 SQL 语句 ...
- linux之SQL语句简明教程
本教程参考http://www.1keydata.com/cn/sql/ 目的是让初学者了解linux下Mysql的操作,但是我仍想侧重于SQL语句的讲解 sql语句的学习将按照下图的流程: 当然在这 ...
- linux之SQL语句简明教程---UPDATE DELETE FROM
我们有时候可能会需要修改表格中的资料.在这个时候,我们就需要用到 UPDATE 指令.这个指令的语法是: UPDATE "表格名" SET "栏位1" = [新 ...
随机推荐
- C语言的本质(36)——makefile基础
除了Hello World这种极简单的程序之外,一般的程序都是由多个源文件编译链接而成的,这些源文件的处理步骤通常用Makefile来管理.makefile带来的好处就是--"自动化编译&q ...
- initial pointer [expert c]
initial differece between pointer and array Both arrays and pointers can be initialized with a liter ...
- cenos 安装 phpredis 扩展
1. php -m 可以查看 php 所有的已经安装的扩展
- 【转】android 电容屏(二):驱动调试之基本概念篇
关键词:android 电容屏 tp 工作队列 中断 多点触摸协议平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:S5PV310(samsung ...
- Spring的IOC
引用:http://www.cnblogs.com/xdp-gacl/p/4249939.html 学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念 ...
- [Node.js]在windows下不得不防的小错误
TypeError: Arguments to path.join must be strings at f (path.js:204:15) at Object.filter (native) at ...
- Android自定义带标题边框的Layout
今天工作中又碰到个小问题,项目需要用到像Java Swing的JPanel一样带标题边框的布局,Android里没有类似控件,想到这个也不难,自己画了一个,是继承LinearLayout的一个自定义布 ...
- SSH2配置事务的两种方式
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- Linux Tomcat7.0安装配置实践总结
一,安装JDk 先下载jdk,链接http://www.oracle.com/technetwork/java/javase/downloads/index.html,选择相对应平台的JDK.由于笔者 ...
- iOS 事件处理机制与图像渲染过程
Peter在开发公众号功能时触发了一个bug,导致群发错误.对此我们深表歉意,并果断开除了Peter.以下交回给正文时间: iOS 事件处理机制与图像渲染过程 iOS RunLoop都干了什么 iOS ...