
一、表的基本联结
创建表的基本联结,需要遵守的基本原则:
FROM子句中列出所有联结的表的表名
WHERE子句中定义联结条件
联结条件由每个表中要用于联结的列和比较运算符组成
如:teacher.cno=course.cno
当列名为多个表共有时,要指明列的所在表
1.查询每个教师的姓名、所在系、所教课程名及该课程的考试时间。
2.查询每个学生的姓名、所在系、所选修课程名称、该课程的考试时间、考试成绩和授课教师姓名。
二、采用join关键字建立联结
语法格式:
SELECT ……
FROM first_table join_type second_table
ON(join_condition)
WHERE ……..
1、内联结(inner join)
(1).从STUDENT1表和TEACHER表中查询学生姓名、所在系、所修的所有课程的课程号及开课教师姓名。
(2).查询学生修的非本系教师开设的课程信息,包括学生的学号、姓名、所在系、课程号、成绩、以及开课教师的姓名。
2、外联结(outer join)
【例】分别左联结、右联结和完全联结STUDENT1和COURSE1表,查询所有同学的学号、姓名、课程号、课程名称、考试时间和成绩。查看结果的区别。
3、交叉联结(cross join)
【例】交叉联结STUDENT1和COURSE1表,查询所有同学的学号、姓名、课程号、课程名称、考试时间和成绩。
在此基础上添加where子句,使其和两个表内联接效果相同?
4、自联结
【例】查询存在不及格课程的学生的姓名、所在系、所有的课程及成绩信息。
上机:联结查询综合练习题
●student(sno,sname,sex,age)
●course(cno,cname,credit)
●s_c(sno,cno,grade)
1.查询学生的学号、姓名、课程号和相应的成绩。
2.查询男学生成绩在60分以上的学生的学号、姓名、课程号、成绩。
3.查询所有学生的基本信息和选课情况,包括没有选课的学生。
4.查询同时选修C2和C3课程的学生的学号。
5.查看每个学生所选的课程及所得分数。
(要求显示学生的姓名、课程名称和成绩,包括没选课的学生)
6.查看每门课程的最高分数是多少。
(要求显示课程名称和最高成绩)
7.检索显示男生中平均成绩前两名的学生的姓名和平均成绩(agrade)并按成绩降序排序。
8.查询男生的学号、姓名、课程名称和成绩,并按成绩从高到低排序。
