你真的会玩SQL吗?和平大使 内连接、外连接

简介:
大多数人一般写多表查询会这样写select * from tbA ,tbB  没有用到JOIN关键字,太Low了,官网标准建议是用JOIN明确表间的关系,下面具体来讲。
 
连接类型:
  1. 交叉联接 得到所连接表的所有组合 (笛卡儿集)cross join
  2. 内联接得到连接表的满足条件的记录组合inner join  on
  3. 外联接(左、右)得到一个表的所有行,及其余表满 足连接条件的行 full | left | right  outer join  on

     交叉联接  

  在这类联接的结果集内,两个表中每两个可能成对的行占一行。

    但是如果在交叉联接中加入where 子句就相当与是内联接

    例:

SELECT title, pub_name

       FROM titles Cross JOIN publishers

       Where titles.pub_id = publishers.pub_id

这就相当于我们一最开始的写法:SELECT title, pub_name  FROM titles , publishers Where titles.pub_id = publishers.pub_id

执行过程:

 

       内联接  

仅显示两个联接表中的匹配行的联接。(这是查询设计器中的默认联接类型。)

例:

SELECT title, pub_name

       FROM titles INNER JOIN publishers

       ON titles.pub_id = publishers.pub_id

   执行过程:

 

     左向外联接  

包括第一个命名表("左"表,出现在 JOIN 子句的最左边)中的所有行。不包括右表中的不匹配行。

例:

SELECT titles.title_id,titles.title,publishers.pub_name

        FROM titles LEFT OUTER JOIN publishers

        ON titles.pub_id = publishers.pub_id

 

右向外联接  

包括第二个命名表("右"表,出现在 JOIN 子句的最右边)中的所有行。不包括左表中的不匹配行。

例:

SELECT titles.title_id, titles.title,publishers.pub_name

  FROM titles RIGHT OUTER JOIN publishers

        ON titles.pub_id = publishers.pub_id

 执行过程:

 

完整外部联接  

包括所有联接表中的所有行,不论它们是否匹配。

例:

SELECT titles.title_id, titles.title,  publishers.pub_name

        FROM titles FULL OUTER JOIN publishers

        ON titles.pub_id = publishers.pub_id

 

练习:

此后用到的用例数据库是SQL2008里面的

用例数据库文件:链接:http://pan.baidu.com/s/1qW1QxA0 密码:dqxx

复制代码
/*返回值2007年2月12日下过订单的客户,以及他们的订单。同时也返回在2007年2月12日没有下过订单的客户。
涉及到表:Sales.Customers表和Sales.Orders表。
期望的输出(按简略格式显示):
*/
custid      companyname     orderid     orderdate
----------- --------------- ----------- -----------------------
72          Customer AHPOP  NULL        NULL
58          Customer AHXHT  NULL        NULL
25          Customer AZJED  NULL        NULL
18          Customer BSVAR  NULL        NULL
91          Customer CCFIZ  NULL        NULL
...
33          Customer FVXPQ  NULL        NULL
53          Customer GCJSG  NULL        NULL
39          Customer GLLAG  NULL        NULL
16          Customer GYBBY  NULL        NULL
4           Customer HFBZG  NULL        NULL
5           Customer HGVLZ  10444       2007-02-12 00:00:00.000
42          Customer IAIJK  NULL        NULL
34          Customer IBVRG  NULL        NULL
63          Customer IRRVL  NULL        NULL
73          Customer JMIKW  NULL        NULL
15          Customer JUWXK  NULL        NULL
...
21          Customer KIDPX  NULL        NULL
30          Customer KSLQF  NULL        NULL
55          Customer KZQZT  NULL        NULL
71          Customer LCOUJ  NULL        NULL
77          Customer LCYBZ  NULL        NULL
66          Customer LHANT  10443       2007-02-12 00:00:00.000
38          Customer LJUCA  NULL        NULL
59          Customer LOLJO  NULL        NULL
36          Customer LVJSO  NULL        NULL
64          Customer LWGMD  NULL        NULL
29          Customer MDLWA  NULL        NULL
...
复制代码

参考SQL:

  View Code

 

复制代码
/*返回没有下过订单的客户。
涉及的表:Sales.Customers表和Sales.Orders表。
期望的输出:
*/
custid      companyname
----------- ---------------
22          Customer DTDMN
57          Customer WVAXS
复制代码

参考SQL:

  View Code

 本文转自欢醉博客园博客,原文链接http://www.cnblogs.com/zhangs1986/p/4915039.html如需转载请自行联系原作者


欢醉

相关文章
|
29天前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
133 3
|
22天前
|
SQL 数据库 索引
SQL语句实现投影连接:方法与技巧详解
在SQL数据库查询中,投影和连接是两个核心概念
|
30天前
|
SQL Java 数据库连接
如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
【10月更文挑战第6天】在代码与逻辑交织的世界中,我从一名数据库新手出发,通过不断探索与实践,最终成为熟练掌握JDBC的开发者。这段旅程充满挑战与惊喜,从建立数据库连接到执行SQL语句,再到理解事务管理和批处理等高级功能,每一步都让我对JDBC有了更深的认识。示例代码展示了如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
72 5
|
30天前
|
SQL 数据库 决策智能
SQL语句实现投影连接详解
在SQL中,投影(Projection)和连接(Join)是数据查询和处理中非常重要的两个操作
|
1月前
|
SQL 存储 数据可视化
SQL 数据库大揭秘:连接数字世界的魔法桥梁
在数字化时代,数据如繁星般璀璨,而 SQL 数据库则像强大的引力场,有序汇聚、整理和分析这些数据。SQL 数据库是一个巨大的数字宝库,装满各行各业的“宝藏”。本文将带你探索 SQL 数据库在电商、金融、医疗和教育等领域的应用。例如,在电商中,它能精准推荐商品;在金融中,它是安全卫士,防范欺诈;在医疗中,它是健康管家,管理病历;在教育中,则是智慧导师,个性化教学。此外,还将介绍如何利用板栗看板等工具实现数据可视化,提升决策效率。
|
1月前
|
SQL 开发框架 .NET
ASP连接SQL数据库:从基础到实践
随着互联网技术的快速发展,数据库与应用程序之间的连接成为了软件开发中的一项关键技术。ASP(ActiveServerPages)是一种在服务器端执行的脚本环境,它能够生成动态的网页内容。而SQL数据库则是一种关系型数据库管理系统,广泛应用于各类网站和应用程序的数据存储和管理。本文将详细介绍如何使用A
52 3
|
22天前
|
SQL 数据库 索引
SQL语句实现投影连接:技巧与方法详解
在SQL数据库操作中,投影连接(Projection Join)是一种常见的数据查询技术,它结合了投影(Projection)和连接(Join)两种操作
|
28天前
|
SQL 存储 监控
串口调试助手连接SQL数据库的技巧与方法
串口调试助手是电子工程师和软件开发人员常用的工具,它能够帮助用户进行串口通信的调试和数据分析
|
28天前
|
SQL 数据库 索引
内连接(INNER JOIN)在SQL中的简单应用与技巧
在SQL查询中,内连接(INNER JOIN)是一种基本且常用的连接类型,用于从两个或多个表中检索匹配的记录
|
29天前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:实现过程与关键细节解析an3.021-6232.com
随着互联网技术的快速发展,ASP.NET作为一种广泛使用的服务器端开发技术,其与数据库的交互操作成为了应用开发中的重要环节。本文将详细介绍在ASP.NET中如何连接SQL数据库,包括连接的基本概念、实现步骤、关键代码示例以及常见问题的解决方案。由于篇幅限制,本文不能保证达到完整的2000字,但会确保
下一篇
无影云桌面