1. JOIN ON
8) 'C413'에 등록한 학생의 이름, 학과, 성적을 검색
여러개의 테이블을 참조할 때가 생기기마련이다.
테이블 1 JOIN 테이블 2 ON 조건식
ON 을 쓰지 않으면 테이블 1의 데이터와 2의 데이터가 1:n으로 모두 출력되게 된다.
조건 n 개의 테이블을 쓰면 조건식은 n-1개 사용해야한다.
복수의 테이블을 사용할 때 JOIN조건(ON)을 주지않으면 교차곱(Cartesian Product)의 결과를 얻게된다.
Select sname,sdept,grade
from Student JOIN Enrol on Student.sno=Enrol.sno
where cno='C413';
복수테이블의 양쪽에 모두 sno라는 칼럼이 있기때문에 sno를 출력하고 싶으면 Student.sno 또는 Enrol.sno를 명시해주어야한다.
Student.sno, Enrol.sno는 너무 길기때문에 별칭을 사용할 수도 있다.
from Student s JOIN Enrol e ON s.sno=e.sno
9) '컴퓨터' 학과 학생들이 수강신청한 자료의 학번, 이름, 과목번호, 기말성적을 학번 기말성적 높은순으로 출력하라
Select 에는 출력할 것 (빨간 텍스트)
From 에는 출력할 것들이 들어있는 테이블(학번 이름 과목번호 기말성적을 모두 표현하려면 두 테이블이 필요하다)
Where에는 조건 (초록 텍스트)
Order by 에는 정렬할 것 (파란 텍스트)
Select s.sno, sname, cno, final
From Student s JOIN Enrol e ON s.sno=e.sno
Where sdept='컴퓨터'
Order by s.sno, final desc;
만약 FROM 에 포함될것이 세개라면 1:n인 관계만 가능하다. (JOIN 조건을 줄때 n을 포함한 관계를 주어야한다.)
Student - Enrol = 1 : n
Enrol - Course = n : 1
from Student s JOIN Enrol e ON s.sno=e.sno JOIN Course c c.cno=e.cno
from Course c JOIN Enrol e ON c.cno=e.cno JOIN Student s s.sno=s.sno