查詢每個學生的姓名、課程号和成績。
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