连接(join)查询
1.连接(join)查询基本概念将两个表的每一行,以“两两横向对接”的方式,所得到的所有行的结果。假设:表A有n1行,m1列;表B有n2行,m2列;则表A和表B“对接”之后,就会有:n1*n2行;m1+m2列。
2.则他们对接(连接)之后的结果类似这样:
3.连接查询的分类交叉连接其实就是两个表之间按连接的基本概念,进行连接之后所得到的“所有数据”,而对此无任何“筛选”的结果——筛选就是指连接条件。即:交叉连接就是没有条件的“全部连接”——有称为 笛卡尔积。交叉连接通常没有实用价值,因为这样连接之后 数据,每一行数据的意义就可能会“丢失”。 形式:from 表1 【cross】 join 表2 ;或:from 表1 , 表2 ; 内连接形式:from 表1 【inner】 join 表2 on 表1.字段1 = 表2.字段2;含义:取得一个“交叉连接”的结果中,满足所设定的连接条件(就是on后面的条件)的那些行的数据; 交叉连接往往会有“无意义数据”,如下:
4.看内连接的结果:
5.结果为:
6.左(外)连接形式:from 表1 left 【outer】 join 表2 on 表1.字段1 = 表2.字段2;含义:是将两个表的满足连接条件的所有数据(即内连接数据),再加上那些“左边”表中,不能满足连接条件的数据的总和。对于左边表中不能满足条件的数据,则,在结果中的右边部分,都补上“null”(空值);
7.他们内连接的结果为:
8.则他们左连接:
10.全(外)连接from 表1 full 【outer】 join 表2 on 表1.字段1 = 表2.字段2;含义:就是左连接和右连接的结果之和——注意:没有重复的内连接的那些行。其效果类似这样: