当前位置: 首页 > 科技观察

图为几种MySQL的join连接

时间:2023-03-13 18:54:29 科技观察

MySQL的联表查询可以说是使用MySQL时必须要面对的问题,而在实际工作中使用比较频繁的查询大概就是联表查询了。虽然经常使用联表查询,但是你真的了解其中的机制吗?带着这个问题,让我们进入本文的主题——举例说明MySQL的几种join连接。基本概念连接(join)是将多个表中的字段按照匹配条件进行水平拼接。左表:位于join语法左边的表称为左表。右表:join右边的表在语法上称为右表。join连接图解1.交叉连接(crossjoin)是用左表的每一行数据去匹配右表的每一行数据,都匹配成功才算成功。最终结果集是笛卡尔积。语法:select*fromlefttablecrossjoinrighttable;例子:2.内连接(innerjoin)用左表中的每条记录来匹配右表中的所有记录。根据匹配条件,如果为真,则保留整条记录Record,如果为假,则丢弃。用维恩图表示,如下:语法:select*fromlefttable[inner]joinrighttable[oncondition]例子:3.左连接(leftjoin)以左表为主表,分别使用主表记录中的条目,匹配从表(右表)中的所有记录,根据匹配条件,如果匹配成功,则将主表记录中的字段与从表记录中的字段进行拼接成一条完整的记录,放入结果集中;如果不成功,则将副表记录中的所有字段置为null,保留主表中的字段。用维恩图表示,如下:语法:select*fromlefttableleftjoinrighttable[oncondition]例子:4、右连接(rightjoin)以右表为主表,使用中的每条记录主表要匹配从表中的所有记录,根据匹配条件,如果成功,将主表记录中的字段和从表记录中的记录拼接成一条完整的记录,放入进入结果集。如果不成功,则将副表记录中的所有字段置为null,保留主表中的字段。用维恩图表示,如下:语法:select*fromlefttablerightjoinrighttable[oncondition]例:5.自然连接(naturaljoin)对两个表进行连接查询时,系统会盲目使用字段与匹配条件同名。同名的字段会被合并,匹配的字段会放在结果集的前面。自然连接分为左自连接和右自然连接。直接使用naturaljoin连接主表和从表,相当于innerjoin。使用naturalleftjoin时,相当于leftjoin。使用naturalrightjoin时,相当于rightjoin。语法:select*fromlefttablenaturaljoinrighttable例子:leftnaturaljoin(自然左连接)语法:select*fromlefttablenaturalleftjoin右表例子:rightnaturaljoin(自然右连接)语法:select*fromlefttable自然右联接右表示例: