常用的数据库多表连接方法

1、内连接  

(1).from  a,b 

    语法:select a.x,b.y from a,b where a.id=b.id;

    备注:返回所有满足where条件的行

(2).inner join  

     语法:select a.x from a inner join b on a.id=b.id

     备注:inner 可以省略,一般都省略【和 from a,b where a.x=b.y同样的效果。在某种意义上,两者等同】

 

2、外连接

 (1).左外连接  left outer join 

        说明:查询结果除了返回包含连接条件的行,还包含左表(a)中不满足连接条件的行,其中不满足连接条件的行中b表的字段值将被置为空

      语法:select a.x from a  left outer join b on a.id=b.id;

      备注:outer 可以省略,一般都省略

      理解:【A left join B】left join即把左边表A当作基准。查询结果是A中所有的数据和B中满足条件的数据

    特殊情况:当查询中出现过滤条件时

         1)当连接条件后面有where条件时:

                 例句:select  a.name, a.id, b.name   from A a left outer join  B b  on a.id = b.id  where b.name like 'S'

                 说明:先根据连接条件a.id = b.id查询,再对查询结果按过滤条件查询

          2)当连接条件后面有and条件时:

                例句:select  a.name, a.id, b.name   from A  a left outer join  B b  on( a.id = b.id  and b.name like 'S')

                说明:先对b表按过滤条件查询,再对结果执行左连接查询。

 (2).右外连接 right outer join 

       说明:和左外连接同理

       理解:【A right join B】right join即把右边表B当作基准。 查询结果是B中所有的数据和A中满足条件的数据

(3).全外连接 full outer join  

        语法:SELECT *  FROM TESTA  FULL OUTER JOIN TESTB ON TESTA.A=TESTB.A

        备注:outer可以省略,一般都省略

        理解:包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。

 

3、union 和 union all

       语法:select userid,username,REALNAME from user_t
                  UNION  ALL
                select userid,username,REALNAME from user_t;

     结果图

              

     意义:UNION 用于合并两个或多个 SELECT 语句的结果集

    使用的条件

          ①:UNION 结果集中的列名总是等于第一个 SELECT 语句中的列名

          ②:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同

      区别当有all时会显示所有的数据,不会去除重复的行当没有all时会自动去除重复的行。

 

你可能感兴趣的:(数据库)