在MySQL中,内连接(INNER JOIN)用于返回两个或多个表中的匹配行。内连接只返回两个表中满足连接条件的行。
1、内连接的语法如下:
SELECT 列名
FROM 表1
INNER JOIN 表2
ON 表1.列名 = 表2.列名;
select e.name,d.name from emp e inner join dept d on e.dept_id = d.id;
其中,表1
和表2
是要进行连接的两个表,列名
是要返回的列名,ON
关键字后面是连接条件。
内连接查询使用INNER JOIN
关键字来连接两个或多个表。连接条件通常是两个表之间的共同字段或相互关联的字段。使用内连接查询时,只有同时满足连接条件的行才会被返回。
内连接查询的工作原理是,首先对两个表进行笛卡尔积,即将两个表中的每一行都与另一个表中的每一行进行组合。然后,根据连接条件筛选出满足条件的行,以生成最终结果。
内连接查询可以用于多个表之间的联接,可以通过多个INNER JOIN
子句连接更多的表。在连接多个表时,每个表之间都需要具有共同的连接条件。
左连接查询使用LEFT JOIN
语句来检索两个或多个表中的数据。左连接检索左边表中的所有行,同时根据指定的条件将右边表中的匹配行关联起来。
2、左连接语法如下:
SELECT 列名
FROM 左表
LEFT JOIN 右表
ON 左表.列名 = 右表.列名;
select e.*,d.name from emp e left join dept d on e.dept_id = d.id;
其中,左表
和右表
是要连接的表,ON
后面是连接条件。
左连接查询返回左边表中的所有行,不管右边表中是否有匹配行。如果右边表中没有匹配行,就返回NULL
值。左连接查询常用于获取包含其他表中相关数据的结果集。
右连接查询使用RIGHT JOIN
语句来检索两个或多个表中的数据。右连接检索右边表中的所有行,并根据指定的条件将左边表中的匹配行关联起来。
3、右连接语法如下:
SELECT 列名
FROM 左表
RIGHT JOIN 右表
ON 左表.列名 = 右表.列名;
select d.*,e.* from emp e right join dept d on e.dept_id = d.id;
其中,左表
和右表
是要连接的表,ON
后面是连接条件。右连接查询返回右边表中的所有行,不管左边表中是否有匹配行。如果左边表中没有匹配行,就返回NULL
值。右连接查询常用于获取包含某个表中所有记录的结果集,并且关联其他表中的匹配数据。
自连接是指在同一张表中进行连接查询的操作。自连接允许我们将表中的数据与表中的其他行进行比较和关联。自连接通常用于解决需要比较同一表中的不同行之间的关系的问题,例如在只有一张表中存储了员工和他们的经理的信息时,我们可能需要查询每个员工的名字以及他们的经理的名字。要进行自连接查询,我们需要给表中的不同行指定不同的别名,以区分它们。然后,我们可以使用这些别名来指定连接条件。
4、自连接语法如下:
/*表emp分别起别名a 和 b*/
select a.name,b.name from emp a,emp b where a.managerid=b.id;
select a.name '员工',b.name '领导' from emp a left join emp b on a.managerid=b.id;