〇、表之间的连接查询分为内连和外连
1、内连包括:内连(INNER JOIN)、自身连接、交叉连接(CROSS JOIN);
2、外连包括:左连(LEFT JOIN)、右连(RIGHT JOIN)、全连接(FULL JOIN);
3、对于全连接、交叉连接暂时按上述类别划分,如有错误请指出。
一、内连
1、内连是最常用的表之间的连接查询;
2、语法:SELECT 列名1,列名2 FROM 表名1 INNER JOIN 表名2 ON 条件表达式;
3、INNER关键字可以省略;
4、内连接只返回两个表中连结字段相等的行
二、左连
1、语法:SELECT 列名1,列名2 FROM 表名1 LEFT JOIN 表名2 ON 条件表达式;
2、左连接返回包括左表中的所有记录和右表中连结字段相等的记录
三、右连
1、语法:SELECT 列名1,列名2 FROM 表名1 RIGHT JOIN 表名2 ON 条件表达式;
2、右连接返回包括右表中的所有记录和左表中连结字段相等的记录
四、交叉连接
1、语法:SELECT 列名1,列名2 FROM 表名1 CROSS JOIN 表名2 ;(注意:交叉连接不能有条件表达式)
2、在内连接的基础上,还包含两个表中所有不符合条件的数据行,并在其中的左表、和右表列填写NULL,即两个表的笛卡尔积
五、全连接
1、语法:SELECT 列名1,列名2 FROM 表名1 FULL JOIN 表名2 ON 条件表达式;
2、在内连接的基础上,还包含两个表中所有不符合条件的数据行,并在其中的左表、和右表列填写NULL
六、自身连接
1、语法:SELECT 列名1,列名2 FROM 表名1 JOIN 表名1 ON 条件表达式;
2、自身连接是指同一个表自己与自己进行连接。这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据。
示例:
表A:
aID aNum
1 a1
2 a2
3 a3
4 a4
表B:
bID bName
1 b1
2 b2
3 b3
7 b7
join:select * from A join B on A.aID=B.bID
结果如下:
aID aNum bID bName
1 a1 1 b1
2 a2 2 b2
3 a3 3 b3
left join:select * from A left join B on A.aID=B.bID
结果如下:
aID aNum bID bName
1 a1 1 b1
2 a2 2 b2
3 a3 3 b3
4 a4 null null
right join:select * from A right join B on A.aID=B.bID
结果如下:
aID aNum bID bName
1 a1 1 b1
2 a2 2 b2
3 a3 3 b3
null null 7 b7
至于交叉连接、全连接、自身连接就不再举例,可以自己试试。