가. 조인의 종류
- 카티션 곱 : where 절에 조건을 기입하지 않을 경우, 테이블 row 수만큼(null 제외) * 연산하여 출력
- EQUI JOIN : where 절에 = 을 사용했을 경우
- NON-EQUI JOIN : where 절에 >=, <=, 등의 연산자 이용
- OUTER JOIN : null 이 포함된 행도 출력하고자 할 때(+), outer join의 경우 (+)의 반대쪽 테이블에 full scan 이
일어나 성능저하를 가져온다.
- SELF JOIN : 1개의 테이블을 마치 2개의 테이블 조인 마냥, 같은 테이블내에서 조인을 맺는 것
나. 조인 시 주의사항 : 2개의 테이블 이상의 테이블 조인 시, 앞 테이블은 상대적으로 row 량이 적은 것을 사용한다.
2. 예제모음
|
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189 |
SQL> select s.name, d.dname2 from student s, department d3 where s.deptno=d.deptno;NAME DNAME---------- ----------------전인하 컴퓨터공학과이동훈 전자공학과박미경 컴퓨터공학과김영균 컴퓨터공학과박동진 전자공학과김진영 멀티미디어학과지은경 컴퓨터공학과오유석 멀티미디어학과하나리 멀티미디어학과임유진 컴퓨터공학과서재진 컴퓨터공학과윤진욱 멀티미디어학과이광훈 컴퓨터공학과김진경 전자공학과조명훈 전자공학과류민정 컴퓨터공학과16 rows selected.SQL> select s.name, d.dname, p.name2 from student s, department d, professor p3 where s.deptno=d.deptno and s.profno=p.profno;NAME DNAME NAME---------- ---------------- ----------김진경 전자공학과 이재우이광훈 컴퓨터공학과 성연희전인하 컴퓨터공학과 성연희윤진욱 멀티미디어학과 권혁일오유석 멀티미디어학과 권혁일김진영 멀티미디어학과 권혁일김영균 컴퓨터공학과 이만식류민정 컴퓨터공학과 전은지임유진 컴퓨터공학과 전은지지은경 컴퓨터공학과 전은지10 rows selected.SQL> select c.cust, g.gift2 from test14 c, test13 g3 where c.point between g.fpoint and g.tpoint;CUST GIFT-------------- ----------------------------------------771201-2233445 COMPUTER620908-2121232 COMPUTER500823-1132762 AUDIO672102-2123452 의류교환권650207-1765152 굴비세트680801-1234455 갈비세트701212-1143211 PCS무료가입권710125-1144951 구두상품권721109-2144952 녹차세트721101-2144952 도서상품권10 rows selected.SQL> select g.gift, count(g.gift)2 from test14 c, test13 g3 where c.point between g.fpoint and g.tpoint4 group by g.gift;GIFT COUNT(G.GIFT)---------------------------------------- -------------COMPUTER 2의류교환권 1굴비세트 1갈비세트 1PCS무료가입권 1구두상품권 1AUDIO 1녹차세트 1도서상품권 19 rows selected.SQL> select c.cust, c.point, p.gift2 from test14 c, test13 p3 where p.gift='갈비세트' and c.point > p.fpoint;CUST POINT GIFT-------------- ---------- ----------------------------------------650207-1765152 20239650 갈비세트672102-2123452 40935040 갈비세트500823-1132762 75636408 갈비세트771201-2233445 129855120 갈비세트680801-1234455 10059470 갈비세트620908-2121232 123674200 갈비세트6 rows selected.SQL> select e.emp_id, e.emp_name, e.birth_date,2 trunc(months_between(sysdate, e.birth_date)/12) age, e.lev3 from temp e, emp_level l4 where trunc(months_between(sysdate, e.birth_date)/12) between l.from_age and l.to_age5 and l.lev='부장';EMP_ID EMP_NAME BIRTH_DATE AGE LEV---------- ---------- ------------ ---------- ----19970101 김길동 25-JAN-74 37 부장19960101 홍길동 22-MAR-73 38 과장19970201 박문수 15-APR-75 36 과장19930331 정도령 25-MAY-76 35 차장19950303 이순신 15-JUN-73 38 대리19966102 지문덕 05-JUL-72 39 과장19930402 강감찬 15-AUG-72 39 차장19960303 설까치 25-SEP-71 40 사원19970112 연흥부 05-NOV-76 35 대리19960212 배뱅이 15-DEC-72 39 과장20000101 이태백 25-JAN-80 31 수습20000102 김설악 22-MAR-80 31 수습20000203 최오대 15-APR-80 31 수습20000334 박지리 25-MAY-80 31 수습20000305 정북악 15-JUN-80 31 수습20006106 유도봉 05-JUL-80 31 수습20000407 윤주왕 15-AUG-80 31 수습20000308 강월악 25-SEP-80 31 수습20000119 장금강 05-NOV-80 31 수습20000210 나한라 15-DEC-80 31 수습20 rows selected.SQL> select s.name s_name, s.grade, p.name p_name, p.position2 from professor p, student s3 where p.profno=s.profno(+);S_NAME G P_NAME POSITION---------- - ---------- --------------------전인하 4 성연희 조교수김영균 3 이만식 부교수김진영 2 권혁일 교수지은경 2 전은지 전임강사오유석 4 권혁일 교수임유진 2 전은지 전임강사윤진욱 3 권혁일 교수이광훈 4 성연희 조교수김진경 2 이재우 조교수류민정 2 전은지 전임강사김도훈 교수염일웅 전임강사남은혁 부교수13 rows selected.SQL> select e.emp_id, e.emp_name, e.lev,e.salary, l.from_sal, l.to_sal2 from temp e, emp_level l3 where e.lev=l.lev(+);EMP_ID EMP_NAME LEV SALARY FROM_SAL TO_SAL---------- ---------- ---- ---------- ---------- ----------19960303 설까치 사원 35000000 30000000 4000000019970112 연흥부 대리 45000000 35000000 6000000019950303 이순신 대리 56000000 35000000 6000000019960212 배뱅이 과장 39000000 37000000 7500000019966102 지문덕 과장 45000000 37000000 7500000019970201 박문수 과장 50000000 37000000 7500000019960101 홍길동 과장 72000000 37000000 7500000019930402 강감찬 차장 64000000 40000000 8000000019930331 정도령 차장 70000000 40000000 8000000019970101 김길동 부장 100000000 60000000 10000000020000210 나한라 수습 3000000020000119 장금강 수습 3000000020000308 강월악 수습 3000000020000407 윤주왕 수습 3000000020006106 유도봉 수습 3000000020000305 정북악 수습 3000000020000334 박지리 수습 3000000020000203 최오대 수습 3000000020000102 김설악 수습 3000000020000101 이태백 수습 3000000020 rows selected. |