SQL之连接查询
这几天忙着笔试、面试,遇到了好几个关于数据库的试题,当然只是简单的多表查询。我第一时间都是选择select...from...where...group by...having...这个结构去写的。但发现它给的选项中还包含了join,平时用数据库不是很频繁,只记得join是把多个表上相同字段的记录连接生成新记录,且相同记录只出现一次。为了彻底弄清楚这个问题,特意去复习了一下《数据库系统概论》。
一、join的分类
SQL中join分为两类:普通连接(内连接)和外连接。内外连接的区别体现在对没有匹配到字段的记录的处理方式上,内连接只生产匹配记录对于的新记录,对于没有匹配的记录忽略。外连接分为左外连接,右外连接和全外连接,不同的子类外连接在处理不同匹配项上不同。
二、内连接
join:生成参与join的两个表的笛卡尔积。
natural join:两个表中相同列名的值相等构成的新记录。
natural join using:只是用指定相同属性连接生成新表
natural join on:只要满足on后谓词为真的记录都会被拼凑在新表中。
三、外连接
natural left outer join:natural join的结果加上第一个表中未匹配的记录后接null生成的新记录。
natural right outerjoin:natural join的结果加上null后接第二个表中未命中的记录生成的新记录。后
natural full outer join:natural join的结果加上第一个表中未匹配的记录后接null生成的新记录加上null后接第二个表中未命中的记录。