데이터베이스

[SQL] SQL 조인 순서정리 (+예제)

화이트해커 Luna 🌙 2022. 11. 1. 17:37
728x90
반응형

SQL 조인 순서


step 1. 지문에서 검색 대상과 조건을 구분한다.  
 - 이를 통해 일단 SELECT 절, WHERE 절, ORDER BY 절을 구성한다.
 - SELECT 절은 step 5에서 작성자의 의도에 따라 추가될 수 있다. 
step 2. SELECT 절과 WHERE 절의 내용에 따라 정보를 검색할 테이블을 찾는다. 
step 3. 테이블간의 관계를 확인한다.
 - 관계를 확인하는 단계에서 테이블이 추가될 수 있다. 
step 4. 조인 조건을 기술한다. 
step 5. 전체 문장을 다듬는다. 

 


예제)   화학과 학생의 일반화학 기말고사 점수를 검색한다.

 

step 1. 지문에서 검색 대상과 조건을 찾는다
지문에서 검색 컬럼과 조건을 찾는다

- 검색 대상 
  .기말 고사 점수 : result 

- 조건 
  .화학과 학생 : major='화학' 
  .일반 화학 과목 : cname='일반 화학'
SELECT result
FROM
WHERE major = '화학' 
AND cname = '일반화학'

 

step 2. SELECT 절과 WHERE 절의 내용에 따라 정보를 검색할 테이블을 찾는다.
SELECT 절과 WHERE 절에 사용된 컬럼이 포함된 테이블을 FROM 절에 기술한다.

- result : score 테이블
- major : student 테이블
- cname : course 테이블
SELECT result
FROM stdent, course, score
WHERE major = '화학' 
AND cname = '일반화학'

 

step 3. 테이블간의 관계를 확인한다. 
student, course, score 테이블의 관계가 끊어지지 
않도록 관계를 확인한다.

* 테이블간의 관계가 끊어지는 경우 중간에 새로운 테이블을 삽입해서 관계가 끊어지지 않도록 조치한다.
SELECT result
FROM
WHERE major = '화학' 
AND cname = '일반화학'

 

step 4. 조인 조건을 기술한다.
FROM절에 쓰인 테이블 간에 조인 조건을 기술한다. SELECT result
FROM student, course, score
WHERE student.sno=score.sno
AND course.cno=score.cno
AND major = '화학' 
AND cname = '일반화학'

 

step 5. 전체 문장을 다듬는다.
step 4. 까지 조인 문장이 완성 되었으나 SELECT 문을 읽을 때 해석을 돕기 위해 새로운 컬럼을 SELECT 절에 추가하거나, 별명을 지정하거나 등의 부가적인 요소들을 점검한다. 추가된 내용 만들어진 SELECT 문의 논리적인 구성에 영향을 끼치지 않아야 한다. 
가능한 결과 값만으로 지문의 요구 조건을 표현 할 수 있어야 한다. 예를 들어 result 만을 검색하면 누구의 성적인지 확인이 어렵다.
SELECT major, cname, s.sno, sname, result
FROM student s, course c, score r
WHERE s.sno=r.sno 
AND c.cno=r.cno
AND major = '화학'
AND cname = '일반화학'

 

 

실행화면

 

728x90
반응형