Java 链接查询

来源:互联网 发布:腾讯网络电视 编辑:程序博客网 时间:2024/06/10 19:41

第八章  链接查询

 

 

一、表链接

1、什么是表链接

如果数据来自多个表,那么可以采用链接查询的方式来实现。因此表链接就是指将多个联合在一起实现查询效果。

2、表链接的原理

                                               

3、笛卡尔乘积

         表链接的基本原理就是采用笛卡尔乘积。笛卡尔乘积是指将两张表的所有数据相连,最后连接的结果数为两张表数量的乘积。

4、如何实现表链接(ON

         笛卡尔乘积出来的结果数量太多,其中有不少数据是没用的。因为我们在建表时为了表示他们的关系,都会建立外键来过滤没用的数据。使用ON关键字来确定其是否匹配。

         完整结构:

        

练习1

         查询所有学生信息及所在的班级表名称

         select 学号,姓名,科目,c.班级名称

from t_student as s join t_class as c

on s.`班级编号` = c.`班级编号`;

二、表链接的分类

1、内连接(inner join):

         内部链接两个表中的记录,仅当至少有一个同属于两个标的行符合链接条件时才返回同行。也就是只要记录不符合ON条件,就不会显示在结果集中。

         常见格式:

Select 1,属性,属性名 from 1innerjoin2 on 1.属性名 =2.属性名;

2、外链接(outer join):

   1)左外链接(left join / left outer join):

                   外部链接两个表中的记录,并包含左表中的全部记录。如果左表的某记录在右表中没有匹配即可,则在相关联的结果集中右表所有选择列均为null值。也就是即使不符合ON条件,左表中的记录也全部显示穿线,而且结果集中该类记录的右表字段为null值。

Select 1.属性名,表2.属性名 from1 left  join2 on1.属性名 =2.属性名;

 

   2)右表链接(rigth joim / right  outer join):

                   外部链接两个表中的记录,并包含右表中的全部记录。也就是和左表链接相反。

Select 1.属性名,表2.属性名 from1 right  join 2 on1.属性名 =2.属性名;

 

   3)全外链接(full  join / full  outer join):

                   完整外部链接返回左表和右表的所有行,也就是左外链接和右外链接的合并,左右两个表的记录都全部显示。

Select 1.属性名,表2.属性名 from1 full joim2 on1.属性名 =2.属性名;

 

         注意: MySQL不支持全外链接。

3、自连接:

         自连接其实就是内连接或外链接的一个特列。同样可以使用内连接或外链接。

         自连接所连接的表示来自于同一张表。

练习:

         查询每位员工姓名及他们直属领导的姓名。

         分析:

        

        

        

三、总结:

l 当一个子查询是相关子查询的时候,会严重影响性能。

l 表链接的原理是使用的笛卡尔乘积

l 表链接可分为链接、外链接、自连接

l 在链接中也可以使用From子句中跟多张表用都好分开,where子句中过滤条件。

 

                                          

0 0
原创粉丝点击