Join 连接查询
2015-10-09 17:34
148 查看
Join连接查询
在大多数实际开发情况了,我们需要同时和多个表打交道,多表查询是数据库中使用频率最高和效率攸关的操作了!多表查询主要有两种方案:
连接查询
嵌套查询
这里主要介绍一下连接查询!
连接查询
连接查询,主要使用join关键字,建立多个表之间的联系。连接查询可以分为,内连接和外连接,同时外连接又分为左连接和右连接。
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
实例表结构如下:
内连接
INNER JOIN 与 JOIN 是相同的。在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
SELECT persons.FirstName, persons.LastName, orders.OrderNo FROM persons INNER JOIN orders ON orders.id_P = persons.Id_P ORDER BY persons.FirstName
左连接
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。我们想知道所有人的信息,以及他们的订单号,如果有的话!
SELECT persons.FirstName, persons.LastName, orders.OrderNo FROM persons LEFT JOIN orders ON orders.id_P = persons.Id_P ORDER BY persons.FirstName
LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。
右连接
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。我们希望列出所有的定单,以及定购它们的人 - 如果有的话。
SELECT persons.FirstName, persons.LastName, orders.OrderNo FROM persons RIGHT JOIN orders ON orders.id_P = persons.Id_P ORDER BY persons.FirstName
全连接
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。我们希望列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人。相当于左连接和右连接相加!
SELECT persons.FirstName, persons.LastName, orders.OrderNo FROM persons FULL JOIN orders ON orders.id_P = persons.Id_P ORDER BY persons.FirstName
由于Mysql不支持全连接,这里就不写运行结果,可以通过Union关键字组合左右连接得到相同的效果!
自然连接
自然连接,是对数据表进行笛卡尔积操作。SELECT persons.FirstName, persons.LastName, orders.OrderNo FROM persons,orders where orders.id_P = persons.Id_P ORDER BY persons.FirstName
嵌套查询
关于嵌套查询和连接查询的效率问题,下节课讨论相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle 数据库 临时数据的处理方法
- 数据库分页查询语句数据库查询
- 最近比较流行的数据库挂马
- 分割超大Redis数据库例子
- 重装主控服务器后,数据库连接失败的解决办法:请正确还原数据库。