티스토리 뷰

190403


SQL의 가장 핵심이라고 볼 수 있는 조인(join)입니다.


* SQL에서 --은 주석처리입니다.

* 주석처리 행은 설명,--가 없는 행은 소스라고 보시면 되겠습니다.


<조인 JOIN>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
-- 조인(Join)
-- 테이블의 조인
    -- 조회할 데이터가 2개 이상의 테이블을 사용해야지만 획득되는 경우 테이블의 조인을 사용한다.
    -- 조인 방법
    -- from절에 데이터 획득에 필요한 테이블을 나열하기만 하면 된다.
    -- 조인조건을 제공해야 된다.(n개의 테이블을 조인하면 n-1개의 조인조건이 있어야 한다.)
    -- 조인조건은 조인된 행들 중에서 의미있게 연결된 행만 선택하게 한다.
    
    -- select *
    -- from EMPLOYEES, DEPARTMENTS
    -- where employees.department_id = department.department_id;
 
-- 사원의 아이디, 사원의 이름, 부서아이디, 부서이름으로 조회하기
select e.employee_id,
       e.first_name,
       e.department_id,
       d.department_id
from EMPLOYEES e, DEPARTMENTS d        -- 조인
where e.DEPARTMENT_ID = d.DEPARTMENT_ID;    -- 조인조건
 
-- 사원의 아이디, 사원이름, 직종아이디, 급여, 직종제목, 직종최저급여, 직종최고급여 조회하기
-- {        employee                        } {            jobs 테이블                    }
select e.employee_id,
       e.first_name,
       e.JOB_ID,
       e.salary,
       j.JOB_TITLE,
       j.min_salary,
       j.max_salary
from EMPLOYEES e, JOBS j
where e.JOB_ID = j.JOB_ID;
 
-- 사원의 아이디, 사원이름, 직종아이디, 급여, 직종제목, 직종최저급여, 직종최고급여 조회하기
-- 단, 직종 최저급여가 3000달러 미만인 정보만 조회하기
select e.employee_id,
       e.first_name,
       e.JOB_ID,
       e.salary,
       j.JOB_TITLE,
       j.min_salary,
       j.max_salary
from EMPLOYEES e, JOBS j
where e.JOB_ID = j.JOB_ID
and j.min_salary < 3000;        -- 검색조건
 
-- 사원의 아이디, 사원이름, 부서이름을 조회하기
-- (단, 100번 사원이 부서담당자로 지정된 부서에 소속된 사원만 조회하기)
-- 사원의 아이디, 사원이름, 부서이름, 부서담당자
-- {     employees       }  {  department      }
select e.employee_id, e.first_name, d.department_name
from EMPLOYEES e, DEPARTMENTS d
where e.DEPARTMENT_ID = d.DEPARTMENT_ID
and d.MANAGER_ID = 100;
 
-- 부서아이디, 부서명, 그 부서가 위치한 지역의 도시명을 조회하기
-- {   departments  }   {     locations            }
select d.department_id, d.department_name, l.city
from DEPARTMENTS d, LOCATIONS l
where d.LOCATION_ID = l.LOCATION_ID;
 
-- 부서아이디, 부서명, 부서 담당자 아이디, 부서 담당자(사원)의 이름, 부서 담당자(사원)의 연락처를 조회하기
-- {      departments                         } {            employees                                             }
select d.department_id, d.department_name, d.MANAGER_ID, e.first_name, e.phone_number
from DEPARTMENTS d, EMPLOYEES e
where d.DEPARTMENT_ID = e.DEPARTMENT_ID
and d.manager_id = e.employee_id;
 
-- 급여를 15000달러 이상 받는 사원들의 아이디, 사원이름, 급여, 소속부서 아이디, 소속부서명을 조회하기
-- {        employees                                                          } {departments}
select E.employee_id, E.salary, E.department_id, D.department_name
from EMPLOYEES E, DEPARTMENTS D
where E.department_id = D.DEPARTMENT_ID
and E.SALARY >= 15000;
 
-- 직종 최저급여가 10000달러 이상인 직종에 근무중인
-- {jobs}
-- 사원의 아이디, 사원의 이름, 직종 아이디, 직종제목 조회하기
-- {employees                                      } {jobs  }
select E.employee_id, E.first_name, E.job_id, J.job_title
from EMPLOYEES E, JOBS J
where E.JOB_ID = J.JOB_ID
and J.MIN_SALARY >= 10000;
 
-- 사원의 아이디, 사원이름, 직종아이디, 직종제목, 소속부서 아이디, 소속부서명 조회하기
-- { employees                               } { jobs  } {     departments              }
select E.employee_id, E.first_name, E.job_id, J.job_title, D.department_id, D.department_name
from EMPLOYEES E, JOBS J, DEPARTMENTS D
where E.JOB_ID = J.JOB_ID
and E.DEPARTMENT_ID = D.DEPARTMENT_ID;
 
cs




현재 사용되는 Employees, Departments 등의 테이블들의 전체 E-R다이어그램입니다.



금일 배운 조인 JOIN을 응용한 과제와 정답입니다.

190402_sql_quiz.txt

190402_2_과제.sql

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함