惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
U
Unit 42
The Register - Security
The Register - Security
S
Security Affairs
博客园 - 【当耐特】
Latest news
Latest news
爱范儿
爱范儿
T
The Exploit Database - CXSecurity.com
F
Full Disclosure
C
Cisco Blogs
宝玉的分享
宝玉的分享
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LangChain Blog
P
Privacy & Cybersecurity Law Blog
腾讯CDC
C
CXSECURITY Database RSS Feed - CXSecurity.com
V
Vulnerabilities – Threatpost
Jina AI
Jina AI
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 叶小钗
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园_首页
博客园 - 三生石上(FineUI控件)
D
DataBreaches.Net
WordPress大学
WordPress大学
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Microsoft Security Blog
Microsoft Security Blog
N
News and Events Feed by Topic
Recorded Future
Recorded Future
Scott Helme
Scott Helme
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
AWS News Blog
AWS News Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
人人都是产品经理
人人都是产品经理
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tor Project blog
F
Fortinet All Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hacker News: Front Page
J
Java Code Geeks
A
About on SuperTechFans
The GitHub Blog
The GitHub Blog
博客园 - 聂微东
Last Week in AI
Last Week in AI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
W
WeLiveSecurity
V2EX - 技术
V2EX - 技术
T
Troy Hunt's Blog
Attack and Defense Labs
Attack and Defense Labs

博客园 - 电电儿

FME Cloud 账号申请流程 FME中通过HTMLExtractor向HTML要数据 在windows 2003下安装 django + apache + mod_python arcgis中坐标系统的简单描述 arcgis 中利用txt坐标文件创建要素的办法,含txt文件详细格式~ Django静态文件配置备忘录 【转】ARCSDE+ORACLE备份 测量坐标系中单个多边形面积解析法计算的程序源代码 - 电电儿 - 博客园 测试oracle with as System.Data.SQLite测试 oracle左右连接的另外表示方法 Oracle 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数,其他函数) Oracle中的Union、Union All、Intersect、Minus inner join,full outer join,left join,right join,cross join Oracle中的自连接(self join) Oracle 中的natural join (自然连接) 用正则表达式分析正则表达式!求正则表达式组数~ - 电电儿 - 博客园 BoooLee pyretoolkit -- 一个基于python re模块的在线正则表达式测试工具 GDAL 在windows python环境下的安装步骤
ORACLE JOIN
电电儿 · 2009-09-13 · via 博客园 - 电电儿
  1. 条件连接(join)   
  2. T1 { [INNER] | { LEFT | RIGHT | FULL } [OUTER] } JOIN T2 ON boolean_expression   
  3. T1 { [INNER] | { LEFT | RIGHT | FULL } [OUTER] } JOIN T2 USING ( join column list )   
  4. T1 NATURAL { [INNER] | { LEFT | RIGHT | FULL } [OUTER] } JOIN T2   
  5. INNER 和 OUTER 对所有连接(join) 类型都是可选的.INNER 是缺省; LEFT,RIGHT,和 FULL 隐含外连接.   
  6. 连接条件在ON或USING子句里声明, 或者用关键字NATURAL隐含地声明.连接条件判断来自两个源表 中的那些行是"匹配"的,这些我们将在下面详细解释.   
  7. ON子句是最常见的连接条件的类型∶它接收一个和WHERE子句里用的一样的 布尔值表达式.如果两个分别来自T1和T2的行在ON表达式上运算的 结果为真,那么它们就算是匹配的行.   
  8. USING是缩写的概念∶它接收一个用逗号分隔的字段名字列表, 这些字段必须是连接表共有的,最终形成一个连接条件,表示 这些字段对必须相同.最后,JOIN USING 的输出会为每一对相等 的输入字段输出一个字段,后面跟着来自各个表的所有其它字段. 因此,USING (a, b, c) 等效于 ON (t1.a = t2.a AND t1.b = t2.b AND t1.c = t2.c) 只不过是如果使用了ON,那么在结果里 a,b,和 c字段每个都会有两个, 而用USING的时候每个字段就只会有一个.   
  9. 最后,NATURAL 是USING 的缩写形式∶它形成一个 USING 列表, 该列表由那些在两个表里都出现了的字段名字组成.和USING一样, 这些字段只在输出表里出现一次.   
  10. 条件JOIN的可能类型是∶   
  11. INNER JOIN   
  12. 对于 T1 的每一行 R1,生成的连接表都有一行对应 T2 中的 每一个满足和 R1 的连接条件的行.   
  13. LEFT OUTER JOIN   
  14. 首先,执行一次内连接.然后,为 T1 里那些和 T2 里任何一行都不满足连接条件的行返回一个连接行, 同时该连接行里对应 T2 的列用空值补齐.因此, 生成的连接表里无条件地包含来自 T1 里的每一行至少 一个副本.   
  15. RIGHT OUTER JOIN   
  16. 首先,执行一次内连接.然后,为 T2 里那些和 T1 里任何一行都不满足连接条件的行返回一个连接行, 同时该连接行里对应 T1 的列用空值补齐.因此, 生成的连接表里无条件地包含来自 T2 里的每一行.   
  17. FULL OUTER JOIN   
  18. 首先,执行一次内连接.然后,为 T1 里那些和 T2 里任何一行都不满足连接条件的行返回一个连接行, 同时该连接行里对应 T2 的列用空值补齐. 同样,为 T2 里那些和 T1 里的任何行都不满足连接条件的 行返回一个连接行,该行里对应 T1 的列用空值补齐.   
  19. 如果 T1 和 T2 有一个或者都是可以连接(join)的表, 那么所有类型的连接都可以串在一起或嵌套在一起. 你可以在JOIN子句周围使用圆括弧来控制连接顺序, 如果没有圆括弧,那么JOIN子句是从左向右嵌套的.   
  20. 为了解释这些问题,假设我们有一个表 t1   
  21. num | name   
  22. -----+------   
  23. 1 | a   
  24. 2 | b   
  25. 3 | c   
  26. 和 t2   
  27. num | value   
  28. -----+-------   
  29. 1 | xxx   
  30. 3 | yyy   
  31. 5 | zzz   
  32. 然后我们用不同的连接方式可以获得各种结果:   
  33. => SELECT * FROM t1 CROSS JOIN t2;   
  34. num | name | num | value   
  35. -----+------+-----+-------   
  36. 1 | a     |   1 | xxx   
  37. 1 | a     |   3 | yyy   
  38. 1 | a     |   5 | zzz   
  39. 2 | b     |   1 | xxx   
  40. 2 | b     |   3 | yyy   
  41. 2 | b     |   5 | zzz   
  42. 3 | c     |   1 | xxx   
  43. 3 | c     |   3 | yyy   
  44. 3 | c     |   5 | zzz   
  45. (9 rows)   
  46. => SELECT * FROM t1 INNER JOIN t2 ON t1.num = t2.num;   
  47. num | name | num | value   
  48. -----+------+-----+-------   
  49. 1 | a     |   1 | xxx   
  50. 3 | c     |   3 | yyy   
  51. (2 rows)   
  52. => SELECT * FROM t1 INNER JOIN t2 USING (num);   
  53. num | name | value   
  54. -----+------+-------   
  55. 1 | a     | xxx   
  56. 3 | c     | yyy   
  57. (2 rows)   
  58. => SELECT * FROM t1 NATURAL INNER JOIN t2;   
  59. num | name | value   
  60. -----+------+-------   
  61. 1 | a     | xxx   
  62. 3 | c     | yyy   
  63. (2 rows)   
  64. => SELECT * FROM t1 LEFT JOIN t2 ON t1.num = t2.num;   
  65. num | name | num | value   
  66. -----+------+-----+-------   
  67. 1 | a     |   1 | xxx   
  68. 2 | b     |      |   
  69. 3 | c     |   3 | yyy   
  70. (3 rows)   
  71. => SELECT * FROM t1 LEFT JOIN t2 USING (num);   
  72. num | name | value   
  73. -----+------+-------   
  74. 1 | a     | xxx   
  75. 2 | b     |   
  76. 3 | c     | yyy   
  77. (3 rows)   
  78. => SELECT * FROM t1 RIGHT JOIN t2 ON t1.num = t2.num;   
  79. num | name | num | value   
  80. -----+------+-----+-------   
  81. 1 | a     |   1 | xxx   
  82. 3 | c     |   3 | yyy   
  83.       |       |   5 | zzz   
  84. (3 rows)   
  85. => SELECT * FROM t1 FULL JOIN t2 ON t1.num = t2.num;   
  86. num | name | num | value   
  87. -----+------+-----+-------   
  88. 1 | a     |   1 | xxx   
  89. 2 | b     |      |   
  90. 3 | c     |   3 | yyy   
  91.       |       |   5 | zzz   
  92. (4 rows)   
  93. 用 ON 声明的连接条件也可以包含与连接不直接相关 的条件。这种功能可能对某些查询很有用,但是需要我们仔细想想。 比如:   
  94. => SELECT * FROM t1 LEFT JOIN t2 ON t1.num = t2.num AND t2.value = 'xxx';   
  95. num | name | num | value   
  96. -----+------+-----+-------   
  97. 1 | a     |   1 | xxx   
  98. 2 | b     |      |   
  99. 3 | c     |      |   
  100. (3 rows) 

posted @ 2009-09-13 15:19  电电儿  阅读(436)  评论()    收藏  举报