查询每个学生的姓名、课程号和成绩。
USE teaching
SELECT student.sname, sc.cno, sc.score
FROM student INNER JOIN sc ON student.sno=sc.sno
也可以利用下面的语句来实现:
SELECT student.sname, sc.cno, sc.score
FROM student,sc
WHERE student.sno=sc.sno
注意:当从多个表中查询的列名相同时,列名前必须加表名。
inner join例子2:
查询“计算机”专业的学生所选课程的平均分。
SELECT b.cno, avg(b.score) as 平均分
FROM student a INNER JOIN sc b
ON a.sno=b.sno
where a.specialty='计算机'
GROUP BY b.cno
2. 自连接【inner join】(即我们常用 ——>where+列相等)
连接操作也可以在同一张表内进行自身连接,即将同一个表的不同行连接起来。
自连接必须为表指定两个别名,使之在逻辑上成为两张表。
从“teaching”库中查询同名学生的信息。
SELECT * FROM student a INNER JOIN student b ON a.sname=b.sname
AND a.sno<>b.sno
在“teaching”库中查询每个学生及其选修课程的成绩情况(含未选课的学生信息)。
SELECT student.*,sc.cno,sc.score
FROM student LEFT JOIN sc
ON student.sno=sc.sno
查询所有男生的选课信息,包括没选课的男生。
SELECT student.*,sc.cno,sc.score
FROM student LEFT JOIN sc
ON student.sno=sc.sno
where ssex='男'
全连接 full join例子:
查询每个学生及其选修课程的情况(含未选课的学生信息及未被选修的课程信息)。
SELECT course.*,sc.score,student.sname, student.sno
FROM course FULL JOIN sc ON course.cno=sc.cno
FULL JOIN student ON student.sno=sc.sno