SQL笔记-第七章,表连接

SQL中使用JOIN 关键字来使用表连接。表连接有多种不同的类型,被主流数据库系统支持的有交叉连接(CROSS JOIN)、内连接(INNER JOIN)、外连接(OUTTER JOIN),另外在有的数据库系统中还支持联合连接(UNION JOIN)。

一.内连接(INNER JOIN)

SELECT FNumber,FPrice
FROM T_Order INNER JOIN T_Customer
ON FCustomerId= T_Customer.FId
WHERE T_Customer.FName=’TOM’

在这个SQL 语句中,首先列出了组成结果集所需要的列名,而后则是在FROM 关键字后指定需要的表,在INNER JOIN 关键字后指明要被连接的表,而在ON 关键字后则指定了进行连接时所使用的条件。指定列所属的表后,我们就可以很轻松的引用同名的字段了,比如下面的SQL 语句检索所有的订单以及它们对应的客户的相关信息

SELECT T_Order.FId,T_Order.FNumber,T_Order.FPrice, T_Customer.FId,T_Customer.FName,T_Customer.FAge
FROM T_Order INNER JOIN T_Customer
ON T_Order.FCustomerId= T_Customer.FId

表别名

SELECT o.FId,o.FNumber,o.FPrice, c.FId,c.FName,c .FAge
FROM T_Order o JOIN T_Customer c
ON o.FCustomerId= c.FId

二.不等值连接

SELECT T_Order.FNumber,T_Order.FPrice, T_Customer.FName,T_Customer.FAge
FROM T_Order
INNER JOIN T_Customer
ON T_Order.FPrice< T_Customer.FAge*5
and T_Order.FCustomerId=T_Customer.FId

三.交叉连接

隐式

SELECT c.FId, c.FName, c.FAge,
o.FId, o.FNumber, o.FPrice
FROM T_Customer c, T_Order o

显式

SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge, T_Order.FId, T_Order.FNumber, T_Order.FPrice
FROM T_Customer
CROSS JOIN T_Order

四.自连接

查询具有相同的FTypeId字段值的两个不同的订单

SELECT o1.FNumber,o1.FPrice,o1.FTypeId,o2.FNumber,o2.FPrice,o2.FTypeId
FROM T_Order o1
INNER JOIN T_Order o2
ON o1.FTypeId=o2.FTypeId and o1.FId<o2.FId

五.外部连接

右外部连接(RIGHT OUTER JOIN)
左外部连接(LEFT OUTER JOIN)
和全外部连接(FULLOUTER JOIN)。

左外部连接还返回左表中不符合连接条件的数据;
左外部连接还返回右表中不符合连接条件的数据;
全外部连接还返回左表中不符合连接条件的数据以及右表中不符合连接条件的数据,它其实是左外部连接和左外部连接的合集。

1.左外部连接

SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge
FROM T_Order o
LEFT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId
WHERE o.FPrice>=150

2.右外部连接

SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge
FROM T_Order o
RIGHT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

3.全外部连接(mysql不支持)

SELECT o.FNumber,o.FPrice,o.FCustomerId,c.FName,c.FAge
FROM T_Order o
FULL OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

for mysql

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
LEFT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId
UNION
SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
RIGHT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

时间: 2024-08-24 04:51:08

SQL笔记-第七章,表连接的相关文章

Android群英传笔记——第七章:Android动画机制和使用技巧

Android群英传笔记--第七章:Android动画机制和使用技巧 想来,最近忙的不可开交,都把看书给冷落了,还有好几本没有看完呢,速度得加快了 今天看了第七章,Android动画效果一直是人家中十分重要的一部分,从早期的Android版本中,由于动画机制和绘图机制的不健全,Android的人机交互备受诟病,Android从4.X开始,特别是5.X,动画越来越完善了,Google也开始重视这一方面了,我们本章学习的主要内容有 Android视图动画' Android属性动画 Android动画

《深入理解计算机系统》读书笔记 第七章 链接

第七章链接 链接(linking)是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储并执行. 链接的时机 编译时,也就是在源代码被翻译成机器代码时 加载时,也就是在程序被加载器加载到存储器并执行时. 运行时,由应用程序执行. 在现代系统中,链接是由链接器自动执行的. 链接器的关键角色:使分离编译称为可能. 7.1 编译器驱动程序 驱动程序的工作:1.运行C预处理器,将C源程序(.c)翻译成一个ASCⅡ码中间文件(.i):2.运行C编译器,将.i文件翻译

《深入理解计算机系统》读书笔记第七章——链接

<深入理解计算机系统>第七章 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行. 链接的时机 编译时,也就是在源代码被翻译成机器代码时 加载时,也就是在程序被加载器加载到存储器并执行时. 运行时,由应用程序执行. 在现代系统中,链接是由链接器自动执行的. 7.1 编译器驱动程序 编译系统提供编译驱动程序——调用语言预处理器.编译器.汇编器和链接器. (1)运行C预处理器:源程序main.c->ASCII码中间文件main.i (2)

In-memory Computing with SAP HANA读书笔记 - 第七章:Business continuity and resiliency for SAP HANA

本文为In-memory Computing with SAP HANA on Lenovo X6 Systems第七章Business continuity and resiliency for SAP HANA的读书笔记. Overview of business continuity options 业务连续性有不同的级别,采用何种级别取决于需求 Developing a business continuity plan highly depends on the type of busi

SQL 中不同类型的表连接

http://www.linuxidc.com/Linux/2012-08/68035.htm 1.简介 在关系型数据库中,join操作是将不同的表中的数据联合在一起时非常通用的一种做法.首先让我们看看join是如何操作的,然后我们探索一下当join和where语句同时存在的时候的执行顺序问题,最后来谈一谈不同类型的join的顺序问题. 2.建立初始的测试表结构(建表语句到这里下载) 表建立完之后,将会看到如下三个表. 我们将通过以上三个表来演示join操作.这三个表都是用来做演示的,所以我并没

《从0到1》笔记 第七章 向钱看

第七章 向钱看----风险投资中的幂次法则,在公司的经营也同样有效 风险投资家的任务是鉴定那些刚起步的前景光明的公司,投资这些公司并从中获利.风投中一种错误的投资组合是:期待所投的企业的回报呈正太分布.也就是说,没有希望的公司会倒闭,这样的企业不多:中等公司会一直持平,这样的企业最多:好的公司的回报会达到两倍甚至四倍,但这们的企业也不多,却弥补了倒闭企业的亏损. 但是这种“撒网式投资,然后祈祷”是会全盘皆输的.这是因为风险投资的回报并不遵行正态分布,是是遵循幂次法则:一小部分公司的回报完胜其他所

(MYSQL学习笔记2)多表连接查询

3种连接方式的区别: INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录. LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录. RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录. 3个表连接查询,语句如下: SELECT a.YHID,a.TDID,b.YHMC,b.YHZH,c.TDMC FROM (km_tdcy a LEFT JOIN km_xtyh b ON a.YHID=b

Java学习笔记—第七章 类的深入解析

第七章 类的深入解析 1. 继承 1.1 类继承的方法:在Java中,子类对父类的继承是在类的声明中使用extends关键字来指明的.其一    般格式为:[类修饰符] class <子类名> extends <父类名>{ 类体内容 }.一个类只能直接继承一个    父类,一个父类可以有多个子类. 1.2 成员变量的继承和隐藏:基于父类创建子类时,子类可以继承父类的成员变量和成员方法.但是,     如果在父类和子类中同时声明了一个同名变量,则这两个变量在程序运行时同时存在.即:父

Android学习笔记—第七章 数据解析及读取

第七章 数据解析及读取 网络传输中数据的组织方式:xml.json.http (1)xml:可扩展标记语言 特点:保存少量数据,可跨平台 解析方式:sax.dom.pull a. sax解析: 特点:速度快,占用内存少.事件驱动,不会一次性把所有内容加载到内存中. startElement:元素节点开始 localName:不带前缀的标签名 qName:带前缀的标签名 attributes:节点内的属性和值 <student id ="1"> <name>小明&