多表查询

Posted wangkaia

tags:

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

多表查询:
    1 合并结果集
    select *from ab
    union //all
    select *from cd;
    使用合并结果集的条件,是结果集当中的列数和类型完全相同的时候才能够进行结果集的
合并。不带all的时候会将重复的结果去除。
    2 连接查询
    a 内连接
    使用内连接时,产生的查询的列数为m×n,叫做笛卡尔积。
    内连接的查询形式如下:(方言形式)
    select *
    from dept,emp
    where dept.deptno=emp.deptno
       使用条件来进行无用笛卡尔积的过滤,精简查询的结果。查询的过程当中使用表的
    别名来精简查询语句。
    
    内连接查询的(标准的形式)
    select e.ename,e.sal,d.dname
    from emp e inner join dept d
    on e.deptno=d.deptno
    
    内连接的查询的自然形式(很少使用,可读性较差)
    select e.ename,e.sal,d.dname
    from emp e natural join dept d
    使用自然连接的话,不需要自己添加笛卡尔积的过滤条件。数据库会找到两个
    表当中相同的列来进行自动的匹配和过滤。

    b 外连接
        外连接主要分为左外连接和右外连接两种形式,左表和右表分别作为
    主表。还有一种全外连接,但是mysql不支持全外连接。可以通过合并结果
    集的方式来实现全外连接的代替。
        外连接可以将不满足条件的某些结果显示出来。具有一主一次的关系。
    主表当中的所有记录无论是否满足条件都要打印出来,次表当中的记录全
    使用null来进行填充。
    查询的形式如下:
    select e.name,e.sal,d.dname
    from emp e left/right outer join dept d
    on e.deptno=d.deptno
  

  3 子查询
        sql语句当中包含多个select关键字的查询叫做子查询。
    也可以理解成为使用上一次查询的结果进行再一次的查询,
    或者是在查询结果的基础上进行二次查询。对应的分别为出现
    在where后作为条件,在from后作为表。
    
    

   

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

MySQL-04-笔记

Oracle笔记 多表查询

SQL语句 - 多表查询使用详细介绍

多表查询_左连接多表操作_子查询

多表查询

MySQL 如何多表查询