请大家来讨论各种JOIN的用法!(15天结贴) To: CCEO()可不可以把你的理解讲一下? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 关于用法: SQL SERVER的OnlineBook中都有关于理论: 离散数学 用powerbuilder建数据窗口,查看sql格式,可以发现多种数据库的连接方式, 看了理论,在找个sql自带的nothwind数据库练习一下就知道了,比较一下left, right, full out join 等.. 我个人认为用法没什么好说的,SQLServer自带的丛书讲的非常明白。如果想了解如何高效的使用JOIN操作,就必须弄明白JOIN运算是怎么实现的,数据库原理好像讲过,先做笛卡儿乘积,然后根据条件选择符合的记录。但是我个人认为考虑到优化的效果,在具体实现时,完全可以先基于条件选择,然后做笛卡儿乘积。另外有人问过一个问题,ON操作符后面的条件是从左向右的执行还是从右向左执行的呢,(有人讨论过,好像结论是从左向右,个人认为这好像不太重要,查询优化的时候数据库自身会判断的)。 Please seehttp://expert.csdn.net/Expert/topic/1269/1269131.xml?temp=6.028384E-02Which One is faster? 也請看一下:http://expert.csdn.net/Expert/topic/1273/1273202.xml?temp=.3176691看哪种方法快,鎖定記錄少 INNER JOIN对于 T1 的每一行 R1,生成的连接表都有一行对应 T2 中的 每一个满足和 R1 的连接条件的行. LEFT OUTER JOIN首先,执行一次 INNER JOIN.然后,为 T1 里那些和 T2 里任何一行都不满足连接条件的行返回一个连接行, 同时该连接行里对应 T2 的列用 NULL 补齐.因此, 生成的连接表里无条件地包含来自 T1 里的每一行至少 一个副本. RIGHT OUTER JOIN首先,执行一次 INNER JOIN.然后,为 T2 里那些和 T1 里任何一行都不满足连接条件的行返回一个连接行, 同时该连接行里对应 T1 的列用 NULL 补齐.因此, 生成的连接表里无条件地包含来自 T2 里的每一行. FULL OUTER JOIN首先,执行一次 INNER JOIN.然后,为 T1 里那些和 T2 里任何一行都不满足连接条件的行返回一个连接行, 同时该连接行里对应 T2 的列用 NULL 补齐. 同样,为 T2 里那些和 T1 里的任何行都不满足连接条件的 行返回一个连接行,该行里对应 T1 的列用 NULL 补齐. 一个很费解的问题 SQL 事务问题不锁表 SQL2000里SQL语句能导入为数据文件吗?如果能那该怎么导入呢?! 如何正规化创建数据库 不知道有没有这样的SQL语句 sql问题 当启动代理时,提示“发生错误5...”,[zjcxc(邹建)、fayifu(fayifu)和各位高人请进]! 求高手 帮助 在ado中怎样知道表的名称 哪位高人知道,我用Delphi和SQL Server开发数据库系统,程序怎么才能在Dos模式下运行? 简单问题,ACCESS可以作到而SQL SERVER却不可以。 有关触发器的理解:请大家帮忙!!!!!
关于用法: SQL SERVER的OnlineBook中都有
关于理论: 离散数学
如果想了解如何高效的使用JOIN操作,就必须弄明白JOIN运算是怎么实现的,
数据库原理好像讲过,先做笛卡儿乘积,然后根据条件选择符合的记录。但是我个人认为考虑到优化的效果,在具体实现时,完全可以先基于条件选择,然后做笛卡儿乘积。另外有人问过一个问题,ON操作符后面的条件是从左向右的执行还是从右向左执行的呢,(有人讨论过,好像结论是从左向右,个人认为这好像不太重要,查询优化的时候数据库自身会判断的)。
http://expert.csdn.net/Expert/topic/1273/1273202.xml?temp=.3176691
看哪种方法快,鎖定記錄少
对于 T1 的每一行 R1,生成的连接表都有一行对应 T2 中的 每一个满足和 R1 的连接条件的行. LEFT OUTER JOIN
首先,执行一次 INNER JOIN.然后,为 T1 里那些和 T2 里任何一行都不满足连接条件的行返回一个连接行, 同时该连接行里对应 T2 的列用 NULL 补齐.因此, 生成的连接表里无条件地包含来自 T1 里的每一行至少 一个副本. RIGHT OUTER JOIN
首先,执行一次 INNER JOIN.然后,为 T2 里那些和 T1 里任何一行都不满足连接条件的行返回一个连接行, 同时该连接行里对应 T1 的列用 NULL 补齐.因此, 生成的连接表里无条件地包含来自 T2 里的每一行. FULL OUTER JOIN
首先,执行一次 INNER JOIN.然后,为 T1 里那些和 T2 里任何一行都不满足连接条件的行返回一个连接行, 同时该连接行里对应 T2 的列用 NULL 补齐. 同样,为 T2 里那些和 T1 里的任何行都不满足连接条件的 行返回一个连接行,该行里对应 T1 的列用 NULL 补齐.