数据库学习笔记5
1、内联接查询
内联接查询是最典型、最常用的联接查询,它是根据表中共同的列来进行匹配。特别是两个表存在主外键关系时通常会使用内联接查询。
内联接查询通常会使用 “=” 或 “<>” 等比较算符来判断两列数据值是否相等。
内联接使用inner join … on关键字 或 where子句这两种方式来进行表之间的关联。
1.1 在where子句指定联接条件
例:(查询学生姓名(学生表中)和成绩(成绩表中))
select student.stuName,score.subject,score.stuScore from student,score
where student.stuNo = score.stuNo;
1.2 在from子句中使用inner join…on
使用join …on子句来实现上面SQL语句:
select s.stuName,c.score
from student as s
inner join score as c on(s.stuNo = c.stuNo);
上面的内联接查询中:
- inner join 用来联接两个表。
- inner 可以省略。
- on 用来设置条件。
- as 指定表的“别名”。如果查询的列名在用到的两个或多个表中不重复,则对这一列的引用不必用表名来限定(如上SQL语句的s.stuName就可以直接写成stuName)。
2、外联接查询
在以上语句中内联接串的结果是从两个或两个以上表的组合中挑选出符合联接条件的数据,如果数据无法满足联接条件则将其忽略。在内联接查询中,参与联接的表的地位是平等的。
在外联接查询中参与联接的表有主从之分,以主表的每行数据匹配从表的数据列,将符合联接条件的数据直接返回到结果集中,对那些不符合联接条件的列将被填上null值(空值)后再返回到结果集中。
2.1 左外联接查询
左外联接查询的结果集包括 left join 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。若左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列均为空值。
左外联接查询使用left join … on 或 left outer join … on 关键字来进行表之间的关联。例如,要统计所有学生的考试情况,要求显示所有参加考试学生的每次考试分