我们知道,在使用mysql数据库的过程中,往往是涉及多个表格的查询,在进行多个表格查询的时候就会想到用连接的方式先把所需要的数据全部整和到一起,然后再对数据进行筛选,那我们如何去选择连接的方式呢?接下来就总结一下。
首先,我们可能是会想到sql连接标准,分为sql92和sql99,sql92的连接没有join等关键词,只是用where语句加上连接条件来连接多个表格,只是相对sql99标准来说可读性不是很友好,当然写起来也不够便捷。
先讲一下连接的形式:
一、内连接:
内连接分为以下三种(根据连接条件来分):
1、等值连接
实例:select s.name ,s.score s.id , scho.level from student as s
join scholarship on s.id =scho.stid;
2、非等值连接
select s.name ,scores ,level from student as s join score_level as sl
on scores between sl.max and sl.min;
3、自连接
select e.last_name , s.last_name from employees as e join employees as s on e.employee_id =s.manager_id;
注意看这是同一个表格,所以是自连接,以上实例不具任何意义,只是做形式上的展示。
二、外连接:
1、左连接
关键词:left join,具体的连接形式和内连接一致
2、右连接
关键词:right join,具体的连接形式和内连接一致
3、全连接(可忽略,mysql不支持)
(使用外连接的场景通常是,一个表格存在该数据,另一个表格不存在,比如,学生表格中对应的课程id很多包含A、B、C、D、E、F等等,但是课程表格中只存在前面四个课程的相关数据,这样的场景一般是使用外连接,个人理解。)
三、交叉连接:
交叉连接获取的数据形式就是笛卡尔积的形式,即M x N
M是第一个表格的行数,N是第二个表格的行数。
了解了上面三种连接方式以后,再讲一下试用场景。
主要看前面五种即可。