SQL语言的主要功能就是同各种数据库建立联系,进行沟通。SQL查询是必须使用的操作功能,SQL连接查询是SQL查询的核心,SQL连接查询的连接类型选择依据要看实际的需求,所以这篇文章对SQL连接查询相关知识进行介绍,帮助大家使用好MySQL数据库。
在java编程实际开发中,数据往往不是存放储一张表中,而是同时存储在多张表中,这些表与表存在着关系,我们在检索数据的时候往往需要多张表联合起来检索,这种多表联合检索被称为连接查询或跨表查询,这就是连接查询的基本概念。
在SQL连接查询中,若两张表进行连接查询的时候没有任何条件限制,最终的查询结果总数是两张表记录的乘积,这种情况称为笛卡尔积现象,会在没有任何条件限制的时候出现。
选择哪种连接查询是很重要的,也有不同的连接查询依据,其一是根据年代分类:
1. SQL92语法
查询每一个员工所在的部门名称,要求最终显示员工姓名和对应的部门名称
select xxxx from A 表名,B表名where 表连接条件 and 数据查询条件;
缺点是表连接条件与查询条件放在一起,没有分离。
2.SQL99语法(只掌握SQL99)
语法:select xxxx from A 表名 join B 表名 where 数据查询条件;
优点:表连接独立,结构清晰,如果结果数据不满足要求,可再追加where 条件进行过滤。
连接查询的根据其二是按照连接方式分类,可以分为内连接和外连接:
1.内连接
定义:只连接匹配的行,即A表与B表相连接,能够匹配的记录查询出来。
(1)等值连接,例如:select e.ename,d.dname from emp e join dept d on e.deptno = d.deptno;//inner 可忽略
(2) 非等值连接,例如:select e.ename,e.sal,s.grade from emp e join salgrade s on e.sal between s.losal and hisal; //inner 可以省略
(3) 自连接,例如:select a.ename empname ,b.ename leadername from emp a join emp b on a.mgr = b.empno;//inner 可以忽略
2.外连接
A表和B表能够完全匹配的记录查询出来之外,将其中一张表的记录无条件的完全查询出来,对方表没有匹配的记录时,会自动模拟出null值与之匹配;
外连接的查询结果条数 >= 内连接的查询结果条数
(1)左外连接(左连接)定义:包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行;
(2)右外连接(右连接)定义:包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行;
(3)全连接(了解)定义:包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
连接查询在SQL查询中是比较重要的,如果连接查询的类型选择不当的话,非但不能提高查询效率,反而会带来一些逻辑错误或者性能低下,所以上面的内容希望大家可以好好学习,掌握好SQL连接查询的操作是学习MySQL数据库的一项重要技能。
不写代码你养我啊08-23 11:30
HelloWorld09-29 17:28
兔子06-15 17:15