MySQL-----多表关联查询

什么是多表关联查询,有几种多表关联的查询方式,分别是什么?

对多张具有一定关系的表中的数据进行查询。

 

直接查询

SELECT * FROM emp, dept;

 

关联查询 查询多张表中都有的数据

SELECT * FROM emp, dept WHERE emp.dept_id = dept.id;

 

子查询

子查询通俗来讲,就是查询中有查询。

 

    1)单行子查询 查询结果为单个

         SELECT * FROM emp

                WHERE dept_id = (SELECT id FROM dept WHERE dname = '常委');

 

    2)多行子查询 查询结果为多个

         SELECT * FROM emp

                WHERE dept_id IN

                        (SELECT id FROM dept WHERE dname IN ("班委","常委");

 

连接查询

    1)内连接查询[扩展]

         INNER JOIN与一般的连表查询一致,即使用逗号隔开的查询方式。

         Inner join(相等联接或内联接)

 

              sql语句如下: 

              SELECT * FROM  a INNER JOIN  b ON a.aID =b.bID

              等同于以下SQL句:

              SELECT *  FROM a,b WHERE a.aID = b.bID

 

    2)外连接查询

         特点:外连接有一主一次。

       外联接可以是左向外联接、右向外联接或完整外部联接。

       a) 左外连接查询(LEFT OUTER JOIN -> LEFT JOIN)

          左外连接左表为主,那么左表中所有的记录无论满足不满足条件,都打印出来。不满足条件的值用null填补。

          SELECT * FROM dept d LEFT JOIN emp e ON d.id = e.dept_id;

 

        b) 右外连接查询(RIGHT OUTER JOIN -> RIGHT JOIN) 

          右外连接右表为主,那么右表中所有的记录无论满足不满足条件,都打印出来。不满足条件的值用null填补。

          SELECT * FROM dept d RIGHT JOIN emp e ON d.id = e.dept_id;

        

    3)全连接查询[扩展]

              所谓全连接其实就是左右连接的并集,即内连接的结果,加上左表和右表中不满足条件的所有行。其实mysql并不认识全连接语法。此概念在其他数据库中有的存在。

              from 表1 full [outer] join 表2 on 连接条件;

    4)扩展:hash查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值