题目:只有满足连接条件的记录才包含在查询结果中,这种连接为()
A、左连接
B、右连接
C、内部连接
D、完全连接
结果:C
解释:
首先选项中的左连接是左外连接,右连接是右外连接,内部连接是内连接,其实这道题就是考核你对“内连接、左外连接、右外连接、完全连接、交叉连接”的理解,上面虽然没有交叉连接,但是这个概念有的时候也会出现,所以在这个地方也做一点解释。
内连接:
用inner join连接两个表,其中inner可以省略,分为等值连接(连接条件中的值相等)、非等值连接(连接条件中通过非等于号得出结果)、自连接(连接的两个表是同一个),只有满足连接条件的记录才会被包含在查询结果中
左外连接:
用left outer join连接两个表,其中outer可以省略,一般写成left join,左表中的数据会被完全匹配
,即使右表中没有数据和它对应,如果是这种情况,就用null补充右表中的数据
右外连接:
用right outer join连接两个表,其中outer可以省略,一般写成right join,右表中的数据会被完全匹配
,即使左表中没有数据和它对应,如果是这种情况,就用null补充左表中的数据
完全连接:
用full join连接两个表,两个表中的数据都会被完全匹配出来
,如果另外一个表中没有数据与它对应,那就显示null进行匹配,MySQL数据库不支持这种写法,所以就别用MySQL数据库去验证了
交叉连接:
百度百科上这样解释:“交叉连接不带WHERE子句,它返回被连接的两个表所有数据行的笛卡尔积,返回结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。”,交叉连接用cross join连接两个表,例如select * from A cross join B,其实这种写法相当于select * from A,B