SQL21日自学通笔记六:表的联合

表的联合包含:执行外部联合、执行内部联合、执行左联合、执行右联合、进行等值联合、进行不等值联合

1. 两表联合。比如 Select * From table1,table2;如果table1有14行记录,table2有6行,那么两表联合记录有14*6=84
2. 等值联合。比如 Select * From table1,table2 Where table1.name = table2.name;
3. 可以使用WHERE子句对其结果进行限制。比如:Select * From table1,table2 where table1.name = table2.name and table1.partNum = 76;
4. 联合表没有使用WHERE子句,执行的其实是笛卡尔联合(笛卡尔叉积)这种联合会对FROM中指出的表进行完全的组合,如果每个表有200个记录的话,那么所得到的结果有200*200=40000行,非常大,所以除非确实是想对表中的所有记录进行联合,否则一定要记住使用WHERE子句。
5. 联合中使用表以及列的别名,使SQL语句更具有可读性。
6. 当三个表或以上表进行联合的时候,通常,根据给定的条件返回行最少的表会作为驱动表(也就是基表)。在查询中除基表以为的其他表通常是向基表联合以便更有效地获得数据。 比如:select a.name,b.caddress,c.price From table1 a,table2 b,table3 c where a.partnum = b.partnum and a.name = c.name; table1表被使用了两次,其它的表只使用了一次。所以table1作为基表,放在前边。
7. 联合虽然使用Where会过滤掉一些记录,但selecet仍然会把所有的记录全部返回,比如20*20=400,Where在这400条记录中过滤掉不满足Where条件的记录。所以联合性能不高。
8. 不等值联合。在WHERE子句中使用除了等号以外的其它比较运算符。
9. 外部联合和内部联合。内部联合是指与个表内的行与本表内的数据相互进行联合,产生的结果行数取决于参加联合的行数,也就是说内部联合的行数取决于WHERE子句的结果。外部联合则是表间的联合,如上边table1,table2的联合。内部联合例子:Select a.name,b.pprice From table1 a JOIN table2 b On b.partnum =54; 表示table1表中的所有行都与table2表中partnum=54的行进行组合,也就是说组合以前,table2已经有了一次过滤。
10. 内部联合使用JOIN ON。
11. 外部右联合Right outer join。不满足条件时,右边表集合的记录补以NULL。
12. 左联合Left outer join。与内部联合的结果一样。
13. 在一些解析器中使用+号来代替外部联合,+号的意思就是显示我的全部内容包含不匹配的内容。
14. 表的自我联合。

 

相关内容:

SQL21日自学通笔记一:SQL标准

SQL21日自学通笔记二:查询语句Select

SQL21日自学通笔记三:运算符

SQL21日自学通笔记四:函数

SQL21日自学通笔记五:SQL中的子句

SQL21日自学通笔记六:表的联合

SQL21日自学通笔记七:子查询内嵌的SQL子句

你可能感兴趣的:(sql,C++,c,C#)