如果一个查询同时涉及两个以上的表,则称之为连接查询,连接查询是关系数据库中最主要的查询,主要包括等值连接查询、非等值连接查询、自身连接查询、外连接查询和复合条件连接查询。
这篇博文我们来学习等值与非等值连接查询。
一个用户查询请求涉及到多个表的时候,连接两个表的条件为=时,就是等值连接查询;其他的运算符连接的就是非等值查询。
注意:连接条件中的各连接字段类型必须是可比的,但不必是相同的,整型和实型是可比的,但是字符型和整型就不可比。
例如:查询每个学生及选修课程的情况。
原始两个表格如下:
命令如下:
其中select子句和where子句中的属性名前都加上了表名做为前缀,这是为了避免混淆。如果属性名在参加连接的各表中是唯一的,则可以省略表名前缀。
连接运算中有两个特殊情况:
卡氏积连接和自然连接。
卡氏积连接是两张表的交叉乘积,就是说其中一个表中的每一个元组都要与另一表中的每一个元组做拼接,然后结果就会很多。
自然连接是按照等值连接,并且展示的结果中不包含重复的属性列,保留了所有不重复的属性列,则称之为自然连接。
下面就是一个自然连接的例子。