본문 바로가기

이론/DB

[DB][SQL] SQL의 셀프조인

인트로 
안녕하세요. 오늘은 조인과 셀프조인의 정의와 이들의 SQL구문을 알아보겠습니다.

제가 대학교 '데이터베이스' 강의를 수강할 때도, 처음 머릿속에 SQL 구문과 그 결과를 집어넣는 일은 쉽지 않았습니다. 
SQL은 많이 짜보고 그 결과를 확인해보아야 실력이 느는 것 같습니다. 

 

[ 목차 ] 

1. 조인

- 테이블 구조 (학생 , 등록) 

- 조인의 정의, SQL 예시 
2) 셀프조인 정의 및 예시

 

1. 조인

1-1)  테이블 구조

- 학생 테이블 (STUDENT)
학생테이블은,  각각 Sno(학번), Sname(이름), Syear(학년), Department(학과)로 구성되어있습니다.

학생 테이블 구조

- 등록테이블 (ENROLL)

등록테이블은, 각각 cno(학과), Sno(학생이름), Grade(학점), Mid(중간고사점수), Final(기말고사 점수)로 구성되어있습니다.

 

1-2) 조인의 정의
조인이란, 2개의 테이블에 대해 연관된 튜플들을 결합하여 하나의 릴레이션을 반환하는 것입니다. 
JOIN은 크게 INNER JOIN과 OUTER JOIN으로 구분됩니다. 

 

1-3) JOIN의 SQL 예시 
i) DB를 수강하는 학생의 이름, 성적을 구하여라.

select s.sname , e.grade from student s , enrol e where s.sno = e.eno  and e.cno = 'DB'

ⅱ) '데이터 베이스'라는 이름의 과목을 수강하는 학생의 이름, 성적을 구하여라

select s.sname, e.grade from student s, enrol e, course c where s.sno= e.sno and c.cno = e.cno and c.cname = '데이터베이스';

 

2. 셀프 조인
2-1) 셀프 조인의 정의
셀프 조인이란, 같은 테이블에서 2개의 속성을 연결하여 EQUI JOIN을 하는 JOIN의 방법입니다. 즉, 자기 자신의 테이블에 조인하는 것입니다. 
테이블 구조 :  employee (eno, ename, dept,  manager_id) 
여기서 eno은 기본키, manager_id 는 외래키입니다. 외래키가 기본키를 가리키고 있다는 것은 즉, 셀프조인입니다.
 
2-2) 셀프조인의 예시
i ) 상사의 아이디가 100번인 직원들을 검색하라.  

select * from employee where manager_id = 100;

ⅱ) 상사의 이름이 마이크인 직원들을 검색하라.(셀프조인)

select * from emplyee e , employee m where e.manager_id(외래키) == m.eno(기본키) and m.name == 'Mike' ;