select * from table1 inner join table2 on table1.id = table2.id

select * from table1 , table2
where table1.id = table2.id

两种方式的执行结果一样 它们的具体区别是什么呀

 

 

 

1 .WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接)WHERE 和INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。

2 .无论怎么连接,都可以用join子句,但是连接同一个表的时候,注意要定义别名,否则产生错误!

a> inner join:理解为“有效连接”,两张表中都有的数据才会显示left join:理解为“有左显示”,比如on a.field=b.field,则显示a表中存在的全部数据及a\\b中都有的数据,A中有、B没有的数据以null显示

b> right join:理解为“有右显示”,比如on a.field=b.field,则显示B表中存在的全部数据及a\\b中都有的数据,B中有、A没有的数据以null显示

c> full join:理解为“全连接”,两张表中所有数据都显示,实际就是inner +(left-inner)+(right-inner)

3 .join可以分主次表 外联接有三种类型:完全外联,左联,右联.
完全外联包含两张表的所有记录.
左联是以左边的表为主,右边的为辅,右联则相反

相关文章:

  • 2021-06-24
  • 2021-09-14
  • 2022-12-23
  • 2022-12-23
  • 2021-12-05
  • 2021-10-21
  • 2022-01-24
  • 2022-01-18
猜你喜欢
  • 2021-12-19
  • 2018-01-12
  • 2022-02-25
  • 2022-01-20
  • 2021-10-11
  • 2021-11-01
相关资源
相似解决方案