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 



    ' > 데이터베이스' 카테고리의 다른 글

    2. 데이터베이스  (0) 2017.05.14
    1. 데이터베이스  (0) 2017.05.14
    4. 데이터베이스  (0) 2017.04.09
    3. 데이터베이스  (0) 2017.04.02
    2. 데이터베이스  (1) 2017.03.18
    Posted by Config