1. 交叉连接(笛卡尔积)Cross join
交叉连接(Cross join),又称“笛卡尔连接(Cartesian join)” 或“叉乘(Product)”,它是所有类型的内连接的基础。如果把表视为行记录的集合,那么交叉连接即返回这两个集合的卡迪尔积,返回到结果集合中的数据行数等于第一张表符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
语法:select*from line CROSS JOIN vehicle 等价于:select*from line,vehicle
2. 内连接
内连接是应用程序中非常常见的连接操作,它一般都是默认的连接类型。内连接基于连接谓词,它将两张表(如A和B)的列组合在一起,产生新的结果表。
语法:SELECT fieldlist FROM table1 [INNER] JOIN table2 ON table.column1=table2.column2 [where condition]
注意:连接依据的列可能包含null值,null 值不与任何值匹配(甚至和它本身)
3. 自然连接
自然连接(Natural Join)是一种特殊的内连接,它要求相连接的两张表的连接依据必须是相同的字段(字段名相同,字段属性相同)。
语法:SELECT fieldlist FROM table1 NATURAL JOIN table2[where condition]
4. 多表查询
4.1 多表连接查询方法
如果查询的信息来源于多张表,则可通过两两连接的方式建立多表连接查询。
语法:SELECT fieldist FROM table1 JOIN table2 ON table1.coumn1=table2.column2_1JOIN table3 on table2.column2_2=table3.column3[where condition]
4.2 简单多表连接查询
如果在FROM子句中,直接列出所有要连接的表,然后在WHERE子句中指定连接条件,此为简单多表查询,它与内连接相同。
两表连接查询
语法:SELECT fieldlist FROM table1,table2 WHERE table1.column1=table2.column2[and 其他条件]
三表连接查询
语法:SELECT fieldlist FROM table1,table2,table3 where table1.column1=table2.column2_1 and table2.column2_2=table3.column3[and 其他条件]