Transaction-SQL之JOIN的一些用法

假设我们有两张表。

  • Table A 是左边的表。
  • Table B 是右边的表。

其各有四条记录,其中有两条记录是相同的,如下所示:

id name       id  name
-- ----       --  ----
1  Pirate     1   Rutabaga
2  Monkey     2   Pirate
3  Ninja      3   Darth Vader
4  Spaghetti  4   Ninja

下面让我们来看看不同的Join会产生什么样的结果。

SELECT * FROM TableA
INNER JOIN TableB
ON TableA.name = TableB.name

id  name       id   name
--  ----       --   ----
1   Pirate     2    Pirate
3   Ninja      4    Ninja

Inner join
产生的结果集中,是A和B的交集。

Venn diagram of SQL inner join
SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name

id    name       id    name
--    ----       --    ----
1     Pirate     2     Pirate
2     Monkey     null  null
3     Ninja      4     Ninja
4     Spaghetti  null  null
null  null       1     Rutabaga
null  null       3     Darth Vader

Full outer join 产生A和B的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。

Venn diagram of SQL cartesian join
SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name

id  name       id    name
--  ----       --    ----
1   Pirate     2     Pirate
2   Monkey     null  null
3   Ninja      4     Ninja
4   Spaghetti  null  null

Left outer join 产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。

Venn diagram of SQL left join
SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableB.id IS null 

id  name       id     name
--  ----       --     ----
2   Monkey     null   null
4   Spaghetti  null   null

产生在A表中有而在B表中没有的集合。

join-left-outer.png
SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableA.id IS null
OR TableB.id IS null

id    name       id    name
--    ----       --    ----
2     Monkey     null  null
4     Spaghetti  null  null
null  null       1     Rutabaga
null  null       3     Darth Vader

产生A表和B表都没有出现的数据集。

join-outer.png

还需要注意的是我们还有一个是“交差集” cross join, 这种Join没有办法用文式图表示,因为其就是把表A和表B的数据进行一个N*M的组合,即笛卡尔积。表达式如下:

SELECT * FROM TableA
CROSS JOIN TableB

这个笛卡尔乘积会产生 4 x 4 = 16 条记录,一般来说,我们很少用到这个语法。但是我们得小心,如果不是使用嵌套的select语句,一般系统都会产生笛卡尔乘积然再做过滤。这是对于性能来说是非常危险的,尤其是表很大的时候。

出处http://coolshell.cn/articles/3463.html


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SQL Server 2008 R2是由微软推出的一款关系型数据库管理系统。它包含了许多功能强大的功能,可以帮助用户存储、管理和分析数据。 SQL Server 2008 R2的使用教程如下: 1. 安装和配置:首先,你需要下载并安装SQL Server 2008 R2软件。安装完成后,需要进行一些简单的配置,例如指定数据库文件的存储路径、设置数据库引擎等。 2. 创建数据库:在SQL Server 2008 R2中,你可以通过使用查询分析器或SQL Server Management Studio工具来创建数据库。选择一个适当的方法,然后执行创建数据库的命令。 3. 创建表:一旦数据库创建好了,你需要定义表。表是存储数据的基本单位。通过使用CREATE TABLE语句,你可以指定表的列、数据类型和约束等。 4. 插入数据:在表中插入数据可以使用INSERT INTO语句。你需要为每个表指定插入的列和对应的值。 5. 查询数据:使用SELECT语句可以从一个或多个表中检索数据。通过指定需要检索的列和条件,你可以获取所需的数据。 6. 更新数据:如果需要修改表中的数据,可以使用UPDATE语句。你可以指定要更新的表、列和新值。 7. 删除数据:通过使用DELETE语句,可以从表中删除数据。你可以指定要删除的表、行和条件。 8. 数据库管理:SQL Server 2008 R2提供了许多管理数据库的工具和功能。比如备份和还原数据库、创建和管理用户和角色、优化查询性能等。 9. 数据分析:在SQL Server 2008 R2中,还提供了数据分析的功能。你可以使用集成的报表工具和数据挖掘功能来进行数据分析。 总结起来,SQL Server 2008 R2的使用教程包括了安装配置、数据库创建、表定义、数据插入、查询、更新和删除、数据库管理以及数据分析等方面。通过掌握这些基本操作,你可以提高数据处理和管理的效率。 ### 回答2: SQL Server 2008 R2是一款功能强大的关系数据库管理系统,以下是使用教程的简要介绍: 1. 安装和配置:首先需要下载并安装SQL Server 2008 R2,安装过程较为简单,按照向导提示进行即可。安装完成后,打开SQL Server Management Studio(SSMS),连接到本地或远程数据库服务器。 2. 创建数据库:在SSMS中,使用“新建查询”或“新建查询窗口”命令创建一个新的查询窗口。在查询窗口中输入CREATE DATABASE语句,指定要创建的数据库的名称和属性,运行该语句即可创建数据库。 3. 创建表和模式:在查询窗口中使用CREATE TABLE语句创建表,指定表名、列名和数据类型。可以定义主键、外键、索引等约束,确保数据的完整性和查询的效率。也可以使用CREATE SCHEMA语句创建模式,用于组织和管理表和其他数据库对象。 4. 插入和更新数据:使用INSERT INTO语句插入新记录,指定表名和要插入的值。使用UPDATE语句更新表中的数据,指定表名、列名和新值。可以使用WHERE子句限制更新的范围。 5. 查询数据:使用SELECT语句查询数据库中的数据,指定要查询的列和表名。可以使用WHERE子句筛选符合特定条件的记录。还可以使用ORDER BY子句对查询结果进行排序,使用GROUP BY子句进行分组。 6. 删除和修改数据:使用DELETE语句删除表中的记录,使用DROP TABLE语句删除整个表。使用ALTER TABLE语句修改表的结构,例如添加、删除或修改列的定义。 7. 事务管理:使用BEGIN TRANSACTION、COMMIT和ROLLBACK语句定义和管理事务。事务用于确保数据库操作的原子性和一致性,可以回滚到事务开始之前的状态。 8. 数据备份和恢复:使用SQL Server Management Studio中的备份和还原向导,可以对整个数据库或特定表进行备份和恢复。备份可以保护数据免受灾难性故障和人为错误的影响。 SQL Server 2008 R2拥有丰富的功能和工具集,上述是基本的使用教程,希望对你有所帮助。如需深入学习和了解更多高级功能,请参考官方文档和在线教程。 ### 回答3: SQL2008R2是一种数据库管理系统,其使用教程指的是学习和掌握SQL Server 2008R2的方法和技巧。 首先,了解SQL的基本概念和语法是必要的。可以阅读相关的教材或参加培训课程来学习SQL的基础知识。学习SQL的基本语法包括如何创建表、插入数据、查询数据、更新数据和删除数据等。 其次,熟悉SQL Server 2008R2的界面和工具。打开SQL Server Management Studio(SSMS),可以连接到数据库实例并执行SQL语句。了解SSMS的基本界面布局和各个功能区块的作用,例如查询编辑器、对象资源管理器和结果窗口等。 接下来,学习如何创建数据库和表。通过使用SSMS的对象资源管理器,我们可以创建和管理数据库和表。创建数据库可以通过“新建数据库”向导或手动编写T-SQL脚本来实现。创建表可以通过“表设计器”或手动编写CREATE TABLE语句来实现。了解如何定义表的结构、字段和约束等。 然后,学习如何插入、查询、更新和删除数据。使用T-SQL语句来实现数据操作,例如INSERT、SELECT、UPDATE和DELETE等。了解不同类型的查询和如何使用WHERE子句、JOIN和子查询来过滤和连接数据。 此外,掌握如何创建和使用索引、视图、存储过程和触发器等高级功能。索引可以提高查询性能,视图可以简化复杂的查询,存储过程可以封装一系列SQL语句,而触发器可以在数据操作发生时自动执行相应的操作。 最后,了解SQL Server 2008R2的管理和优化。学习如何备份和还原数据库,如何监视和分析数据库性能,如何诊断和调优查询性能等。可以使用SSMS和SQL Server配置管理器等工具来进行管理和优化。 总结而言,学习SQL Server 2008R2的使用教程需要了解基本的SQL语法和概念,熟悉SSMS的界面和工具,掌握数据库和表的创建,以及数据操作和高级功能的使用。此外,了解数据库的管理和优化也是必要的。可以通过阅读教材、参加培训课程和实践来逐步掌握SQL Server 2008R2的使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值