on和where

SQL学习精粹之内外连接以及where和on条件的区别

限于喜欢 提交于 2019-12-03 04:04:58
sql内外连接(重点) 在oracle的SQL语句常用的连接有内连接(inner join),外连接(outer join)等,内连接又包括等值连接,非等值连接,自连接;而外连接又分为左连接和右连接全连接。其中默认的是内连接的等值连接。 为了方便我们创建两张最简易的表A、B,具体的表结构参看下面,来分析内连接与外连接的区别 图1 图2 两个表要做连接,必须要有连接字段,而在表A和表B中连接字段是Aid和Bnamid,下图说明了连接之间关系图3 图3 (1) 内连接:利用内连接(等值)就可获取蓝色的公共部分C,即图3中的数据集C,结果集为如下: 图4 其实select * from A join B on A.Aid=B.Bnamid;等价于select * from A,B where A.Aid=B.Bnamid; 注:非等值连接主要的话是针对一个范围来查询数据,自连接主要就是把1张表看成两张表来用 (2)外连接:分为左外连接(left join)与右外连接(right join) 左外连接即公共显示的蓝色部分C1+显示黄色的记录集A1,显示语句等价于 select * from A,B where A.Aid=B.Bnamid(+); 注:sql中(+),表示外连接 可以省略 left/right join 。。and。。等关键字,其中(+)在等号左边表示右外连接