sql多表连接查询

Posted zy-luo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql多表连接查询相关的知识,希望对你有一定的参考价值。

1.交叉连接

         返回两个表的笛卡尔积:select * from A,B

         比如A的id有1,2,3,B的aid有2,3,4,得到的数据:
         id .....aid.....
         1         2
         1         3
         1         4
         2         2
         ....      ....
         3         3
         3         4

2.内连接--inner join(inner可以省略)

  返回两个表的交集:

    2.1隐式内连接(看不到join的内连接)

         就是加了条件的交叉连接:select * from A,B where A.id = B.aid

         比如A的id有1,2,3,B的aid有2,3,4,得到的数据:
         id........A表数据(不含id)........aid........B表数据(不含aid)
         2               不为空                  2              不为空  
         3               不为空                  3              不为空

    2.2显式内连接

         (1).select *from A inner join B on A.id = B.aid-----------得到的数据和隐式内连接一样
         (2).select *from A inner join B using (id)----------当B表中的外键名等于A表的主键名时使用,查询结果只有一个id字段的值

         比如A的id有1,2,3,B的id有2,3,4,得到的数据:
         id........A表数据(不含id)........B表数据(不含aid)
         2               不为空                      不为空  
         3               不为空                      不为空

3.外连接

         返回两个表的并集

    3.1左外连接left outer join(outer 省略)

         select *from A left outer join B on A.id = B.aid     
         返回A和B的并集,比如A的id有1,2,3,B的oid有2,3,4,返回的是1,2,3,id为1的记录中B表信息为空
         id........A表数据(不含id)........aid........B表数据(不含aid)
         1               不为空                  空                空
         2               不为空                   2              不为空  
         3               不为空                   3              不为空

    3.2右外连接right outer join(outer 省略)

         select *from A right outer join B on A.id = B.aid   
         返回A和B的并集,比如A的id有1,2,3,B的oid有2,3,4,返回的是2,3,4,id为4的记录中A表信息为空
         id........A表数据(不含id)........aid........B表数据(不含aid)
         2               不为空                   2              不为空  
         3               不为空                   3              不为空
        空                 空                        4              不为空

以上是关于sql多表连接查询的主要内容,如果未能解决你的问题,请参考以下文章

SQL多表连接查询(详细实例)

SQL多表连接查询(详细实例)

sql多表查询

用sql语句进行多表连接查询,怎么不查出重复数据

Oracle(sql)文盲大扫除思维导图系列——多表连接查询子查询

SQL多表查询