外连接区分主从表,从表中没有的数据将以null填充
内连接不分主从表,只要条件符合就显示
其使用你将在日后的使用中慢慢发现,具体使用那种连接时根据需求来的
如:
图书管理系统中,需要你统计每本图书的租出情况,其附带条件是要求没被租出过的图书也要显示出来。那么这就需要外连接了,如此在连接查询中没被租出过的图书就会以null填充
若没有附带条件,你则可以使用内连接
在SQL标准中规划的(join)联结大致分为下面四种:
1.内联结:将两个表中存在联结关系的字段符合联结关系的那些记录形成记录集的联结。
2.外联结:分为外左联结和外右联结。左联结A、B表的意思就是将表A中的全部记录和表B中联结的字段与表A的联结字段符合联结条件的那些记录形成的记录集的联结,这里注意的是最后出来的记录集会包括表A的全部记录。右联结A、B表的结果和左联结B、A的结果是一样的,也就是说: Sql代码
- select A.name B.name From A Left join B On A.id=B.id
select A.name B.name From A Left join B On A.id=B.id 和 Sql代码
- select A.name B.name From B Right join A on B.id=A.id
select A.name B.name From B Right join A on B.id=A.id 执行后的结果是一样的。
3.全联结:将两个表中存在联结关系的字段的所有记录取出形成记录集的联结(这个不需要记忆,只要是查询中提到了的表的字段都会取出,无论是否符合联结条件,因此意义不大)。
4.无联结:不用解释了吧,就是没有使用联结功能呗,也有自联结的说法。这里我有个比较简便的记忆方法,内外联结的区别是内联结将去除所有不符合条件的记录,而外联结则保留其中部分。外左联结与外右联结的区别在于如果用A左联结B则A中所有记录都会保留在结果中,此时B中只有符合联结条件的记录,而右联结相反,这样也就不会混淆了。其实大家回忆高等教育出版社出版的《数据库系统概论》书中讲到关系代数那章(就是将笛卡儿积和投影那章)的内容,相信不难理解这些联结功能的内涵