当需要查询的字段在两个或多个不同的表时,这时候就需要多表连接了,也就是多表查询,在多表查询中,为了避免笛卡尔积的产生,所以要加入两表的连接条件,而连接条件,又分很多种,如:等值连接,不等值连接,左连接,右连接,自连接,自然连接,满外连接等,下面就来一个一个的介绍这几种常见的连接
等值连接:1、)拿两个表之间相同的字段进行连接,如:table.field = table2.field (在等值连接后,table表和table2表之间,能匹配的数据会匹配并显示出来,不能匹配的数据不会显示出来),
例图:
效果:
2、)拿两个表之间不相同的字段进行连接,如:table.field = table2.field2
例图:
效果:
上述例子都可以看出,等值连接,其实就是把两个字段里的相同数据连接在一起。
不等值连接:不等值连接恰好与等值连接相反,把两个字段里的不相等的数据连接在一起,但这种连接比较少用,因为在庞大的笛卡尔积里,拿出不相等的数据,那数据确实是太多了,当然除了不等号外,还可以使用大于号或小于号。
左、右连接:左连接就以左表为主表,右连接就以右表为主表,两表相连,主表所有的数据都会显示出来,而副表只有跟主表能匹配上的数据会显示出来,不匹配的会显示为NULL,所以在使用左、右连接的时候,就要注意分清主、副表了。
例图:
左、右连接有两种写法:
1、一种是Oracle的写法:左连接 table.field = table2.field2(+)
右连接 table.field(+)= table2.field2
2、另一种是SQL 1999的写法:左连接 table left join table2
on table.field = table2.field2
右连接 table right join table2
on table.field = table2.field2
自连接:字面意思就能看出来,就是自己连接自己的意思。若同一张表里,需要把里面的两个不同的字段的数据进行比较时,这时候就需要自连接了,如:table.field = table.field2
自然连接:用了自然连接,可以不使用连接条件,它会自己把两表中,所有相同的字段名字进行等值连接,如:table NATURAL JOIN table2,但如果两字段的类型不同,则会产生错误。
满外连接:满外连接就是把连接的两个表的所有数据都显示出来,但又不会有笛卡尔积的产生,如:table FULL OUTER JOIN table2
例图: