设为首页 收藏本站
查看: 676|回复: 0

[经验分享] Oracle inner join和where区别

[复制链接]

尚未签到

发表于 2016-8-10 07:13:18 | 显示全部楼层 |阅读模式
1 .WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接)WHERE 和INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。  2 .无论怎么连接,都可以用join子句,但是连接同一个表的时候,注意要定义别名,否则产生错误!
  > inner join:理解为“有效连接”,两张表中都有的数据才会显示left join:理解为“有左显示”,比如on a.field=b.field,则显示a表中存在的全部数据及a\\b中都有的数据,A中有、B没有的数据以null显示
  > right join:理解为“有右显示”,比如on a.field=b.field,则显示B表中存在的全部数据及a\\b中都有的数据,B中有、A没有的数据以null显示
  > full join:理解为“全连接”,两张表中所有数据都显示,实际就是inner +(left-inner)+(right-inner)
  3 .join可以分主次表   外联接有三种类型:完全外联,左联,右联.
  完全外联包含两张表的所有记录.
  左联是以左边的表为主,右边的为辅,右联则相反
  4.一般要使得数据库查询语句性能好点遵循一下原则:
  在做表与表的连接查询时,大表在前,小表在后
  不使用表别名,通过字段前缀区分不同表中的字段
  查询条件中的限制条件要写在表连接条件前
  尽量使用索引的字段做为查询条件
  在 SQL-92 标准中,内联接可在 FROM 或 WHERE 子句中指定。这是 WHERE 子句中唯一一种 SQL-92 支持的联接类型。WHERE 子句中指定的内联接称为旧式内联接。
  下面的 Transact-SQL 查询是内联接的一个示例:
  USE pubs
  SELECT *
  FROM authors AS a INNER JOIN publishers AS p
  ON a.city = p.city
  ORDER BY a.au_lname DESC
  此内联接称为相等联接。它返回两个表中的所有列,但只返回在联接列中具有相等值的行。
  下面是结果集:
  au_id au_lname au_fname phone address city
  ----------- -------- -------- ------------ --------------- --------
  238-95-7766 Carson Cheryl 415 548-7723 589 Darwin Ln. Berkeley
  409-56-7008 Bennet Abraham 415 658-9932 6223 Bateman St. Berkeley
  state zip contract pub_id pub_name city state country
  ----- ----- -------- ------ --------------------- -------- ----- -------
  CA 94705 1 1389 Algodata Infosystems Berkeley CA USA
  CA 94705 1 1389 Algodata Infosystems Berkeley CA USA
  (2 row(s) affected)
  在结果集中,city 列出现两次。由于重复相同的信息没有意义,因此可以通过更改选择列表消除两个相同列中的一个。其结果称为自然联接。可以重新表述前面的 Transact-SQL 查询以形成自然联接。例如:
  USE pubs
  SELECT p.pub_id, p.pub_name, p.state, a.*
  FROM publishers p INNER JOIN authors a
  ON p.city = a.city
  ORDER BY a.au_lname ASC, a.au_fname ASC
  下面是结果集:
  pub_id pub_name state au_id au_lname au_fname
  ------ --------------- -------- ----------- -------- -------- 1389 Algodata Infosystems CA 409-56-7008 Bennet Abraham
  1389 Algodata Infosystems CA 238-95-7766 Carson Cheryl
  phone address city state zip contract
  --------------- ------------- -------- ----- ----- ---------
  415 658-9932 6223 Bateman St. Berkeley CA 94705 1
  415 548-7723 589 Darwin Ln. Berkeley CA 94705 1
  (2 row(s) affected)

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-255575-1-1.html 上篇帖子: oracle存储过程带游标例子 下篇帖子: oracle存储过程中if嵌套
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表