当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2012-08-03 12:46:00  来源:本站整理

SQL的Join利用图解教程[MSSQL防范]

赞助商链接



  本文“SQL的Join利用图解教程[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
关于SQL的Join,在学习起来大概是对比乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时刻,关于Select出来的后果集是什么模样有点不是很清楚.Coding Horror上有一篇文章(实在不清楚为什么Coding Horror也被墙)通过 文氏图 Venn diagrams 注释了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 NinjaInner join
产生的后果集合,是A和B的交集.

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 VaderFull outer join 产生A和B的并集.但是需求注意的是,关于没有匹配的记录,则会以null做为值.

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 nullLeft outer join 产生表A的完好集,而B表中匹配的则有值,没有匹配的则以null值代替.

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表中没有的调集.

SQL的Join利用图解教程

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表都没有呈现的数据集.

SQL的Join利用图解教程
还需求注册的是我们还有一个是"交差集" cross join, 这种Join没有办法用文式图表示,因为其就是把表A和表B的数据举行一个N*M的组合,即笛卡尔积.表达式以下:
复制代码 代码以下:
SELECT * FROM TableA
CROSS JOIN TableB

这个笛卡尔乘积会产生 4 x 4 = 16 条记录,普通来说,我们很罕用到这个语法.但是我们得当心,假如不是利用嵌套的select语句,普通系统城市产生笛卡尔乘积然再做过滤.这是关于性能来说是非常危险的,特别是表很大的时刻.
  以上是“SQL的Join利用图解教程[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • SQL的Join利用图解教程
  • 关于mysql的query_cache熟习的误区
  • MySql的存储历程学习小结 附pdf文档下载
  • 操纵mysql的inet_aton()和inet_ntoa()函数存储IP地址的办法分享
  • Ubuntu 10.04关闭MySQL的开机启动
  • Ubuntu下禁止和启用MySQL的自启动
  • windos下apache和mysql的权限配置
  • <b>Mysql的安装办法</b>
  • IXWebHosting中编辑MySQL的教程
  • Linux下查看Nginx Apache MySQL的并发衔接数和衔接状况
  • 基于MySQL的BBS计划(目录)
  • 基于MySQL的BBS计划(1)
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        89%(8)
    • 差的评价 如果您觉得此文章差,就请您
        11%(1)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .