OceanBase数据库支持所有的联接类型,包括INNERJOIN,OUTERJOIN,SEMI-JOIN和ANTI-JOIN。其中SEMI-JOIN和ANTI-JOIN都是通过子查询改写得到,SQL本身并没有表述SEMI-JOIN和ANTI-JOIN的语法。OceanBase数据库的所有联接算法(NESTEDLOOPJOIN,HASHJOIN,MERGEJOIN)目前都支持多种联接类型。
1、INNERJOIN
INNERJOIN(内联接)是数据库中最基本的联接操作。内联接基于联接谓词将两张表(如A和B)的列组合在一起,产生新的结果表。查询会将A表的每一行和B表的每一行进行比较,并找出满足联接谓词的组合。当联接谓词被满足,A和B中匹配的行会按列组合(并排组合)成结果集中的一行。联接产生的结果集,可以定义为首先对两张表做笛卡尔积(交叉连接)—将A中的每一行和B中的每一行组合,然后返回满足连接谓词的记录。
2、OUTERJOIN
OUTERJOIN(外联接)并不要求联接的两表的每一条记录在对方表中都一条匹配的记录。要保留所有记录(甚至这条记录没有匹配的记录也要保留)的表称为保留表。外联接可依据联接表保留左表,右表或全部表的行而进一步分为左外联接,右外联接和全联接。其中左外联接中左表的一行未在右表中找到的时候,就在右表自动填充NULL。右外联接中右表的一行未在左表中找到的时候,就在左表自动填充NULL。全联接就是左表或者右表找不匹配行的时候都会自动填充。
3、SEMI-JOIN
当A表和B表进行SEMI-JOIN的时候,它只返回A中所有能够在B中找到匹配的行。
4、ANTI-JOIN
当A表和B表进行ANTI-JOIN的时候,它只返回A中所有不能在B中找到匹配的行。
转载请注明:http://www.0431gb208.com/sjszlff/3582.html