当前位置:   article > 正文

MySQL基础(三)-数据查询之连接查询(内连接、外连接)、多表联查_内连接查询

内连接查询

目录

一、连接查询

1、什么是连接查询

2、查询连接的分类

3、笛卡尔积现象(笛卡尔乘积现象)

如何避免笛卡尔积现象?——加条件进行过滤

4、内连接

(1)等值连接

(2)非等值连接

(3)自连接

5、外连接

 什么是外连接,和内连接的区别是什么?

外连接的分类?

外连接最主要的特点是:主表的数据无条件的全部查询出来。

6、三张表的连接查询


上一篇:

MySQL基础(一)-MySQL的概述及数据定义语言DDL的基本操作

(3条消息) MySQL基础(二)-数据的基本操作【增删改查】_five小点心的博客-CSDN博客

一、连接查询

1、什么是连接查询

        在实际开发中,大部门的情况下都不是从单表中查询数据,一般都是多张表联合查询,取出最终的结果。

        在实际开发中,一般一个业务会对应多张表。如:学生和班级。如果将学生和班级信息存储到一张表中数据会存在大量的重复,导致数据的冗余。

2、查询连接的分类

根据语法出现的时间来划分

SQL92:较老的语法

SQL99:比较新的语法

根据表的连接方式来划分,包括:

内连接

        等值连接

        非等值连接

        自连接

外连接:

        左外连接(左连接)

        右外连接(右连接)

全连接(使用较少)

3、笛卡尔积现象(笛卡尔乘积现象)

案例:找出每一个学生的成绩,要求显示学生姓名和成绩。

  1. student表
  2. +--------+
  3. | sname |
  4. +--------+
  5. | 赵雷 |
  6. | 钱电 |
  7. | 孙风 |
  8. | 李云 |
  9. | 周梅 |
  10. | 吴兰 |
  11. | 郑竹 |
  12. | 王菊 |
  13. +--------+
  14. 8 rows in set (0.00 sec)
  15. sc成绩表
  16. +-------+
  17. | score |
  18. +-------+
  19. | 80 |
  20. | 90 |
  21. | 99 |
  22. | 70 |
  23. | 60 |
  24. | 80 |
  25. | 80 |
  26. | 80 |
  27. | 80 |
  28. | 50 |
  29. | 30 |
  30. | 20 |
  31. | 76 |
  32. | 87 |
  33. | 31 |
  34. | 34 |
  35. | 89 |
  36. | 98 |
  37. +-------+
  38. 18 rows in set (0.00 sec)
  39. select sname,score from student,sc;
  40. +--------+-------+
  41. | sname | score |
  42. +--------+-------+
  43. | 赵雷 | 80 |
  44. | 钱电 | 80 |
  45. | 孙风 | 80 |
  46. | 李云 | 80 |
  47. | 周梅 | 80 |
  48. | 吴兰 | 80 |
  49. | 郑竹 | 80 |
  50. | 王菊 | 80 |
  51. | 赵雷 | 90 |
  52. | 钱电 | 90 |
  53. | 孙风 | 90 |
  54. ...................
  55. 144 rows in set (0.00 sec)

笛卡尔积现象:当两张表进行连接查询的时候,没有任何条件进行限制,最终的查询结果条数是两张表记录条数的乘积。

关于表的别名:

select stu.sname,s.score from student stu ,sc s;

表别名的好处:

        1、执行效率高

        2、可读性好

如何避免笛卡尔积现象?——加条件进行过滤

需要注意的是,加条件进行限制之后,记录的匹配次数不变,仍为144次,只不过显示的是有效记录。

我们将上面的代码进行修改。

  1. select
  2. stu.sname,s.score
  3. from
  4. student stu,sc s
  5. where
  6. stu.s=s.s
  7. ; // SQL92语法

4、内连接

(1)等值连接

等值连接最大的特点是:条件是等量关系。

语法(SQL99):

  1. ......
  2. A
  3. join
  4. B
  5. on
  6. 连接条件
  7. where
  8. ......

 

 左图为SQL92,右图为SQL99。

SQL92中,表连接和过滤的条件融合在一起,导致where后面的结构不清晰。

SQL99中,把表连接条件和过滤条件进行了分离,结构更清晰。。

(2)非等值连接

非等值连接最大的特点是:连接条件中的关系是非等量关系。

  1. select
  2. e.ename,e.sal,s.grade
  3. from
  4. emp e
  5. (inner) join
  6. salgrade s
  7. on
  8. e.sal between s.losal and s.hisal;

(3)自连接

自连接最大的特点是:一张表看做两张表。自己连接自己。

  1. 员工的领导编号 = 领导的员工编号
  2. select
  3. a.ename,b.ename
  4. from
  5. emp a
  6. inner join
  7. emp b
  8. on
  9. a.mgr=b.empno;

5、外连接

 什么是外连接,和内连接的区别是什么?

        内连接:假设A和B表进行连接,使用内连接的话,凡是A表和B表能够匹配上的记录查询出来,这就是内连接。AB两张表没有主副之分,两张表是平等的

        外连接:假设A和B表进行连接,使用外连接的话,AB两张表中有一张表是主表,一张表是副表。主要查询主表中的数据,捎带查询副表。当副表中的数据没有和主表中的数据匹配上,副表自动模拟出null与之匹配。

外连接的分类?

        左外连接(左连接):表示左边的这张表是主表。

        右外连接(右连接):表右边的这张表是主表。

  1. select
  2. e.ename,e.sal,s.grade
  3. from
  4. emp e
  5. left (outer) join
  6. salgrade s
  7. on
  8. e.sal between s.losal and s.hisal;

外连接最主要的特点是:主表的数据无条件的全部查询出来。

6、三张表的连接查询

案例:找出每一个员工的部门名称以及工资等级

......

        A

join

        B

join

        C

on

        ...... 

表示:A表和B表先进行表连接,连接之后A表继续和C表进行连接。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/189000
推荐阅读
相关标签
  

闽ICP备14008679号