๐SQLD. ์ 37 ํ ๊ธฐ์ถ ๋ฌธ์
๋ฌธ์ 1. ๋ค์์์ ์ค๋ช ํ๋ ๊ฒ์ ER๋ชจ๋ธ ์ค ์ด๋ค ํญ๋ชฉ์ ๋ํ ์ค๋ช ์ธ๊ฐ? ์ ๋ตํ์ธ๐ผ
1) ๋ชจ๋ ๋ฆด๋ ์ด์
(Relation)์ ์์๊ฐ(Atomic)์ ๊ฐ์ ธ์ผ ํ๋ค.
2) ์ด๋ค ๋ฆด๋ ์ด์
(Relation)์์ ์์ฑ ๊ฐ์ด ๊ฐ์ง์ ์๋ ๊ฐ์ ๋ฒ์๋ฅผ ์๋ฏธํ๋ค.
3) ์ค์ ์์ฑ๊ฐ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์๋์ง ํ์ธํ๋ค.
4) ์์ฑ๋ช
๊ณผ ๋ฐ๋์ ๋์ผํ ํ์๋ ์๋ค.
1) ์นด๋๋ ๋ฆฌํฐ(Cardinality) 2) ๋๋ฉ์ธ(Domain) 3) ์ธ์คํด์ค(Instance) 4) ์ฐจ์(Degree) |
๋ฌธ์ 2. ๋ค์ ์ค์์ ๋๋ฉ์ธ(Domain) ์๋ํ ํน์ง์ผ๋ก ์ณ์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๋ฆด๋ ์ด์
์ ์์ฑ์ ๋ํ ๋ฐ์ดํฐ ํ์
๊ณผ ํฌ๊ธฐ์ด๋ค. 2) ์์ฑ์ ๋ํ์ฌ NOT NULL ์ ์ฝ์ฌํญ์ ์ค์ ํ์ฌ NULL ๊ฐ์ ํ์ฉํ์ง ์๋๋ค. 3) ์์ฑ์ ๊ฐ์ ์ ๋ ฅ ํ ๋ CHECK ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ ์ ๋ ฅ ๊ฐ์ ๊ฒ์ฌํ๋ค. 4) ํ๋์ ๋ฆด๋ ์ด์ ๊ณผ ๊ด๊ณ๋ ๋ค๋ฅธ ๋ฆด๋ ์ด์ ์ FK(Foreign key) ์ ์ฝ์กฐ๊ฑด์ด๋ค. |
๋ฌธ์ 3. ๋ค์ ๋ณด๊ธฐ ์ค ์ํผ/์๋ธํ์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋ณํํ์ ์ ๋ํ ์ค๋ช ์ผ๋ก ์ณ์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) One To One์ด๋ ๊ฐ๋ณ๋ก ๋ฐ์๋๋ ํธ๋์ญ์
์ ๋ํด์๋ ๊ฐ๋ณ ํ
์ด๋ธ๋ก ๊ตฌ์ฑํ๊ณ ํ
์ด๋ธ์ ์๊ฐ ๋ง์์ง๋ค. 2) Plus Type์ ํ๋์ ํ ์ด๋ธ์ ์์ฑํ๋ ๊ฒ์ผ๋ก ์กฐ์ธ(Join)์ด ๋ฐ์ํ์ง ์๋๋ค. 3) Plus Type์ ์ํผ+์๋ธํ์ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ๋ก ์กฐ์ธ์ฑ๋ฅ์ด ์ฐ์ํ์ฌ Super Type๊ณผ Sub Type๋ณํ ์์ ํญ์ ์ฌ์ฉ๋๋ค. 4) One To One type์ ์กฐ์ธ์ฑ๋ฅ์ด ์ฐ์ํ๊ธฐ ๋๋ฌธ์ ๊ด๋ฆฌ๊ฐ ํธ๋ฆฌํ๋ค. |
๋ฌธ์ 4. ๋ค์ ๋ณด๊ธฐ ์ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์ ๋ํ ํน์ง์ผ๋ก ์ณ์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๋ด๋ถํ 2) ์ถ์ํ 3) ๋จ์ํ 4) ๋ช ํํ |
๋ฌธ์ 5. ๋ค์ ๋ณด๊ธฐ ์ค ์๋ ์๋๋ฆฌ์ค์์ ์ํฐํฐ๋ก ๊ฐ์ฅ ์ ์ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[์๋๋ฆฌ์ค]
ํ๋ฆผ๋ํ๊ต ์ฑ์ฌ๋ณ์์ ์๊ธ์ข
ํฉ๋ณ์์ด๊ณ ๊ตญ๋ด์๋ ์ฝ 43๊ฐ์ ์๊ธ์ข
ํฉ๋ณ์์ด ์๋ค.
์๊ธ ์ข
ํฉ๋ณ์์์ ์ง๋ฃ๋ฅผ ๋ฐ๊ธฐ ์ํด์๋ ์์ฝ์ ํด์ผ ํ๋ค.
์์ฝ์ ํ๊ธฐ ์ํด์ ํ์๋ก ๋ฑ๋กํด์ผ ํ๋๋ฐ, ํ์ ๋ฑ๋ก์ ์ํด์๋
ํ์์ด๋ฆ, ์ฃผ์, ์ ํ๋ฒํธ, ๋์ด, ์ต๊ทผ ๋ณ๋ ฅ๋ฑ์ ์ ๋ณด๋ฅผ ํ๋ฆผ๋ํ๊ต ์ฑ์ฌ๋ณ์ ์น์ฌ์ดํธ์ ์ ์ํด์ ์
๋ ฅํด์ผํ๋ค.
1) ๋์ด 2) ํ์ 3) ์ด๋ฆ 4) ์ฃผ์ |
๋ฌธ์ 6. ๋ค์ ์๋์ ์ค๋ช ์ ํด๋นํ๋ ์์ฑ์ ์ข ๋ฅ๋ ๋ฌด์์ธ๊ฐ? ์ ๋ตํ์ธ๐ผ
ABC ์จ๋ผ์ธ ์ผํ๋ชฐ์ ๋งค์ผ ๊ณ ๊ฐ๋ค์ ์ฃผ๋ฌธ์ ๋ณด๋ฅผ ์ฃผ๋ฌธ ๋ฆด๋ ์ด์
์ ์ ์ฅํ๊ณ ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋งค์ผ 24์์ ์ฃผ๋ฌธ ๋ฆด๋ ์ด์
์ ์๋ ๊ธ์ก์ ์กฐํํ์ฌ ์ผ๋ณ ์ฃผ๋ฌธํฉ๊ณ ํ
์ด๋ธ์ ์ํ๋ณ, ์ผ๋ณ, ์ฃผ๋ฌธํฉ๊ณ ๊ธ์ก์ ๋ณด๊ดํ๋ค.
์ด๋ ์ฃผ๋ฌธ ๋ฆด๋ ์ด์
์ ๊ธ์ก ์์ฑ์ ์ํด์ ๋ฐ์๋ ์ฃผ๋ฌธํฉ๊ณ ์์ฑ์ ๋ฌด์์ด๋ผ๊ณ ํ๋๊ฐ?
๋ํ ์ฃผ๋ฌธํฉ๊ณ ์์ฑ์ ๊ธ์ก์์ฑ๊ณผ ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ์ ์งํด์ผ ํ๋ค.
1) ํ์์์ฑ 2) ๊ธฐ๋ณธ์์ฑ 3) ์ค๊ณ์์ฑ 4) ์ฐ๊ด์์ฑ |
๋ฌธ์ 7. ๋ค์ ์ฃผ์ด์ง ERD ๊ด๊ณ์ ๋ํ ์ค๋ช ์ผ๋ก ์ณ์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ํ๋์ UserID๋ ์ฌ๋ฌ ๊ฐ์ GroupID๋ฅผ ๊ฐ์ง ์ ์๋ค. 2) GROUP ๋ฆด๋ ์ด์ ๊ณผ ACCOUNT ๋ฆด๋ ์ด์ ์ ์๋ณ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ค. 3) GROUP ๋ฆด๋ ์ด์ ์ ํ ๋ช ์ UserID๋ ์์ ์ ์๋ค. 4) GROUP ๋ฆด๋ ์ด์ ์ ์ฌ๋ฌ ๋ช ์ UserID๋ฅผ ๊ฐ์ง ์ ์๋ค. |
๋ฌธ์ 8. ๋ค์ ๋ณด๊ธฐ ์ค ์ํฐํฐ ๊ฐ์ ๊ด๊ณ์์ 1:1, 1:M ๊ณผ ๊ฐ์ด ๊ด๊ณ์ ๊ธฐ์์ฑ์ ๋ํ๋ด๋ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๊ด๊ณ๋ช
(Relationship Membership) 2) ๊ด๊ณ์ฐจ์(Relationship Degree/Car-dinality) 3) ๋๋ฉ์ธ(Domain) 4) ๊ด๊ณ์ ์(Relationship Definitoin) |
๋ฌธ์ 9. ๋ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง ์์ ์ฑ๋ฅ์ ๊ณ ๋ คํ ๋ชจ๋ธ๋ง ํ๋์ด๋ค. ์ฑ๋ฅ์ ๊ณ ๋ คํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง ๋จ๊ณ์์ ๊ฐ์ฅ ์ฒ์์ผ๋ก ์ํํด์ผ ํ ๊ฒ๊ณผ ๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ์ํํด์ผ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
๊ฐ. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง ์์ ์ ๊ทํ๋ฅผ ์ํํ๋ค.
๋. ํ
์ด๋ธ์์ ๋ณด๊ดํ๋ ๋ฐ์ดํฐ ์ฉ๋๊ณผ ํธ๋์ญ์
์ ์ ํ์ ๋ฐ๋ผ์ ๋ฐ์ ๊ทํ๋ฅผ ํ๋ค.
๋ค. ํธ๋์ญ์
์ ์ ํ์ ๋ถ์ํ๋ค.
๋ผ. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฒด ์ฉ๋์ ์ฐ์ ํด์ผ ํ๋ค.
๋ง. ์ฑ๋ฅ๊ด์ ์์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ฒ์ฆํ๊ณ ํ์ธํ๋ค.
๋ฐ. ๊ธฐ๋ณธํค์ ์ธ๋ํค๋ฅผ ์กฐ์ ํ๊ฑฐ๋, ์ํผํ์
๊ณผ ์๋ธํ์
์ ์กฐ์ ํ๋ค.
1) ๊ฐ, ๋ 2) ๋ค, ๋ง 3) ๋ค, ๋ผ 4) ๊ฐ, ๋ง |
๋ฌธ์ 10. ๋ค์ ์ค ์๋์์ ์ํฐํฐ ๋ด์ ์ฃผ์๋ณ์๋ฅผ ๋์ถํ๋ ๊ธฐ์ค์ ๋ฌถ์ ๊ฒ์ผ๋ก ๊ฐ์ฅ ์ ์ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
๊ฐ. ์ผํ๋ชฐ ์ฌ์ดํธ์์๋ ํ์๋ฒํธ๊ฐ ์ผํ๋ชฐ ์ฌ์ดํธ๋ฅผ ์ด์ํ ๋ ์์ฃผ ์ด์ฉ๋๋ ์์ฑ์ด๋ฏ๋ก ์ฃผ์๋ณ์๋ก ์ง์ ํ๋ค.
๋. ์ํฐํฐ ๋ด์์ ๊ณ ๊ฐ ๋ฆฌ์คํธ, ์ํ ๋ฆฌ์คํธ ๋ฑ๊ณผ ๊ฐ์ ๊ฒ์ ์ฃผ์๋ณ์๋ก ์ง์ ํ๋ค.
๋ค. ์ฃผ์๋ณ์๋ก ์ง์ ํ ๋ ์์ฃผ๋ณ๊ฒฝ ๋๋ ์์ฑ์ ์ง์ ํ๋ค.
๋ผ. ์ฌ๋ฌ ๊ฐ์ ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋ ๋ณตํฉ์์ฑ์ ๊ฒฝ์ฐ ์ฃผ์๋ณ์์ ๋๋ฌด ๋ง์ ์์ฑ์ด ํฌํจ๋์ง ์๊ฒ ํ๋ค.
1) ๊ฐ, ๋ 2) ๊ฐ, ๋ผ 3) ๋, ๋ผ 4) ๊ฐ, ๋ค |
๋ฌธ์ 11. ๋ค์ ๋ณด๊ธฐ ์ค ํด์์กฐ์ธ(Hash Join)์ ๋ํ ์ค๋ช ์ผ๋ก ์ณ์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ํด์์กฐ์ธ์ ๋ ๊ฐ์ ํ
์ด๋ธ ๊ฐ์ ์กฐ์ธ์ ํ ๋ ๋ฒ์๊ฒ์์ด ์๋ ๋๋ฑ์กฐ์ธ(EQUI-Join)์ ์ ํฉํ ๋ฐฉ์์ด๋ค. 2) ์์ ํ ์ด๋ธ(Build Input)์ ๋จผ์ ์ฝ์ด์ Hash Area์ ํด์ ํ ์ด๋ธ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํฐ ํ ์ด๋ธ๋ก Hash Area๋ฅผ ์์ฑํ๋ฉด ๊ณผ๋คํSort๊ฐ ์ ๋ฐ ๋์ด ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค. 3) ์จ๋ผ์ธ ํธ๋์ญ์ ์ฒ๋ฆฌ(OLTP)์ ์ ์ฉํ๋ค. 4) ํด์์กฐ์ธ์ ์ํ ๋น๋๊ฐ ๋ฎ๊ณ ์ํ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๋์ฉ๋ ํ ์ด๋ธ์ ๋ํ ์กฐ์ธ์ ํ ๋ ์ ์ฉํ๋ค. |
๋ฌธ์ 12. ๋ค์ ๋ณด๊ธฐ ์ค Join๊ธฐ๋ฒ์ ๋ํ ์ค๋ช ์ผ๋ก ๊ฐ์ฅ ์ ์ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) Nested Loop Join์ OLTP ์์คํ
์์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ธํ ๋ ๋จผ์ ๋์ค๋ ํ
์ด๋ธ์ ์ ํ๋๊ฐ ๋ฎ์ ํ
์ด๋ธ์ ์ฐธ์กฐํ๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค. 2) Sort Merge Join์ ์ค์ง ๋๋ฑ Join(Equi Join)์์๋ง ์ฌ์ฉํ ์ ์๋ค. 3) Hash Join์ ๊ฒฐ๊ณผ ํ์ ์๊ฐ ํฐ ํ ์ด๋ธ์ ์ ํ ํ ์ด๋ธ๋ก ์ฌ์ฉํ๋ฉด Hash Area์ฌ์ด์ฆ๊ฐ ์์์ ธ์ ์ฑ๋ฅ์ ์ ๋ฆฌํ๋ค. 4) Hash Join์ Sort Merge Join, Nested Loop Join๋ณด๋ค ํญ์ ์ฑ๋ฅ์ด ์ฐ์ํ๋ค. |
๋ฌธ์ 13. ๋ค์ ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ์ด ๋์ค๋๋ก SQL๋ฌธ์ ๋น์นธ์ ๋ค์ด๊ฐ ์ ์๋ ๋ด์ฉ์ ๊ณ ๋ฅด์์ค. ์ ๋ตํ์ธ๐ผ
[T_TEST]
DEPTNO JOB SAL
--------------------
10 CLERK 1300
10 MANAGER 2150
20 CLERK 1900
20 ANALYST 6000
20 MANAGER 2000
[๊ฒฐ๊ณผ]
DEPTNO JOB SUM(SAL)
------------------------
10 CLERK 1300
10 MANAGER 2150
10 3450
20 CLERK 1900
20 ANALYST 6000
20 MANAGER 2000
20 9900
13350
[SQL]
SELECT DEPTNO, JOB, SUM(SAL)
FROM T_TEST
GROUP BY ( );
1) DEPTNO, JOB
2) GROUPING SETS(DEPTNO, JOB)
3) ROLLUP(DEPTNO, JOB)
4) CUBE(DEPTNO, JOB)
๋ฌธ์ 14. ์ฃผ์ด์ง ๋ ๊ฐ์ ํ ์ด๋ธ์ ๋ํด์ ์๋์ SQL๋ฌธ์ ์ํํ ์ดํ์ TEST1 ํ ์ด๋ธ์ ๊ฑด์๋? ์ ๋ตํ์ธ๐ผ
[TEST1]
COL1 COL2 COL3
------------------
A X 1
B Y 2
C Z 3
[TEST2]
COL1 COL2 COL3
------------------
A X 1
B Y 2
C Z 3
D ๊ฐ 4
E ๋ 5
[SQL]
MERGE INTO TEST1
USING TEST2
ON (TEST1.COL1 = TEST2.COL1)
WHEN MATCHED THEN
UPDATE SET TEST1.COL3 = 4
WHERE TEST1.COL3 = 2
DELETE WHERE TEST1.COL3 <= 2
WHEN NOT MATCHED THEN
INSERT(TEST1.COL1, TEST1.COL2, TEST1.COL3)
VALUES(TEST2.COL1, TEST2.COL2, TEST2.COL3);
1) 4 2) 3 3) 5 4) 8 |
๋ฌธ์ 15. ๋ค์์ ABC๊ธฐ์ ์ ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์ด๋ค. ๋ค์์ ์ค๋ช ์ค์์ ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์ ํ์ฝ๋์ ๋ํ ๋ฐฐ์ก์ง ์ ๋ณด๋ ์ ํ๋ง์คํฐ ํ
์ด๋ธ์ด ์ฃผ๋ฌธ์ด๋ ฅ์ ์ง์ ์กฐ์ธํ๋ฉด ๋๋ค. 2) ์ ํ๋ง์คํฐ์ ์ฃผ๋ฌธ์ด๋ ฅ์ ์กฐ์ธํ๋ฉด ์นดํ ์์ ๊ณฑ์ด ๋ฐ์ํ๋ค. 3) ์ ํ๋ง์คํฐ์ ์ ํ์์ฐ์ ๋น์๋ณ๊ด๊ณ์ด๋ค. 4) ์ ํ๋ง์คํฐ์์ ์ฃผ๋ฌธ์ผ์๋ฅผ ์กฐํํ๊ธฐ ์ํด์๋ WHERE์ ์กฐ๊ฑด์ด ์ต์ 4๊ฐ ์ด์์ด๋ค. |
๋ฌธ์ 16. ์๋์ TEST10 ํ ์ด๋ธ์ ๋ํด์ ์๋์ SQL๋ฌธ์ ์ํํ์์ ๋์ ๊ฒฐ๊ณผ ๊ฑด์๋? ์ ๋ตํ์ธ๐ผ
[TEST10]
EMPNO NAME MANAGER
--------------------
1 LIM NULL
2 PARK 1
3 KIM 2
[SQL]
SELECT LPAD('**', (LEVEL-1) * 2, ' ')
|| EMPNO AS EMP, NAME
FROM TEST10
WHERE EMPNO <> 3
START WITH EMPNO = 3
CONNECT BY EMPNO = PRIOR MANAGER;
1) 0 2) 1 3) 2 4) 3 |
๋ฌธ์ 17. ๋ค์ ์ฃผ์ด์ง SQL๋ฌธ์ ์ํํ์์ ๋์ ๊ฒฐ๊ณผ๊ฐ ์๋์ ๊ฐ์ ๋ ๋น์นธ์ ๋ค์ด๊ฐ ๊ฒ์ผ๋ก ์๋ง์ ๊ฒ์?์ ๋ตํ์ธ๐ผ
[SQL]
SELECT 10+20 * (( ? )(NULL, 0.1, 0.2))
FROM. DUAL;
[RESULT]
14
1) ISNULL 2) NVL 3) NVL2 4) COALESCE |
๋ฌธ์ 18. ๋ณด๊ธฐ์์ SELECT ๊ฒฐ๊ณผ๊ฐ NULL์ด ์๋ ๊ฒฝ์ฐ๋? ์ ๋ตํ์ธ๐ผ
1) SELECT COALESCE(1, 2, 3) FROM DUAL;
2) SELECT CASE 0 WHEN 1 THEN 2 ELSE NULL END FROM DUAL;
3) SELECT DECODE('A', 'B', 'C', NULL) FROM DUAL;
4) SELECT NULLIF('A', 'A') FROM DUAL;
๋ฌธ์ 19. ๋ค์ ์ฃผ์ด์ง ๋ฐ์ดํฐ์์ ํด๋น SQL๋ฌธ์ ์คํ ํ์ ๋์ ๊ฒฐ๊ณผ ๊ฐ์ผ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TABLE19]
A X
------
1 100
1 NULL
2 100
2 200
[SQL]
SELECT A, SUM(X) AS TAB FROM TABLE19 GROUP BY A;
1) 2)
A TAB A TAB
------- -------
1 100 1 100
2 200
3) 4)
A TAB A TAB
------- -------
1 100 1 100
2 300 1 NULL
2 100
2 200
๋ฌธ์ 20. ๋ค์์ SQL๋ฌธ์ด ์์๋๋ก ์ํ๋๊ณ ๋ ํ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[SQL]
CREATE TABLE TEST20( COL1 NUMBER(10));
INSERT INTO TEST20 VALUES(1);
INSERT INTO TEST20 VALUES(4);
SAVEPOINT SV1;
UPDATE TEST20 SET COL1=8 WHERE COL1=2;
SAVEPOINT SV1;
DELETE TEST20 WHERE COL1 >= 2;
ROLLBACK TO SV1;
INSERT INTO TEST20 VALUES(3);
SELECT MAX(COL1) FROM TEST20;
1) 2)
MAX(COL1) MAX(COL1)
--------- ---------
2 3
3) 4)
MAX(COL1) MAX(COL1)
--------- ---------
4 1โ
๋ฌธ์ 21. ๋ค์ ์ฃผ์ด์ง ํ ์ด๋ธ์์ ์ง๊ณ ํจ์๋ฅผ ์ํํ์์ ๋ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๋ค๋ฅธ ๊ฒ์ ๊ณ ๋ฅด์์ค.์ ๋ตํ์ธ๐ผ
[TEST21]
USERID USERCOUNT
-------------------
KIM 10
PARK 20
LIM NULL
SIN NULL
1) SELECT COUNT(NVL (USERCOUNT, 0)) FROM TEST21;
2) SELECT SUM(NVL (USERCOUNT, 0)) / 4 FROM TEST21;
3) SELECT AVG(NVL (USERCOUNT, 0)) FROM TEST21;
4) SELECT AVG(NVL (USERCOUNT, 1)) - 0.5 FROM TEST21;
๋ฌธ์ 22. ๋ค์ ํํฐ์ ์ ๋ํ ์ค๋ช ์ผ๋ก ํ๋ฆฐ ๊ฒ์ ๊ณ ๋ฅด์์ค. ์ ๋ตํ์ธ๐ผ
1) RANK() OVER (PARTITION BY JOB ORDER BY ๊ธ์ฌ DESC) JOB_RANK
#์ง์
๋ณ ๊ธ์ฌ๊ฐ ๋์ ์์๋๋ก ์์๊ฐ ๋ถ์ฌ๋๊ณ ๋์ผํ ์์๋ ๋์ผํ ๊ฐ์ด ๋ถ์ฌ ๋๋ค.
2) SUM(๊ธ์ฌ) OVER (PARTITION BY MGR ORDER BY ๊ธ์ฌ RANGE UNBOUNDED PRECEDING)
#RANGE๋ ๋
ผ๋ฆฌ์ ์ฃผ์์ ์ํ ํ ์งํฉ์ ์๋ฏธํ๊ณ MGR๋ณ ํ์ฌ ํ๋ถํฐ ํํฐ์
๋ด ์ฒซ๋ฒ์งธ ํ๊น์ง ๊ธ์ฌ์ ํฉ๊ณ๋ฅผ ๊ณ์ฐํ๋ค.
3) AVG(๊ธ์ฌ) OVER (PARTITION BY MGR ORDER BY ๋ ์ง ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING))
#๊ฐ MGR ๋ณ๋ก ์์ ํ๊ฑด, ํ์ฌ ํ, ๋ค์ ํ๊ฑด ์ฌ์ด์์ ๊ธ์ฌ์ ํ๊ท ์ ๊ณ์ฐํ๋ค.
4) COUNT(*) OVER (ORDER BY ๊ธ์ฌ) RANGE BETWEEN 10 PRECEDING AND 300 FOLLOWING)
#๊ธ์ฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ฌ ํ์์์ ๊ธ์ฌ์ -10 ~ +300์ฌ์ด์ ๊ธ์ฌ๋ฅผ ๊ฐ์ง๋ ํ์ ์๋ฅผ COUNT
๋ฌธ์ 23. ๋ค์ ์ฃผ์ด์ง ํ ์ด๋ธ์์ ์๋์ SQL์ ์ํํ ๊ฒฐ๊ณผ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TEST23]
COL1 COL2 COL3 COL4
-------------------------
10 10 10 20
20 20 NULL 30
30 NULL NULL 10
NULL 30 10 40
[SQL]
SELECT SUM(COL1+COL2+COL3+COL4) FROM TEST23;
SELECT SUM(COL1) + SUM(COL2) + SUM(COL3) + SUM(COL4) FROM TEST23;
1) 50, NULL 2) NULL, 240 3) 50, 240 4) NULL, NULL |
๋ฌธ์ 24. ๋ค์ ๋ณด๊ธฐ ์ค PL/SQL์ ๋ํ ์ค๋ช ์ผ๋ก ๊ฐ์ฅ ์ ์ ํ์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๋ณ์์ ์์ ๋ฑ์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ SQL๋ฌธ์ฅ์ ์คํํ ๋ WHERE์ ์ ์กฐ๊ฑด ๋ฑ์ผ๋ก ๋์
ํ ์ ์๋ค. 2) Procedure, User Defined Function, Trigger ๊ฐ์ฒด๋ฅผ PL/SQL๋ก ์์ฑ ํ ์ ์๋ค. 3) Procedure ๋ด๋ถ์ ์์ฑ๋ ์ ์ฐจ์ ์ฝ๋๋ PL/SQL์์ง์ด ์ฒ๋ฆฌํ๊ณ ์ผ๋ฐ์ ์ธ SQL๋ฌธ์ฅ์ SQL์คํ๊ธฐ๊ฐ ์ฒ๋ฆฌํ๋ค. 4) PL/SQL๋ฌธ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ก DECLARE, BEGIN ~ END, EXCEPTION ๋ฌธ์ ํ์์ ์ผ๋ก ์จ์ผํ๋ค. |
๋ฌธ์ 25. ๋ค์์ ํ ์ด๋ธ์ ๋ณด๊ณ ์คํํ SQL๋ฌธ ์ค์์ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[T_ORDER]
Orderyear Ordermonth Price
---------------------------------
2020 01 1000
2020 02 6000
2020 03 2000
2020 04 3000
2020 05 2000
2020 06 1500โ
1)
SELECT SUM(price) AS TOTAL
FROM t_order WHERE orderyear
BETWEEN '2020' AND '2021' AND order month
BETWEEN '01' AND '12';
# ๊ฒฐ๊ณผ : 15,500
2)
SELECT SUM(price) AS TOTAL
FROM t_order WHERE ordermonth in ('01','06');
# ๊ฒฐ๊ณผ : 2,500
3)
SELECT SUM(price) AS TOTAL
FROM t_order WHERE ordermonth = '01'
or ordermonth = '06';
# ๊ฒฐ๊ณผ : 2,500
4)
SELECT SUM(decode('06', 0, price)) AS TOTAL
FROM t_order WHERE orderyear
BETWEEN '2020' AND '2021';
# ๊ฒฐ๊ณผ : 1,500
๋ฌธ์ 26. ๋ค์ ๋ณด๊ธฐ ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์ ์ฝ์กฐ๊ฑด(Constraint)์ ๋ํ ์ค๋ช ์ผ๋ก ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์ธ๋ํค(Foreign Key)๋ ๋ ๊ฐ์ ํ
์ด๋ธ ๊ฐ์ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์ฝํ๋ค. 2) ๊ธฐ๋ณธํค(Primary Key) ์ ์ฝ์ฌํญ์ ํ ์ด๋ธ ๋น ํ๋๋ง ์ ์ฝํ ์ ์๋ค. 3) Check ์ ์ฝ์กฐ๊ฑด(Constraint)์ ํน์ ๊ฐ๋ง ์ ๋ ฅ๋๊ฒ ์ ์ฝํ๋ค. 4) ๊ณ ์ ํค(Unique Key) ์ ์ฝ์ด ์ค์ ๋๋ฉด NULL๊ฐ์ ๊ฐ์ง ์ ์๋ค. |
๋ฌธ์ 27. ๋ค์ ์ค ์๋์์ Join์ ๋ํ ์ค๋ช ์ผ๋ก ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
๊ฐ) ๋ง์คํฐ ํ
์ด๋ธ๊ณผ ์ฌ๋ ์ด๋ธ ํ
์ด๋ธ ๊ฐ์ ์กฐ์ธ์ ์ผ๋ฐ์ ์ผ๋ก ๊ธฐ๋ณธํค์ ์ธ๋ํค ์ฌ์ด์์ ๋ฐ์ํ๋ค.
๋) EQUI Join์ ๋ ๊ฐ์ ํ
์ด๋ธ ๊ฐ์ ์นผ๋ผ ๊ฐ์ด ์ผ์นํ๋ ๊ฒ์ ์กฐํํ๋ค.
๋ค) EQUI Join์ >, <, >=, <= ๋ฅผ ์ฌ์ฉํ๋ค.
๋ผ) EQUI Join์ ๋ ๊ฐ์ ํ
์ด๋ธ์์ ๊ต์งํฉ์ ์ฐพ๋๋ค.
1) ๊ฐ 2) ๋ 3) ๋ค 4) ๋ผ |
๋ฌธ์ 28. ๋ค์ ๋ณด๊ธฐ ์ค ์๋์ SQL์ ๋ํ ์ค๋ช ์ผ๋ก ๊ฐ์ฅ ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[SQL]
SELECT ๋ถ๋ฅ์ฝ๋,
AVG(์ํ๊ฐ๊ฒฉ) AS ์ํ๊ฐ๊ฒฉ,
COUNT(*) OVER
(
ORDER BY AVG(์ํ๊ฐ๊ฒฉ)
RANGE BETWEEN 10000
PRECEDING AND 10000 FOLLOWING
)AS CNT
FROM ์ํ
GROUP BY ๋ถ๋ฅ์ฝ๋;
1) WINDOW FUNCTION์ GROUP BY(๋ถ๋ฅ์ฝ๋) ์ ๊ณผ ํจ๊ป ์ฌ์ฉํ์์ผ๋ฏ๋ก ์์ SQL์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. 2) WINDOW FUNCTION์ ORDER BY ์ ๋ก ์ธํ์ฌ ๋ฌธ๋ฒ์ค๋ฅ์ด๋ค. 3) CNT ์นผ๋ผ์ ๋ถ๋ฅ์ฝ๋๋ณ ํ๊ท ์ํ๊ฐ๊ฒฉ์ ์๋ก ๋น๊ตํ์ฌ -10000 ~ +10000 ์ฌ์ด์ ์กด์ฌํ๋ ๋ถ๋ฅ์ฝ๋์ ๊ฐ์๋ฅผ ๊ตฌํ ๊ฒ์ด๋ค. 4) CNT ์นผ๋ผ์ ์ํ์ ์ฒด์ ํ๊ท ์ํ๊ฐ๊ฒฉ์ ์๋ก ๋น๊ตํ์ฌ -10000 ~ +10000 ์ฌ์ด์ ์กด์ฌํ๋ ์ํ์ ๊ฐ์๋ฅผ ๊ตฌํ ๊ฒ ์ด๋ค. |
๋ฌธ์ 29. ์๋์ ํ ์ด๋ธ๋ค์ ๋ํด์ SQL๋ฌธ์ ์ํํ์์ ๋์ ๊ฒฐ๊ณผ ๊ฐ์? ์ ๋ตํ์ธ๐ผ
[TEST29_1]
COL
----
1
2
3
4
[TEST29_2]
COL
----
2
NULL
[SQL]
SELECT COUNT(*)
FROM TEST29_1 A
WHERE A.COL NOT IN (SELECT COL FROM TEST29_2);
1) 0 2) 1 3) 3 4) 6 |
๋ฌธ์ 30. ๋ค์ ์ฃผ์ด์ง ํ ์ด๋ธ์์ ํด๋น SQL๋ฌธ์ ์คํํ ๊ฒฐ๊ณผ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TEST30]
COL1 COL2
------------
NULL A
1 B
2 C
3 D
4 E
[SQL]
SELECT * FROM TEST30 WHERE COL1 IN(1, 2, NULL);
1)
COL1 COL2
-----------
1 B
2 C
2)
COL1 COL2
-----------
2 B
2 C
3)
COL1 COL2
-----------
1 B
2 C
3 D
4 E
4)
COL1 COL2
-----------
NULL A
1 B
2 C
3 D
4 E
๋ฌธ์ 31. ๋ค์ ์ฃผ์ด์ง ๋ฐ์ดํฐ์ ๋ํด์ LIKE๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ณผ๊ฐ์ "_" ๊ฐ ๋ค์ด๊ฐ ๋ฌธ์์ด์ ์ฐพ๋ SQL๋ฌธ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TEST31]
USERID USERNAME
---------------------
1 __H
2 _B_
3 ___
4 D__
[RESULT]
USERID USERNAME
---------------------
1 __H
2 _B_
3 ___
4 D__
1)
SELECT * FROM SQLD31 WHERE NAME LIKE '%H';
2)
SELECT * FROM SQLD31 WHERE NAME LIKE '%#_%';
3)
SELECT * FROM SQLD31 WHERE NAME LIKE '%@_%' ESCAPE '@';
4)
SELECT * FROM SQLD31 WHERE NAME LIKE '%_%' ESCAPE '_';โ
๋ฌธ์ 32. ๋ค์ ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ์๋์ SQL๋ฌธ์ ์ํํ์์ ๋ ๊ฒฐ๊ณผ ํ์ ์๋? ์ ๋ตํ์ธ๐ผ
[TEST32]
COL1 COL2
-------------
10000 'ABC'
10000 NULL
10000 'AbC'
20000 'ABC'
[SQL]
SELECT*FROM TEST32 WHERE (COL1, COL2) IN ((10000,'ABC'));
1) NULL
2) 1 3) 2 4) 3 |
๋ฌธ์ 33. ๋ค์ ์ค TEST ์ฌ์ฉ์๊ฐ ์๋์ ์์ ์ ์ํ ํ ์ ์๋๋ก ๊ถํ์ ๋ถ์ฌํ๋ DCL๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[SQL]
UPDATE A_USER SET COL1 = 'TEST' WHERE COL2 = 100;
1) GRANT UPDATE TO TEST;
2) REVOKE SELECT ON A_USER FROM TEST;
3) REVOKE UPDATE ON A_USER TO TEST;
4) GRANT SELECT, UPDATE ON A_USER TO TEST;
๋ฌธ์ 34. ์๋์ ํ ์ด๋ธ์ ๋ํด์ ์ฃผ์ด์ง SQL๋ฌธ์ ์ํํ ๊ฒฐ๊ณผ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TEST34_1]
JUMUN PRICE
--------------
10 2000
10 3000
20 4000
20 3500
[TEST34_2]
CUSTRANK MINPRICE MAXPRICE
-------------------------------
VVIP 6000 6999
VIP 5000 5999
GOLD 4000 4999
[SQL]
SELECT A.JUMUN AS JUMUN, B.CUSTRANK AS CUSTRANK
FROM (SELECT JUMUN, SUM(PRICE) AS TOTAL
FROM TEST34_1 GROUP BY JUMUN) A, TEST34_2 B
WHERE A.TOTAL BETWEEN B.MINPRICE AND B.MAXPRICE;
1)
JUMUN CUSTRANK
10 VIP
20 GOLD
2)
JUMUN CUSTRANK
10 SILVER
20 GOLD
3)
JUMUN CUSTRANK
10 VIP
4)
JUMUN CUSTRANK
10 VIP
10 VIP
20 GOLD
20 GOLD
๋ฌธ์ 35. ์ฃผ์ด์ง ERD์์ ์ค๋ฅ๊ฐ ๋์ง ์๋ SQL๋ฌธ์ ๊ณ ๋ฅด์์ค. ์ ๋ตํ์ธ๐ผ
1)
SELECT * FROM ๊ณ์ข๋ง์คํฐ
WHERE ํ์๋ฒํธ = (SELECT DISTINCT ํ์๋ฒํธ FROM ๊ณ ๊ฐ);
2)
SELECT * FROM ๊ณ์ข๋ง์คํฐ
WHERE ํ์๋ฒํธ IN (SELECT DISTINCT ํ์๋ฒํธ FROM ๊ณ ๊ฐ);
3)
SELECT ํ์๋ฒํธ, ์ข
๋ชฉ์ฝ๋ FROM ์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ
WHERE ์ฃผ๋ฌธ์ผ์ EXISTS (SELECT DISTINCT ์ฃผ๋ฌธ์ผ์ FROM ๊ณ์ข๋ง์คํฐ);
4)
SELECT ํ์๋ฒํธ, ์ข
๋ชฉ์ฝ๋ FROM ์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ
WHERE ์ฃผ๋ฌธ์ผ์ ALL (SELECT DISTINCT ์ฃผ๋ฌธ์ผ์ FROM ๊ณ์ข๋ง์คํฐ);
๋ฌธ์ 36. ์๋์ ์คํ๊ณํ์ ์์๋๋ก ๋ฐ๋ฅด๊ฒ ๋์ดํ ๊ฒ์? โ๏ธ ์ ๋ตํ์ธ๐ผ
0 - SELECT ~
1 - NESTED LOOP JOIN
2 - NESTED LOOP JOIN
3 - TABLE ACCESS(FULL)
4 - TABLE ACCESS(BY INDEX ROWID)
5 - INDEX(RANGE SCAN)
6 - TABLE ACCESS(BY INDEX ROWID)
7 - INDEX(RANGE SCAN)
1) 0-1-2-3-4-5-6-7 2) 3-4-5-4-2-7-6-0 3) 3-5-4-2-7-6-1-0 4) 3-4-2-5-7-6-1-0 |
๋ฌธ์ 37. ๋ค์ ERD๋ก ์์ฑํ SQL๋ฌธ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1)
SELECT (SELECT SUM(์ฃผ๋ฌธ๊ธ์ก) FROM ์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ)
FROM ๊ณ ๊ฐ๋ง์คํฐ GROUP BY ํ์๋ฒํธ;
2)
SELECT SUM(์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ.์ฃผ๋ฌธ๊ธ์ก)
FROM ์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ
FULL OUTER JOIN ๊ณ ๊ฐ๋ง์คํฐ
ON ๊ณ ๊ฐ๋ง์คํฐ.ํ์๋ฒํธ = ์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ.ํ์๋ฒํธ
GROUP BY ํ์๋ฒํธ;
3)
SELECT SUM(์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ.์ฃผ๋ฌธ๊ธ์ก)
FROM ๊ณ ๊ฐ๋ง์คํฐ, ์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ
WHERE ๊ณ ๊ฐ๋ง์คํฐ.ํ์๋ฒํธ = ์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ.ํ์๋ฒํธ
GROUP BY ํ์๋ฒํธ;
4)
SELECT SUM(์ฃผ๋ฌธ๊ธ์ก)
FROM ์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ
WHERE EXISTS (SELECT*FROM ๊ณ ๊ฐ๋ง์คํฐ
UNION ALL SELECT*FROM ์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ)
GROUP BY ํ์๋ฒํธ;
๋ฌธ์ 38. ํ ์ด๋ธ TEST38 ์์ UNIQUE INDEX SCAN ์ ์ํํ ์ ์๋ ๊ฒฝ์ฐ๋ ๋ฌด์์ธ๊ฐ? ์ ๋ตํ์ธ๐ผ
1)
SELECT COL1, COL2, COL3
FROM TEST38 WHERE KEY1 = 5 AND KEY2 = 6;
2)
SELECT COL1, COL2, COL3
FROM TEST38 WHERE KEY1 = 1 AND KET2 = 2;
3)
SELECT COL1, COL2, COL3
FROM TEST38 WHERE (KEY1, KEY2) IN ((1, 2));
4)
SELECT * FROM TEST38 WHERE KEY1 = 1;
๋ฌธ์ 39. ํํฐ์ ๋ณ ์๋์ฐ์์ ๊ฐ์ฅ ๋จผ์ ๋์จ ๊ฐ์ ๊ตฌํ๋ WINDOW FUNCTION์ ๋ฌด์์ธ๊ฐ? ์ ๋ตํ์ธ๐ผ
1) FIRST_VALUE 2) LAG 3) LAST_VALUE 4) LEAD |
๋ฌธ์ 40. ์ฃผ์ด์ง SQL๋ฌธ์์ ORDER BY๋ก ์ฌ์ฉํ ์ ์๋ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[SQL]
SELECT JOB, COUNt(*) AS ROWCNT
FROM TEST40 GROUP BY JOB;
1) ORDER BY JOB 2) ORDER BY ROWCNT DESC 3) ORDER BY COUNT(*) 4) ORDER BY 3 |
๋ฌธ์ 41. ๋ค์ ๋ณด๊ธฐ ์ค ํธ๋์ญ์ ์ ํน์ง์ ๋ํ ์ค๋ช ์ค ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์์์ฑ(Atomicity) : ํธ๋์ญ์
๋ด์ ๋ชจ๋ ๋ฌธ์ฅ์ด ๋ชจ๋(ALL) ๋ฐ์๋๊ฑฐ๋, ํน์ ์ผ๋ถ๊ฐ ๋ฐ์ ๋์ด์ผ ํ๋ค. 2) ์์์ฑ : ํธ๋์ญ์ ์ ์ํ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅ ๋ ์ ์๋ค. 3) ์ผ๊ด์ฑ : ์ฌ๋ฌ ๊ฐ์ ํธ๋์ญ์ ๋ค์ด ๋์์ ์ํ๋ ๋, ํ ๊ฐ์ ํธ๋์ญ์ ์ ๋ณต์ฌ๋ณธ์ ์ ์งํ๋ค. 4) ์ง์์ฑ : Commit์ด ์๋ฃ๋๋ฉด ์๊ตฌ์ ์ผ๋ก ์ ์ฅ์ ๋ณด์ฅํด์ผ ํ๋ค. |
๋ฌธ์ 42. CROSS JOIN๊ณผ NATURAL JOIN์ ์ฐจ์ด์ ์ ๋ํด์ ์๋ชป ์ค๋ช ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) NATURAL JOIN์ ํ
์ด๋ธ ๊ฐ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ๋ชจ๋ ์นผ๋ผ๋ค์ ๋ํด ์กฐ์ธ์ ์ํํ๋ค. 2) CROSS JOIN์ ํ ์ด๋ธ ๊ฐ ์กฐ๊ฑด์ด ์๋ ๊ฒฝ์ฐ ์๊ธธ ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ์ ์กฐํฉ์ ์๋ฏธํ๋ค. 3) CROSS JOIN๊ณผ NATURAL JOIN์ WHERE์ ์์ JOIN์กฐ๊ฑด์ ๊ฑธ ์ ์๋ค. 4) CROSS JOIN์ WHERE์ ์ JOIN์กฐ๊ฑด์ ์ถ๊ฐํ ์ ์๋ค. |
๋ฌธ์ 43. ๋ค์ ์ฃผ์ด์ง ๋ฐ์ดํฐ์ ๋ํด์ ์๋์ ๊ณ์ธตํ SQL๋ฌธ์ ์คํํ์์ ๋์ ๊ฒฐ๊ณผ๊ฐ์ด ์๋์ ๊ฐ์ ๋ ๊ณ์ธตํ SQL๋ฌธ์์ ๋น์นธ์ ๋ค์ด๊ฐ ๊ฒ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TEST43]
EMPNO MGR
-------------
8000 NULL
7788 7566
7566 8000
7876 7788
[SQL]
SELECT LEVEL, LPAD(' ', 4 * (LEVEL-1)) ||
EMPNO EMPLOYEE, MGR MANAGER,
CONNECT_BY_ISLEAF AS LEAF FROM TEST43
START WITH ( ใฑ )
CONNECT BY PRIOR ( ใด );
[RESULT]
LEVEL EMPLOYEE MANAGER LEAF
---------- -------------------- ---------- ----------
1 8000 0
2 7566 8000 0
3 7788 7566 0
4 7876 7788 1
1) ใฑ. MGR ใด. MGR = EMPNO 2) ใฑ. EMPNO ใด. MGR = EMPNO 3) ใฑ. EMPNO IS NULL ใด. EMPNO = MGR ใ 4) ใฑ. MGR IS NULL ใด. EMPNO = MGR |
- - - - - - - - ์ฃผ๊ด์ - - - - - - - -
๋ฌธ์ 44. ๋ค์ ์ฃผ์ด์ง ๋๊ฐ์ ํ ์ด๋ธ์ ๋ํด์ ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ์ด ๋ฐํ๋๋๋ก ์๋์ SQL๋ฌธ์ ๋น์นธ์ ๋ค์ด๊ฐ ๊ฐ์ ์ ์ผ์์ค.์ ๋ตํ์ธ๐ผ
[TEST44_1]
STUDENTNO
---------
10
20
30
[TEST44_2]
GRADE
---------
50
60
70
[๊ฒฐ๊ณผ๊ฐ]
GRADE STUDENTNO SUM(B.GRADE)
---------- ---------- ------------
50 10 50
50 20 50
50 30 50
50 150
60 10 60
60 20 60
60 30 60
60 180
70 10 70
70 20 70
70 30 70
70 210
[SQL]
SELECT B.GRADE, A.STUDENTNO, SUM(B.GRADE)
FROM TEST44_1 A, TEST44_2 B
GROUP BY ( );
โ๏ธ
๋ฌธ์ 45. Oracle ํ๊ฒฝ์์ ์ฃผ์ด์ง ํ ์ด๋ธ์ ์๋์ ๊ฒฐ๊ณผ์ ๊ฐ์ด ์ ๋ ฌํ๊ณ ์ ํ ๋, SQL๋ฌธ์ ๋น์นธ์ ๋ค์ด๊ฐ ๊ฐ์ ์์ฑํ์์ค.
[TEST45]
C1 C2
----------
10 100
10 200
10 NULL
20 100
20 NULL
20 200
[RESULT]
C1 C2
----------
10 200
10 100
10 NULL
20 200
20 100
20 NULL
[SQL]
SELECT C1, C2
FROM SQLD_02
ORDER BY C1, C2 DESC ( );
โ๏ธ์ ๋ตํ์ธ๐ผ
๋ฌธ์ 46. ๋ค์์ JOIN ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ์ฌ๋ฐ๋ฅธ ๊ฒ์?
[TEST46_1]
COL1 COL2
-------------
1 2
2 2
3 3
[TEST46_2]
COL1 COL2
-------------
1 2
2 4
4 5
[RESULT]
TEST46_1. TEST46_1. TEST46_2. TEST46_2.
COL1 COL2 COL1 COL2
----------------------------------------------
1 2 1 2
2 2 2 4
3 3 NULL NULL
SELECT * FROM TEST46_1 ( ) TEST46_2
ON TEST46_1.COL1 = TEST46_2.COL1;
โ๏ธ์ ๋ตํ์ธ๐ผ
๋ฌธ์ 47. ์๋์ ์ํ ๋ง์คํฐ ํ ์ด๋ธ์ ๋ํ ์ํID '001' ์ ์ต์ข ์ํ๋ช ์ ๋ฌด์์ธ๊ฐ? ์ ๋ตํ์ธ๐ผ
[ํ
์ด๋ธ : ์ํ๋ง์คํฐ]
์ํID ์ํ๋ช
-------------
001 TV
[SQL]
BEGIN TRANSACTION;
SAVE TRANSACTION SP1;
UPDATE ์ํ๋ง์คํฐ SET ์ํ๋ช
= 'LG-TV' WHERE ์ํID = '001';
SAVE TRANSACTION SP2;
UPDATE ์ํ๋ง์คํฐ SET ์ํ๋ช
= 1 'ํ๋ฉด-TV' WHERE ์ํID = '001';
ROLLBACK TRANSACTION SP2;
COMMIT;
โ๏ธ
๋ฌธ์ 48. ํ ์ด๋ธ์ ์์ฑํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋ SQL๋ฌธ์ ์์ฑํ์์ค.
[SQL]
( ) CREATE TABLE TO USER;
โ๏ธ์ ๋ตํ์ธ๐ผ
๋ฌธ์ 49. ์ฃผ์ด์ง ๋ฐ์ดํฐ์ ๋ํด์ ์๋์ SQL๋ฌธ์ ์ํํ์์ ๋์ ๊ฒฐ๊ณผ๊ฐ์ด ์๋์ ๊ฒฐ๊ณผ์ ๊ฐ์๋ ( )๋น์นธ์ ๋ค์ด๊ฐ ๊ฐ์ ์ ์ผ์์ค.
[TEST49]
CREATE TABLE TEST49(
COL1 VARCHAR(10),
COL2 VARCHAR(10),
COL3 NUMBER(10)
);
INSERT INTO TEST49 VALUES('A','๊ฐ',10);
INSERT INTO TEST49 VALUES('A','๊ฐ',20);
INSERT INTO TEST49 VALUES('A','๋ค',25);
INSERT INTO TEST49 VALUES('B','๊ฐ',10);
INSERT INTO TEST49 VALUES('B','๋',30);
INSERT INTO TEST49 VALUES('B','๋',20);
INSERT INTO TEST49 VALUES('B','๋',60);
INSERT INTO TEST49 VALUES('C','๋ผ',30);
[SQL]
SELECT NTILE_2, COUNT(*) AS ROWCNT
FROM (
SELECT COL1, COL2, COL3, NTILE(3) OVER(ORDER BY COL3) AS NTILE_2
FROM TEST49
)
GROUP BY NTILE_2;
[RESULT]
NTILE_2 ROWCNT
----------------
1 3
2 3
( ) ( )
โ๏ธ์ ๋ตํ์ธ๐ผ
๋ฌธ์ 50. ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ์๋์ ๊ฐ์ด ๊ฒฐ๊ณผ๊ฐ์ด ๋ฐํ๋๋๋ก ์๋์ SQL๋ฌธ์ ( ? )์ ๋ค์ด๊ฐ ์๋์ฐ ํจ์๋ฅผ ์ ์ผ์์ค.
[SQLD_37_50]
ENAME SAL
----------------
์ ๋น 1000
๊ด์ฐ 1100
์ฅ๋น 1200
์ ๊ฐ๋ 1300
์กฐ์ด 1400
ํฉ์ถฉ 1500
[RESULT]
ENAME SAL SIM_CNT
-----------------------------
์ ๋น 1000 2
๊ด์ฐ 1100 2
์ฅ๋น 1200 2
์ ๊ฐ๋ 1300 2
์กฐ์ด 1400 2
ํฉ์ถฉ 1500 1
[SQL]
SELECT ENAME, SAL,
COUNT(*) OVER (ORDER BY SAL ( ? )
BETWEEN 50 PRECEDING AND 100 FOLLOWING
)AS SIM_CNT
FROM SQLD_37_50;
โ๏ธ์ ๋ตํ์ธ๐ผ
๐SQLD. ์ 37 ํ ๊ธฐ์ถ ๋ฌธ์ (์ด 50) - ์ ๋ต / ํด์ค
1. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ๋๋ฉ์ธ(Domain)์ด๋, ์ฑ๋ณ์ด๋ผ๋ ์์ฑ(Attribute)์์ ๊ฐ์ด ๊ฐ์ง ์ ์๋ ํ์ฉ๋ฒ์๋ฅผ ๋ํ๋ธ๋ค.
์ฆ, ์ฑ๋ณ์ ๊ฒฝ์ฐ ๋จ์๋ "M", ์ฌ์๋ "F" ์ ๊ฐ์ ๊ฐ์ง๋ค.
๋๋ฉ์ธ(Domain)์ ํน์ง
- ๋ฆด๋ ์ด์ ์ ์์ฑ์ด ๊ฐ์ง ์ ์๋ ํ์ฉ๋ ๊ฐ์ ๋ฒ์๋ฅผ ์๋ฏธํ๋ค.- ์์ฑ๋ช ๊ณผ ๋๋ฉ์ธ๋ช ์ ํญ์ ๋์ผํ ํ์๋ ์๋ค.- ๋ชจ๋ ์์ฑ๋ค์ ๋๋ฉ์ธ์ ์์๊ฐ ์ด์ด์ผ ํ๋ค.
- ์นด๋๋ ๋ฆฌํฐ(Cardinality) : ํํ(ํ)์ = ์ธ์คํด์ค์ ์
์)
์ค๋ณต๋๊ฐ โ๋ฎ์ผ๋ฉดโ ์นด๋๋๋ฆฌํฐ๊ฐ โ๋๋คโ๊ณ ํํํ๋ค.
์ค๋ณต๋๊ฐ โ๋์ผ๋ฉดโ ์นด๋๋๋ฆฌํฐ๊ฐ โ๋ฎ๋คโ๊ณ ํํํ๋ค.
์นด๋๋๋ฆฌํฐ๋ ์ ์ฒด ํ์ ๋ํ ํน์ ์ปฌ๋ผ์ ์ค๋ณต ์์น๋ฅผ ๋ํ๋ด๋ ์งํ์ด๋ค.
์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ ๊ฐ์ ๊ฒฝ์ฐ๋ ์ค๋ณต๋๋ ๊ฐ์ด ์์ผ๋ฏ๋ก ์นด๋๋๋ฆฌํฐ๊ฐ ๋๋ค๊ณ ํ ์ ์๋ค.
์ด์ ๋นํด ์ด๋ฆ๊ฐ์ ๊ฒฝ์ฐ๋ โ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ์ ๋นํดโ ์ค๋ณต๋๋ ๊ฐ์ด ๋ง์ผ๋ฏ๋ก,
์ด๋ฆ์ โ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ์ ๋นํดโ ์นด๋๋๋ฆฌํฐ๊ฐ ๋ฎ๋ค๊ณ ํ ์ ์๋ค.
โ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ์ ๋นํดโ๋ผ๋ ๋ถ๋ถ์ ๊ฐ์กฐํ ์ด์ ๋, ์นด๋๋๋ฆฌํฐ๋ ์๋์ ์ธ ๊ฐ๋ ์ผ๋ก ์ดํดํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ธ์คํด์ค(instance) : ๊ฐ
- ์ฐจ์(Degree) : ํ ์ด๋ธ ์ปฌ๋ผ์ ๊ฐฏ์(์์ฑ์ ์) ์ด๋ค.
2. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ธ๋ํค(Foreign key)๋ ์ฃผ ๋ฆด๋ ์ด์ ์ ์ฐธ์กฐํ๋ ํค๋ฅผ ์๋ฏธํ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด ABC๊ธฐ์ ์ ์ง์์ด ํน์ ๋ถ์์ ์์๋์ด ์๋ค๋ฉด, ๋ถ์ ๋ฆด๋ ์ด์ ์ ์ฐธ์กฐํ๋ ์ง์ ๋ฆด๋ ์ด์ ์ ๋ถ์์ฝ๋๊ฐ ์ธ๋ํค์ด๋ค. ์ด๋ฌํ ์ธ๋ํค๋ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์ค์ํ๊ธฐ ์ํด์ ์ฌ์ฉ๋๋ค.
3. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :
๋ณํ๋ฐฉ๋ฒ | ์ค๋ช |
One To One Type | - ์ํผํ์
๊ณผ ์๋ธํ์
์ ๊ฐ๋ณ ํ
์ด๋ธ๋ก ๋์ถํ๋ค. - ํ ์ด๋ธ์ ์๊ฐ ๋ง์์ ์กฐ์ธ์ด ๋ง์ด ๋ฐ์ํ๊ณ ๊ด๋ฆฌ๊ฐ ์ด๋ ต๋ค. |
Plus Type | - ์ํผํ์
๊ณผ ์๋ธํ์
ํ
์ด๋ธ๋ก ๋์ถํ๋ค. - ์กฐ์ธ์ด ๋ฐ์ํ๊ณ ๊ด๋ฆฌ๊ฐ ์ด๋ ต๋ค. |
Single Type | - ์ํผํ์
๊ณผ ์๋ธํ์
์ ํ๋์ ํ
์ด๋ธ๋ก ๋์ถํ๋ ๊ฒ์ด๋ค. - ์กฐ์ธ์ฑ๋ฅ์ด ์ข๊ณ ๊ด๋ฆฌ๊ฐ ํธ๋ฆฌํ์ง๋ง, IO ์ฑ๋ฅ์ด ๋์๋ค. |
4. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :
ํน์ง | ์ค๋ช |
์ถ์ํ(Abstraction) | ํ์ค์ธ๊ณ๋ฅผ ๊ฐ๋ตํ๊ฒ ํํํ๋ค. |
๋จ์ํ(Simple) | ๋๊ตฌ๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ํํํ๋ค. |
๋ช ํ์ฑ(Clarity) | ๋ช ํํ๊ฒ ์๋ฏธ๊ฐ ํด์๋์ด์ผ ํ๊ณ ํ๊ฐ์ง ์๋ฏธ๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค. |
5. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ํฐํฐ(Entity)๋ ์งํฉ์ ํน์ฑ์ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค. ๋ณธ ์๋๋ฆฌ์ค์์๋ ํ์๊ฐ ์ํฐํฐ์ด๊ณ ํ์์ด๋ฆ, ์ฃผ์, ์ ํ๋ฒํธ, ๋์ด ๋ฑ์ ์์ฑ์ ํด๋น๋๋ค.
6. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : ์์ฑ์ ์ข ๋ฅ๋ ๊ธฐ๋ณธ์์ฑ, ์ค๊ณ์์ฑ, ํ์์์ฑ์ด ์์ผ๋ฉฐ, ๋ณธ ๋ฌธ์ ์์ ๊ธ์ก์ ๊ธฐ๋ณธ์์ฑ์ ํด๋น๋๊ณ ๊ธฐ๋ณธ์์ฑ์ ๊ณ์ฐ์ด๋ ๋ณํ์ผ๋ก ์๋กญ๊ฒ ๋ง๋ค์ด์ง ์ฃผ๋ฌธํฉ๊ณ๋ ํ์์์ฑ(Derived Attribute)์ด ๋๋ค.
์์ฑ์ ์ข ๋ฅ | ์ค๋ช |
๊ธฐ๋ณธ์์ฑ | - ๋น์ฆ๋์ค ํ๋ก์ธ์ค์์ ๋์ถ๋๋ ๋ณธ๋์ ์์ฑ์ด๋ค. - ํ์ID, ์ด๋ฆ, ๊ณ์ข๋ฒํธ, ์ฃผ๋ฌธ์ผ์ ๋ฑ์ด ์๋ค. |
์ค๊ณ์์ฑ | - ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๊ณผ์ ์์ ๋ฐ์๋๋ ์์ฑ์ด๋ค. - ์ ์ผํ ๊ฐ์ ๋ถ์ฌํ๋ค. - ์ํ์ฝ๋, ์ง์ ์ฝ๋ ๋ฑ์ด ์๋ค. |
ํ์์์ฑ | - ๋ค๋ฅธ ์์ฑ์ ์ํด์ ๋ง๋ค์ด์ง๋ ์์ฑ์ด๋ค. - ํฉ๊ณ, ํ๊ท ๋ฑ์ด ์๋ค. |
7. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : GROUP๋ฆด๋ ์ด์ ๊ณผ ACCOUNT๋ฆด๋ ์ด์ ์ ๊ด๊ณ๋ ๋น์๋ณ์ ๊ด๊ณ์ด๋ค.(์ ์ ํํ)
์๋ณ์ ๊ด๊ณ | ๋น์๋ณ์ ๊ด๊ณ | |
๋ชฉ์ | ๋ถ๋ชจ ํ
์ด๋ธ์ ๊ธฐ๋ณธํค ๋๋ ์ ๋ํฌ ํค๋ฅผ ์์ ํ
์ด๋ธ์ด ์์ ์ ๊ธฐ๋ณธํค๋ก ์ฌ์ฉํ๋ ๊ด๊ณ์
๋๋ค. ๋ถ๋ชจ ํ ์ด๋ธ์ ํค๊ฐ ์์ ์ ๊ธฐ๋ณธํค์ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ๋ถ๋ชจ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํด์ผ ์์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ ์ ์์ต๋๋ค. ์ฆ, ๋ถ๋ชจ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ์์ ๋ฐ์ดํฐ๋ ์๊ธธ ์ ์์ต๋๋ค.(๊ฐํ ์ฐ๊ฒฐ๊ด๊ณ) |
๋ถ๋ชจ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค ๋๋ ์ ๋ํฌ ํค๋ฅผ ์์ ์ ๊ธฐ๋ณธํค๋ก ์ฌ์ฉํ์ง ์๊ณ , ์ธ๋ ํค๋ก ์ฌ์ฉํ๋ ๊ด๊ณ (์ฝํ ์ฐ๊ฒฐ๊ด๊ณ) |
๊ธฐ๋ณธํค (Primary key) |
๋ถ๋ชจ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธํค๊ฐ ์์ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธํค๋ก ์ฌ์ฉ๋จ | ๋ถ๋ชจ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธํค๊ฐ ์์ ๋ฆด๋ ์ด์ ์ ์ผ๋ฐ ์์ฑ์ผ๋ก ์ฌ์ฉ๋จ |
ํ๊ธฐ๋ฒ | ์ค์ ํํ | ์ ์ ํํ |
8. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ๊ด๊ณ์ ๊ธฐ์์ฑ์ ๋ํ๋ด๋ ๊ฐ๋ ์ ๊ด๊ณ์ฐจ์์ ํด๋นํ๋ค. ์ฆ, ์นด๋๋๋ฆฌํฐ(Cardinality)๋ ํ๋์ ๋ฆด๋ ์ด์ ์์ ํฌํ์ ์ ์ฒด ๊ฐ์๋ฅผ ์๋ฏธํ๋ค.
9. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
์ฑ๋ฅ์ ๊ณ ๋ คํ ๋ฐ์ดํฐ๋ชจ๋ธ๋ง ์์
- ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ํ ๋ ์ ๊ทํ๋ฅผ ์ ํํ๊ฒ ์ํ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฉ๋์ฐ์ ์ํ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋๋ ํธ๋์ญ์ ์ ํ ํ์
- ์ฉ๋๊ณผ ํธ๋์ญ์ ์ ์ ํ์ ๋ฐ๋ผ ๋ฐ์ ๊ทํ ์ํ
- ์ด๋ ฅ๋ชจ๋ธ์ ์กฐ์ , PK/FK ์กฐ์ , ์ํผํ์ /์๋ธํ์ ์กฐ์ ์ํ
- ์ฑ๋ฅ๊ด์ ์์ ๋ฐ์ดํฐ ๋ชจ๋ธ ๊ฒ์ฆ
10. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค :
๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์์ด์ ์ฃผ์๋ณ์๋ฅผ ๋์ถํ๋ ๊ฒ์ ์ค์ํ ์์ ์ด๋ค. ์ฃผ์๋ณ์๋ฅผ ๋์ถํ๊ธฐ ์ํ ๊ธฐ์ค์ ์๋์ ๊ฐ๋ค.
- ํด๋น ์ ๋ฌด์์ ์์ฃผ ์ด์ฉ๋๋ ์์ฑ์ ์ฃผ์๋ณ์๋ก ์ ์ํ๋ค.
- ๋ช ์นญ, ๋ด์ญ ๋ฑ๊ณผ ๊ฐ์ด ์ด๋ฆ์ผ๋ก ๊ธฐ์ ๋๋ ๊ฒ๋ค์ ๊ฐ๋ฅํ๋ฉด ์ฃผ์๋ณ์๋ก ์ง์ ํ์ง ์๋๋ค.
- ๋ณตํฉ์ผ๋ก ์ฃผ์๋ณ์๋ฅผ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ๋๋ฌด ๋ง์ ์์ฑ์ด ํฌํจ๋์ง ์๋๋ก ํ๋ค.
11. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ์จ๋ผ์ธ ํธ๋์ญ์ ์ฒ๋ฆฌ(OLTP)์๋ ํด์์กฐ์ธ ๋ณด๋ค๋ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ธํ ๋ ์ ๋ฆฌํ ๊ตฌ์กฐ์ธ Nested Loop ๋ฐฉ์์ด ์ ์ฉํ๋ค.
12. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :
๋ฐฉ ๋ฒ | ์ค ๋ช |
์ค์ฒฉ ๋ฐ๋ณต ์กฐ์ธ (Nested Loop Join) |
- ์ข์ ๋ฒ์์ ์ ๋ฆฌ - ์ ๋ฆฌ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ฉฐ, Random Access ์์ฃผ - ํํ(Driven) ํ ์ด๋ธ์๋ ์กฐ์ธ์ ์ํ ์ธ๋ฑ์ค๊ฐ ์์ฑ๋์ด ์์ด์ผ ํจ - ์คํ์๋ = ์ ํ ํ ์ด๋ธ ์ฌ์ด์ฆ * ํํ ํ ์ด๋ธ ์ ๊ทผํ์ |
์์ธ๋ ์ค์ฒฉ ๋ฐ๋ณต ์กฐ์ธ, ๋จ์ผ ๋ฐ๋ณต ์กฐ์ธ (Single Loop Join) |
- ํํ(Driven) ํ
์ด๋ธ์ ์กฐ์ธ ์์ฑ์ ์ธ๋ฑ์ค๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ ์ฌ์ฉ - ์ ํ ํ ์ด๋ธ์ ๊ฐ ๋ ์ฝ๋๋ค์ ๋ํ์ฌ ํํ ํ ์ด๋ธ์ ์ธ๋ฑ์ค ์ ๊ทผ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๊ฒ์ ํ ์กฐ์ธํ๋ ๋ฐฉ์ |
์ ๋ ฌ ํฉ๋ณ ์กฐ์ธ (Sort Merge Join) |
- Sort Merge ์กฐ์ธ์ ํด๋น ํ
์ด๋ธ์ ์ธ๋ฑ์ค๊ฐ ์์๋ ์ํ์ด ๋๋ค. - ํ ์ด๋ธ์ ์ ๋ ฌ(Sort) ํ ํ์ ์ ๋ ฌ๋ ํ ์ด๋ธ์ ๋ณํฉ(Merge) ํ๋ฉด์ ์กฐ์ธ์ ์คํํ๋ค. - ์กฐ์ธ ์ฐ๊ฒฐ๊ณ ๋ฆฌ์ ๋น๊ต ์ฐ์ฐ์๊ฐ ๋ฒ์ ์ฐ์ฐ( >, < )์ธ ๊ฒฝ์ฐ Nested Loop ์กฐ์ธ๋ณด๋ค ์ ๋ฆฌ - ๋ ๊ฒฐ๊ณผ์งํฉ์ ํฌ๊ธฐ๊ฐ ์ฐจ์ด๊ฐ ๋ง์ด ๋๋ ๊ฒฝ์ฐ์๋ ๋นํจ์จ์ |
ํด์ ์กฐ์ธ (Hash Join) |
- ํด์(Hash)ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ ํ
์ด๋ธ์ ์๋ฃ๋ฅผ ๊ฒฐํฉํ๋ ์กฐ์ธ ๋ฐฉ์ - Nested Loop ์กฐ์ธ๊ณผ Sort Merge ์กฐ์ธ์ ๋ฌธ์ ์ ์ ํด๊ฒฐ - ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ ์๋นํ ํฐ hash area๋ฅผ ํ์๋ก ํจ์ผ๋ก, ๋ฉ๋ชจ๋ฆฌ์ ์ง๋์น ์ฌ์ฉ์ผ๋ก ์ค๋ฒํค๋ ๋ฐ์ ๊ฐ๋ฅ์ฑ |
13. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ๋ถ์๋ณ ํฉ๊ณ (์๊ณ) + ์ ์ฒดํฉ๊ณ ์ด๋ฏ๋ก ROLLUP(DEPTNO, JOB)
14. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : MERGE INTO๋ฌธ์ ํน์ ํค์ ๋ํด์ ๋ ์ฝ๋๊ฐ ์์ ๋์ ์์ ์ฌํญ์ ๋ํด์ UPDATE๋ฅผ ํ๊ณ , ๋ ์ฝ๋๊ฐ ์์ผ๋ฉด ์๋กญ๊ฒ INSERT๋ฅผ ํ ์ ์๋ ๊ตฌ๋ฌธ์ด๋ค. DELETE ์ ์ MERGE UPDATE ์ ๋ก ๊ฐฑ์ ๋ ํ์ ๋์์ผ๋ก ์ํ๋๋ฉฐ, ๊ฐฑ์ ๋ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ์ ์ญ์ ํ๋ค. (์ ๊ตฌ๋ฌธ์ DELETE ๋ ์คํ๋์ง ์๋๋ค.)
SQL> MERGE INTO TEST1
USING TEST2
ON (TEST1.COL1 = TEST2.COL1)
WHEN MATCHED THEN
UPDATE SET TEST1.COL3 = 4
WHERE TEST1.COL3 = 2
DELETE WHERE TEST1.COL3 <= 2
WHEN NOT MATCHED THEN
INSERT(TEST1.COL1, TEST1.COL2, TEST1.COL3)
VALUES(TEST2.COL1, TEST2.COL2, TEST2.COL3);
3 rows merged.
SQL> select*from test1;
COL1 COL2 COL3
--------------------
A X 1
B Y 4
C Z 3
E ๋ 5
D ๊ฐ 4
15. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ ํ๋ง์คํฐ์ ์ฃผ๋ฌธ์ด๋ ฅ์ ์ง์ ์กฐ์ธํ๋ฉด ์กฐ์ธ Key๊ฐ ์์ผ๋ฏ๋ก ์นดํ ์์ ๊ณฑ์ด ๋ฐ์ํ๋ค.
16. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : CONNECT BY ๊ณ์ธตํ ์กฐํ PRIOR๊ฐ ์๋ ์ชฝ์์ -> PRIOR์๋ ์ชฝ์ผ๋ก
์ฒ๋ฆฌ ์์
1. Start with
2. Connect by
3. Where
*start 3๋ถํฐ ์์ํด์ ์ด3๊ฑด ์ด์๋๋ฐ
where์ ์์ 3์ ์ ์ธํ์ผ๋ 2๊ฑด์ด ์กฐํ๋๋ค.
17. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ์์ SQL๋ฌธ์์ NVL2 ํจ์์ ์ฒซ๋ฒ์งธ ์ธ์๊ฐ์ด NULL์ด๊ธฐ ๋๋ฌธ์ 0.2๋ฅผ ๋ฐํํ๋ค.
14 = 10+20*0.2
SQL> SELECT 10+20*(NVL2(NULL, 0.1, 0.2))FROM DUAL;
10+20*(NVL2(NULL,0.1,0.2))
--------------------------
14
NULL ํจ์ | ์ค๋ช |
NVL ํจ์ | - NULL์ด๋ฉด ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ฐ๊พธ๋ ํจ์์ด๋ค. - "NVL(MGR, 0)"์ MGR์นผ๋ผ์ด NULL์ด๋ฉด 0์ผ๋ก ๋ฐ๊พผ๋ค. |
NVL2 ํจ์ | - NVLํจ์์ DECODE๋ฅผ ํ๋๋ก ๋ง๋ ๊ฒ์ด๋ค. - "NVL2(MGR, 1, 0)"์ MGR์นผ๋ผ์ด NULL์ด ์๋๋ฉด 1, NULL์ด๋ฉด 0์ ๋ฐํํ๋ค. |
NULLIF ํจ์ | - ๋ ๊ฐ์ ๊ฐ์ด ๊ฐ์ผ๋ฉด NULL์ ๊ฐ์ง ์์ผ๋ฉด ์ฒซ ๋ฒ์งธ ๊ฐ์ ๋ฐํํ๋ค. - "NULLIF(exp1, exp2)"์ exp1๊ณผ exp2๊ฐ ๊ฐ์ผ๋ฉด NULL์, ๊ฐ์ง ์์ผ๋ฉด exp1์ ๋ฐํํ๋ค. |
COALESCE | - "COALESCE(mgr, 1)"์ mgr์ด NULL์ด๋ฉด 1์ ๋ฐํํ๋ค. |
18. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : COALESCE ํจ์๋ ์ ๋ ฅ๋ ์ธ์ ์ค์์ NULL์ด ์๋ ์ฒซ ๋ฒ์งธ ์นผ๋ผ์ ๊ฐ์ ๋ฐํํ๋ค.
SQL> SELECT COALESCE(1,2,3)FROM DUAL;
COALESCE(1,2,3)
---------------
1
19. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : A ์นผ๋ผ๋ณ๋ก ๊ทธ๋ฃนํํ ์ง๊ณ ํจ์์์ NULL๊ฐ์ ์ ์ธํ๊ณ ์ฐ์ฐ์ ์ํํ๋ค.
20. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : SAVEPOINT ์ด๋ฆ์ด ๊ฐ์๋ ๋ง์ง๋ง์ ์ ์ฅํ ๊ฐ์ผ๋ก ROLLBACK ํ๋ค.
21. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : count๋ 4๊ฐ์ ํ์ด ์ถ๋ ฅ (2, 3, 4 ๋ฒ์ ๊ฐ์ 7.5๊ฐ ์ถ๋ ฅ๋๋ค.)
NVL ํจ์๋ ๊ฐ์ด NULL์ธ ๊ฒฝ์ฐ ์ง์ ๊ฐ์ ์ถ๋ ฅํ๊ณ , NULL์ด ์๋๋ฉด ์๋ ๊ฐ์ ๊ทธ๋๋ก ์ถ๋ ฅํ๋ค.
- ํจ์ : NVL("๊ฐ", "์ง์ ๊ฐ")
NVL2 ํจ์๋ NULL์ด ์๋ ๊ฒฝ์ฐ ์ง์ ๊ฐ1์ ์ถ๋ ฅํ๊ณ , NULL์ธ ๊ฒฝ์ฐ ์ง์ ๊ฐ2๋ฅผ ์ถ๋ ฅํ๋ค.
- ํจ์ : NVL2("๊ฐ", "์ง์ ๊ฐ1", "์ง์ ๊ฐ2") // NVL2("๊ฐ", "NOT NULL", "NULL")
22. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : 3๋ฒ์ ๊ฐ MGR๋ณ๋ก ๊ธ์ฌ์ ํ๊ท ์ ๊ณ์ฐํ๊ธฐ ์ ์ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ ์ํํ ๋ค์์ ๊ธ์ฌ์ ํ๊ท ์ ๊ณ์ฐํ๋ค.
์ฆ, ๊ฐ MGR ํํฐ์ ๋ด์์ ๋ ์ง ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ ์ํํ์์ ๋, ํํฐ์ ๋ด์์ ์์ ํ ๊ฑด, ํ์ฌ ํ ๋ค์ ํ ๊ฑด ์ฌ์ด ๊ธ์ฌ์ ํ๊ท ์ ๊ณ์ฐํ๋ค.
์๋์ฐ์ ์ ROWS or RANGE ๋ ์ค ํ๋๋ฅผ ์ ํํ๊ณ BETWEEN๋ ์ ํ์ ์ผ๋ก ์ฌ์ฉํด์
๊ฒฐ๊ณผ์ ๋ํ ๋ฒ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
BETWEEN์ด ์์๊ฒฝ์ฐ
ROWS|RANGE
BETWEEN UNBOUNDED PRECEDING | CURRENT ROW | ์์๊ฐ PRECEDING ๋๋ FOLLOWING
AND UNBOUNDED FOLLOWING | CURRENT ROW | ์์๊ฐ PRECEDING ๋๋ FOLLOWING
BETWEEN์ด ์์๊ฒฝ์ฐ
ROWS|RANGE UNBOUNDED PRECEDING | CURRENT ROW | ์์๊ฐ PRECEDING
ํค์๋ | ์ค๋ช |
ROWS | ๋ฌผ๋ฆฌ์ ์ธ ํ ๋จ์ |
RANGE | ๋ ผ๋ฆฌ์ ์ธ ํ ์งํฉ |
CURRENT ROW | ํ์ฌ ํ |
UNBOUNDED PRECEDING | ์ฒซ ๋ฒ์งธ ํ |
UNBOUNDED FOLLOWING | ๋ง์ง๋ง ํ |
[์์น] PRECEDING | [์์น] ์ด์ ํ |
[์์น] FOLLOWING | [์์น] ๋ค์ ํ |
23. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค :
์ฒซ๋ฒ์งธ SQL๋ฌธ์ Null ๊ฐ์ด ์๋ ํ์ธ (10, 10, 10, 20) ํฉ๊ณ 50
๋๋ฒ์งธ SQL๋ฌธ์์ SUM(COL1) = 60, SUM(COL2) = 60, SUM(COL3) = 20, SUM(COL4) = 100
60+60+20+100 ํฉ๊ณ 240
24. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : 4๋ฒ์์ DECLARE์ BEGIN ~ END ๋ฌธ์ ํ์์ง๋ง, EXCEPTION ๋ฌธ์ ์ ํ์ฌํญ์ด๋ค.
[ PL/SQL์ ํน์ง ]
1. PL/SQL์ Block๊ตฌ์กฐ๋ก ๋์ด์์ด ๊ฐ ๊ธฐ๋ฅ๋ณ๋ก ๋ชจ๋ํ๊ฐ ๊ฐ๋ฅํ๋ค.
2. ๋ณ์, ์์ ๋ฑ์ ์ ์ธํ์ฌ SQL๋ฌธ์ฅ ๊ฐ ๊ฐ์ ๊ตํ ํ๋ค.
3. IF, LOOP ๋ฑ์ ์ ์ฐจํ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฐจ์ ์ธ ํ๋ก๊ทธ๋จ์ด ๊ฐ๋ฅํ๋๋ก ํ๋ค.
4. DBMS ์ ์ ์๋ฌ๋ ์ฌ์ฉ์ ์ ์ ์๋ฌ๋ฅผ ์ ์ํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
5. PL/SQL์ Oracle์ ๋ด์ฅ๋์ด ์์ผ๋ฏ๋ก Oracle๊ณผ PL/SQL์ ์ง์ํ๋ ์ด๋ค ์๋ฒ๋ก๋ ํ๋ก๊ทธ๋จ์ ์ฎ๊ธธ ์ ์๋ค.
6. PL/SQL์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค.
7. PL/SQL์ ์ฌ๋ฌ SQL๋ฌธ์ฅ์ Block์ผ๋ก ๋ฌถ๊ณ ํ๋ฒ์ Block์ ๋ถ๋ฅผ ์๋ฒ๋ก ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ํต์ ๋์ ์ค์ผ ์ ์๋ค.
25. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : 4๋ฒ์ ์คํ ๊ฒฐ๊ณผ๋ NULL์ด๋ค. DECODE๋ 2๊ฐ์ ์์ฑ์ ๋น๊ตํ๋ ๊ฒ์ผ๋ก ์์ ์์์๋ '06'๊ณผ 0์ด ๊ฐ์ง์์ผ๋ฏ๋ก NULL์ด ๋ฐํ๋จ
SQL> SELECT SUM(decode('06', 0, price)) AS TOTAL FROM t_order WHERE orderyear BETWEEN '2020' AND '2021';
TOTAL
----------
- ์กฐ๊ฑด์ ์ฃผ๋ ๋ฐฉ๋ฒ์ CASE๋ฌธ๊ณผ IF๋ฌธ์ด ์๋๋ฐ ์ด๋ฌํ ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ๋ฉด ์ฟผ๋ฆฌ๋ฌธ์ด ๊ธธ์ด์ง๊ธฐ ๋๋ฌธ์ ์ค๋ผํด์์๋ ์กฐ๊ฑด์ด ๊ฐ์๋ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์๋ DECODE ํจ์๋ฅผ ์ฌ์ฉํจ
DECODE (๊ฐ, ์กฐ๊ฑด1, ๊ฒฐ๊ณผ1, default_result)
์์ ์์์์ price ๋ฅผ default_result ์ ์์ฑํ๋ฉด ์ ์ฒดํฉ๊ณ๊ฐ ๋์จ๋ค.
SQL> SELECT SUM(decode('06', 0, price, price)) AS TOTAL FROM t_order WHERE orderyear BETWEEN '2020' AND '2021';
TOTAL
----------
15500
DECODE ํจ์๋ ์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ก ๋ค์ด์ค๋ ์นผ๋ผ์ ๊ธฐ์ค์ผ๋ก ๊ฒ์ฌํ๋ค.
๊ฐ์ด ์กฐ๊ฑด1๊ณผ ๊ฐ์ผ๋ฉด ๊ฒฐ๊ณผ1์ ๋ฐํํ๊ณ , ์ด๋ ์กฐ๊ฑด์๋ ํด๋น๋์ง ์์๊ฒฝ์ฐ default_result ๋ฐํํ๋ฉฐ, ์๋ตํ๋ค๋ฉด NULL์ ๋ฐํ
26. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : ๊ณ ์ ํค(Unique Key)๋ก ์ง์ ๋ ๋ชจ๋ ์นผ๋ผ์ NULL ๊ฐ์ ๊ฐ์ง ์๋ ์๋ค.
27. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : EQUI Join์ ํ ์ด๋ธ ๊ฐ์ ์นผ๋ผ ๊ฐ์ด ์ผ์นํ๋ ๊ฒ์ ์กฐํํ๋ ์กฐ์ธ์ผ๋ก >, <, >=, <= ๋ฅผ ์ฌ์ฉํ์ง ์์
Non-EQUI Join ์ด >, <, >=, <= ๋ฅผ ์ฌ์ฉํ๋ ์กฐ์ธ์ผ๋ก ๋๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ์ฌ์ฉํ์ง ์๋ ์กฐ์ธ์ด๋ค.
28. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : CNT ์นผ๋ผ์ ๋ถ๋ฅ์ฝ๋๋ก GROUPING๋ ์งํฉ์ ์๋ณธ์งํฉ์ผ๋ก ํ์ฌ ๋ถ๋ฅ์ฝ๋๋ณ ํ๊ท ์ํ๊ฐ๊ฒฉ์ ์๋ก ๋น๊ตํ๊ณ ํ์ฌ ์ฝํ์ง ์ํ๋ถ๋ฅ์ฝ๋์ ํ๊ท ๊ฐ๊ฒฉ ๋๋น -10000 ~ +10000์ฌ์ด์ ์กด์ฌํ๋ ๋ถ๋ฅ์ฝ๋์ ๊ฐ์๋ฅผ ๊ตฌํ ๊ฒ์ด๋ค.
29. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : NOT IN๋ฌธ ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ ์ค์ NULL์ด ํฌํจ๋๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ์ถ๋ ฅ๋์ง ์๋๋ค.
IN ๋ฌธ์ OR ์กฐ๊ฑด, NOT IN ๋ฌธ์ AND ์กฐ๊ฑด
*NULL์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋น๊ตํ ์ ์๋ ์ฐ์ฐ์ด๊ธฐ ๋๋ฌธ์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถ ํ๊ธฐ ์ํด์๋
์กฐํ ์ปฌ๋ผ์ IS NOT NULL์กฐ๊ฑด์ ์ฃผ์ด NULL์ธ ๋ฐ์ดํฐ๋ฅผ ๋นผ๊ณ ์กฐํํ๋ฉด ๋๋ค.
30. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : NULL์ ๋น๊ต์์ ์ ์ธ๋๊ณ ์ฃผ์ด์ง ํ ์ด๋ธ์ COL1 ์์ฑ๊ฐ 1 or 2 ์ ๊ฐ๋ ํ๋ง ์ถ๋ ฅ๋๋ค.
IN ๋ฌธ์ OR ์กฐ๊ฑด, NOT IN ๋ฌธ์ AND ์กฐ๊ฑด
31. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : '%' ๋ '_' ๋ฑ๊ณผ ๊ฐ์ ํน์๋ฌธ์๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด์๋ ESCAPE ์ฌ์ฉํ๋ค.
SQL> SELECT * FROM TEST WHERE NAME LIKE '%_%';
์์ ๊ฐ์ ์ฟผ๋ฆฌ๋ก ๊ฒ์์ ํ๊ฒ ๋๋ฉด '_' ๋ฌธ์๊ฐ ํฌํจ๋ ๊ฐ์ ๊ฐ์ ธ์ค๋๊ฒ ์๋๋ผ ๋ชจ๋ ํ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
ํน์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด % ๋๋ _์ ๊ฐ์ ํน์ ๋ฌธ์๊ฐ ํฌํจ ๋ ๋ฌธ์์ด ์ด์ ๋ํด LIKE ๊ฒ์์ ์ฌ์ฉํ ์ ์๋๋ฐ์
SQL> SELECT * FROM TEST WHERE NAME LIKE '%@_%' ESCAPE '@';
LIKE ์ฐ์ฐ์ผ๋ก '%' ๋ '_' ๋ฑ๊ณผ ๊ฐ์ ํน์๋ฌธ์๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด์๋ ์์ ๊ฐ์ด ESCAPE ๋ฅผ ์ฌ์ฉํด์ฃผ์ด์ผ๋ง ํฉ๋๋ค.
์์ ์ฟผ๋ฆฌ์์๋ @๋ฅผ ์ฌ์ฉํ์ง๋ง ์๋ฌด ํน์๋ฌธ์๋ ์ฌ์ฉํด๋ ๊ฒฐ๊ณผ๋ ๊ฐ์ต๋๋ค.
32. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ๋ณด๊ธฐ์ SQL๋ฌธ์ COL1, COL2๊ฐ ๊ฐ๊ฐ 10000, 'ABC' ์ธ ํ ๋ง์ ์กฐํํ๋ SQL๋ฌธ์ผ๋ก 1๋ฒ์งธ ํ๋ง ์กฐํ๋๋ค.
33. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : GRANT [๊ถํ] ON [ํ ์ด๋ธ๋ช ] TO [์ ์ ๋ช ];
GRANT : ๊ถํ ๋ถ์ฌ
REVOKE : ๊ถํ ํ์
๋ช ๋ น์ด์ ์ข ๋ฅ | ๋ช ๋ น์ด | ์ค๋ช |
๋ฐ์ดํฐ ์กฐ์์ด (DML : Data Manipulation Language) |
SELECT | ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ๊ฒ์ํ๊ธฐ ์ํ ๋ช ๋ น์ด๋ฅผ ๋งํ๋ ๊ฒ์ผ๋ก RETRIEVE ๋ผ๊ณ ๋ ํ๋ค. |
INSERT UPDATE DELETE |
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๋ค์ด ์๋ ๋ฐ์ดํฐ์ ๋ณํ์ ๊ฐํ๋ ์ข ๋ฅ์ ๋ช ๋ น์ด๋ค์ ๋งํ๋ค. ์๋ฅผ ๋ค์ด ํ ์ด๋ธ์ ์๋ก์ด ํ์ ์ง์ด๋ฃ๊ฑฐ๋, ์ํ์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์์ ํ๋ ๊ฒ๋ค์ ๋ช ๋ น์ด๋ค์ DML์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. | |
๋ฐ์ดํฐ ์ ์์ด (DDL : Data Definition Language) |
CREATE ALTER DROP RENAME |
ํ ์ด๋ธ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ๋ช ๋ น์ด๋ค๋ก ๊ตฌ์กฐ๋ฅผ ์์ฑ, ๋ณ๊ฒฝ, ์ญ์ ๋ฐ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๊ด๋ จ๋ ๋ช ๋ น์ด๋ค์ DDL์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. |
๋ฐ์ดํฐ ์ ์ด์ด (DCL : Data Control Language) |
GRANT REVOKE |
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ณ ๊ฐ์ฒด๋ค์ ์ฌ์ฉํ๋๋ก ๊ถํ์ ์ฃผ๊ณ ํ์ํ๋ ๋ช ๋ น์ด๋ฅผ DCL์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. |
ํธ๋์ญ์
์ ์ด์ด (TCL : Transaction Control Language |
COMMIT ROLLBACK |
๋ ผ๋ฆฌ์ ์ธ ์์ ์ ๋จ์๋ฅผ ๋ฌถ์ด์ DML์ ์ํด ์กฐ์๋ ๊ฒฐ๊ณผ๋ฅผ ์์ ๋จ์(ํธ๋์ญ์ ) ๋ณ๋ก ์ ์ดํ๋ ๋ช ๋ น์ด๋ฅผ ๋งํ๋ค. |
34. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค :
FROM์ ์ ์๋ ์ธ๋ผ์ธ๋ทฐ ์ ์คํ๊ฒฐ๊ณผ 20, 7500 ๊ณผ 10, 5000 ์ด ์กฐํ๋ํ WHERE TEST34_2 BETWEEN๊ตฌ๋ก ์กฐํํ๋ฉด 5000 ~ 5999 ์ฌ์ด์ ์๋ JUMUN 10 VIP๊ฐ ์ถ๋ ฅ๋๋ค.
35. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค :
#1๋ฒ
SQL> SELECT * FROM ๊ณ์ข๋ง์คํฐ WHERE ํ์๋ฒํธ = (SELECT DISTINCT ํ์๋ฒํธ FROM ๊ณ ๊ฐ);
SELECT * FROM ๊ณ์ข๋ง์คํฐ WHERE ํ์๋ฒํธ = (SELECT DISTINCT ํ์๋ฒํธ FROM ๊ณ ๊ฐ)
*
ERROR at line 1:
ORA-01427: single-row subquery returns more than one row
#1๋ฒ์ ์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฌ ๊ฐ์ ํ์ด ๋ฆฌํด ๋๋ฏ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค ( = ๋จ์ผํ ์ฐ์ฐ์๋ก ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋์ ํ๋๋ง ๋ฆฌํด ๋์ด์ผ ํจ)
#2
SQL> SELECT * FROM ๊ณ์ข๋ง์คํฐ WHERE ํ์๋ฒํธ IN (SELECT DISTINCT ํ์๋ฒํธ FROM ๊ณ ๊ฐ);
๊ณ์ข๋ฒํธ ํ์๋ฒํธ ๊ณ์ข๋ช
๊ณ์ข์ข
๋ฅ ๊ณ์ข์ง์ ๊ณ์ข๊ฐ์ค์ผ์ ์์๊ธ ํ๊ท ์๊ณ ์ฃผ๋ฌธ์ผ์
---------------------------------------------------------------------
100 111 1 1 1 1 1 1 1
200 222 2 2 2 2 2 2 2
#3
SQL> SELECT ํ์๋ฒํธ, ์ข
๋ชฉ์ฝ๋ FROM ์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ WHERE ์ฃผ๋ฌธ์ผ์ EXISTS (SELECT DISTINCT ์ฃผ๋ฌธ์ผ์ FROM ๊ณ์ข๋ง์คํฐ);
SELECT ํ์๋ฒํธ, ์ข
๋ชฉ์ฝ๋ FROM ์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ WHERE ์ฃผ๋ฌธ์ผ์ EXISTS (SELECT DISTINCT ์ฃผ๋ฌธ์ผ์ FROM ๊ณ์ข๋ง์คํฐ)
*
ERROR at line 1:
ORA-00920: invalid relational operator
#4
SQL> SELECT ํ์๋ฒํธ, ์ข
๋ชฉ์ฝ๋ FROM ์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ WHERE ์ฃผ๋ฌธ์ผ์ ALL (SELECT DISTINCT ์ฃผ๋ฌธ์ผ์ FROM ๊ณ์ข๋ง์คํฐ);
SELECT ํ์๋ฒํธ, ์ข
๋ชฉ์ฝ๋ FROM ์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ WHERE ์ฃผ๋ฌธ์ผ์ ALL (SELECT DISTINCT ์ฃผ๋ฌธ์ผ์ FROM ๊ณ์ข๋ง์คํฐ)
*
ERROR at line 1:
ORA-00920: invalid relational operator
EXISTS ํจ์์ IN์ WHERE ์ ์์ ์กฐ๊ฑด์ ๊ฑธ์ด์ค ๋ ์ฌ์ฉ
-> ํด๋นํ๋ ๋ฐ์ดํฐ๋ง ์ถ์ถํด ์ฃผ๋ ๊ธฐ๋ฅ
-> ๊ฒฐ๊ณผ๋ ๋๊ฐ์
-> ์ฑ๋ฅ ๋ฉด์์๋ EXISTS ํจ์๊ฐ ๋ ์ข์
-> INํจ์๋ ์ค์ ๋ก ์กด์ฌํ์ง ์๋ ๊ฐ์ ๋น๊ตํ๊ธฐ์ ๋๋ฆฐ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ
-> ๋ฐ๋ผ์ ์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉ์ EXISTS ํจ์ ์ฌ์ฉ ์ถ์ฒ
[EXISTS/IN ์ฐจ์ด]
-EXISTS ํจ์๋
WHERE EXISTS ()
1. ๊ดํธ ์์ ์๋ธ์ฟผ๋ฆฌ๋ง ๋ค์ด๊ฐ ์ ์์. ํน์ ๊ฐ ๋ฃ์ ์ X
2. ์ฒ๋ฆฌ ์์ [๋ฉ์ธ์ฟผ๋ฆฌ] -> [์๋ธ์ฟผ๋ฆฌ]
3. ์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ '์กด์ฌํ๋์ง๋ง ํ์ธ'
4. NULL์ ๋ํด TRUE ๊ฐ์ ๋ฆฌํด
-IN ํจ์
WHERE IN ()
1. ๊ดํธ ์์ ํน์ ๊ฐ / ์๋ธ ์ฟผ๋ฆฌ ๋ค์ด๊ฐ ์ ์์
2. ์ฒ๋ฆฌ ์์ [์๋ธ ์ฟผ๋ฆฌ] -> [๋ฉ์ธ์ฟผ๋ฆฌ]
3. NULL์ ๋ํด FALSE ๋ฆฌํด -> ๋ฐ๋ผ์ NOT IN ์ฌ์ฉ์ NVL๋ก NULL ์ฒดํฌ ํ์
36. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค :
์คํ๊ณํ ์ด๋ ์๊ตฌํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ธฐ ์ํด DBMS๊ฐ ์ฐจ๋ก๋ก ์ํํ๋ Access ๊ณผ์ ์ผ๋ก ์คํ ๊ณํ์ ์ฝ์ ๋๋ ๊ท์น์ ํ ๋๋ก ํ๋์ฉ ์ฝ์ด๋๊ฐ๋๋ค.
1. ์์์ ์๋๋ก ์ฝ์ด ๋ด๋ ค๊ฐ๋ฉด์ ์ ์ผ ๋จผ์ ์ฝ์ ์คํ ์ ์ฐพ์ต๋๋ค.
2. ๋ด๋ ค๊ฐ๋ ๊ณผ์ ์์ ๊ฐ์ ๋ค์ฌ ์ฐ๊ธฐ๊ฐ ์กด์ฌํ๋ค๋ฉด ๋ฌด์กฐ๊ฑด ์ -> ์๋ ์์ผ๋ก ์ฝ์ต๋๋ค.
3. ์ฝ๊ณ ์ ํ๋ ์คํ ๋ณด๋ค ๋ค์ฌ ์ฐ๊ธฐ๊ฐ ๋ ํ์์คํ ์ด ์กด์ฌํ๋ค๋ฉด, ๊ฐ์ฅ ์์ชฝ์ผ๋ก ๋ค์ฌ์ฐ๊ธฐ ๋ ์คํ ์ ์์์ผ๋ก ํ์ฌ ํ ๋จ๊ณ์ฉ ์์ ์คํ ์ผ๋ก ์ฝ์ด ๋์ต๋๋ค.
*์์๋ค์ ์ข์ธก๋ถํฐ ์ฐจ๋ก๋๋ก ์ฝ์ด์ฃผ๊ณ ๊ทธ ๋ค์์ ์์ ๋ถ๋ชจ๋ก ์ฌ๋ผ๊ฐ๋ ์์ผ๋ก ๋ฐ๋ณต
์ ๋ฌธ์ ์ ์คํ์์๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ํํํ์๋ฉด ์๋์ ๊ฐ๋ค. 3-5-4-2-7-6-1-0
37. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :๊ณ ๊ฐ๋ง์คํฐ์ ์ผ์๋ณ์ฃผ๋ฌธ๋ด์ญ์ ๋์ค๋ ์นผ๋ผ ์์ ๋ฐ์ดํฐ ํ์ ์ด ์ผ์นํ์ง ์์ผ๋ฏ๋ก ์๋ฌ๊ฐ ๋๋ค.
UNION ๋ฐ UNION ALL๊ตฌ๋ฅผ ์ฌ์ฉํ ๋ ๋์ค๋ SQL๋ฌธ์ ์นผ๋ผ ์์ ๋ฐ์ดํฐ ํ์ ์ด ์์ ์ผ์นํด์ผ ํจ
38. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : TEST38 ํ ์ด๋ธ์ ๊ธฐ๋ณธํค(Primary Key) ๊ฐ KEY1๋ฒ๊ณผ KEY2๋ฒ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๋ฐ๋ผ์ UNIQUE INDEX SCAN์ ํ๋ ค๋ฉด KEY1๋ฒ๊ณผ KEY2๋ฒ ๋ชจ๋ ์ฌ์ฉ๋์ด์ผ ํ๋ค. ๋ฐ๋ผ์ 4๋ฒ์ ๊ฒฝ์ฐ KEY1๋ฒ๋ง ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ์ UNIQUE SCAN์ด ๋์ง ์๋๋ค.
39. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : ํํฐ์ ์์ ๊ฐ์ฅ ์ฒ์์ ๋์ค๋ ๊ฐ์ ๊ตฌํ๋ ์๋์ฐ ํจ์๋ FIRST_VALUE์ด๋ค.
ํ ์์ | ์ค๋ช |
FIRST_VALUE | - ํํฐ์
์์ ๊ฐ์ฅ ์ฒ์์ ๋์ค๋ ๊ฐ์ ๊ตฌํ๋ค. - MIN ํจ์๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ ์ ์๋ค. |
LASt_VALUE | - ํํฐ์
์์ ๊ฐ์ฅ ๋์ค์ ๋์ค๋ ๊ฐ์ ๊ตฌํ๋ค. - MAX ํจ์๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ ์ ์๋ค. |
LAG | - ์ด์ ์ ํ์ ๊ฐ์ง๊ณ ์จ๋ค. |
LEAD | - ์๋์ฐ์์ ํน์ ์์น์ ํ์ ๊ฐ์ง๊ณ ์จ๋ค. - ๊ธฐ๋ณธ ๊ฐ์ 1์ด๋ค. |
40. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : ๋ฌธ์ ์ SQL๋ฌธ์ SELECT๊ตฌ์ 2๊ฐ ์นผ๋ผ(JOB, ROWCNT)์ด ์๋ค. ์ฆ, 1๋ฒ๊ณผ 2๋ฒ์ ์์ง๋ง 3๋ฒ์งธ ์นผ๋ผ์ ์๋ค.
41. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
ํธ๋์ญ์ ์ด๋? ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๊ธฐ ์ํด ์ํํ๋ ์์ ๋จ์์ด๋ค.
์ํ๋ฅผ ๋ณํ์ํจ๋ค๋ ๊ฒ์ SQL ์ง์์ด๋ฅผ ํตํด DB์ ์ ๊ทผํ๋ ๊ฒ(SELECT, INSERT, DELETE, UPDATE)
ํธ๋์ญ์ ์ ํน์ง | ์ค๋ช |
์์์ฑ (Atomicity) | ํธ๋์ญ์ ์ด DB์ ๋ชจ๋ ๋ฐ์๋๊ฑฐ๋, ํน์ ์ ํ ๋ฐ์๋์ง ์์์ผ ํ๋ค. (All or Nothing) |
์ผ๊ด์ฑ (Consistency) | ํธ๋์ญ์ ์ ์์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ ํญ์ ์ผ๊ด์ฑ์ด ์์ด์ผ ํ๋ค. |
๊ณ ๋ฆฝ์ฑ (Isolation) | ๋ ์ด์์ ํธ๋์ญ์ ์ด ๋์์ ๋ณํ ์คํ๋๊ณ ์์ ๋, ์ด๋ค ํธ๋์ญ์ ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ฐ์ฐ์ ๋ผ์ด๋ค ์ ์๋ค. |
์ง์์ฑ (Durability) | ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ผ๋ฉด, ๊ฒฐ๊ณผ๋ ์๊ตฌ์ ์ผ๋ก ๋ฐ์๋์ด์ผ ํ๋ค. |
42. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : NATURAL JOIN์ ๊ฒฝ์ฐ WHERE์ ์์ JOIN์กฐ๊ฑด์ ์ถ๊ฐํ ์ ์์ง๋ง CROSS JOIN์ ๊ฒฝ์ฐ WHERE์ ์ JOIN์กฐ๊ฑด์ ์ถ๊ฐํ ์ ์๋ค. ๊ทธ๋ฌ๋ ์ด ๊ฒฝ์ฐ๋ CROSS JOIN์ด ์๋๋ผ INNER JOIN๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ๋๋ฌธ์ CROSS JOIN์ ์ฌ์ฉํ๋ ์๋ฏธ๊ฐ ์์ด์ง๋ฏ๋ก ๊ถ๊ณ ํ์ง ์๋๋ค.
CROSS JOIN | ์ํธ ์กฐ์ธ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ, ํ ์ชฝ ํ
์ด๋ธ์ ๋ชจ๋ ํ๋ค๊ณผ ๋ค๋ฅธ ํ
์ด๋ธ์ ๋ชจ๋ ํ์ ์กฐ์ธ์ํค๋ ๊ธฐ๋ฅ์ ํ๋ค.
์ด๋ฌํ CROSS JOIN์ ์นดํ
์์ ๊ณฑ (Cartesian Product)๋ผ๊ณ ๋ ํ๋ค.
|
NATURAL JOIN |
- ๋์ผํ ํ์
๊ณผ ์ด๋ฆ์ ๊ฐ์ง ์ปฌ๋ผ์ ์กฐ์ธ ์กฐ๊ฑด์ผ๋ก ์ด์ฉํ๋ ์กฐ์ธ์ ๊ฐ๋จํ ํํํ๋ ๋ฐฉ๋ฒ์ด๋ค. - NATURAL JOIN์ ๋ ํ ์ด๋ธ์ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง๋ ์นผ๋ผ์ด ๋ชจ๋ ์กฐ์ธ๋๋ค. - ๋์ผํ ์นผ๋ผ์ ๋ด๋ถ์ ์ผ๋ก ์ฐพ๊ฒ ๋๋ฏ๋ก ํ ์ด๋ธ ๋ณ์นญ(Alias)์ ์ฃผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. |
*NATURAL JOIN ์ ํ ์ด๋ธ ๋ณ์นญ์ ์ฐ๋ฉด ์ค๋ฅ๋๋ ์ด์ ? : alias๋ ์๋ก ๋ค๋ฅธ relation ๊ฐ์ ๊ฐ์ column์ด ์์ ๋ ์๋ก๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋๋ฐ, natural join์ ๋ ํ ์ด๋ธ์ ๋์ผํ ์ด๋ฆ์ column์ ๋ชจ๋ ํฉ์ณ๋ฒ๋ฆฌ๋ฏ๋ก join ํ์ relation์๋ ๊ฐ์ ์ด๋ฆ์ column์ด ์์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
43. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : ๊ณ์ธตํ ์กฐํ์์ MGR์ด NULL์ธ ๊ฒ์ด ๊ฐ์ฅ ์์๊ฐ ๋๋ค. ์ฆ, MGR IS NULL์ด ์์์์ ์ด๋ฉฐ EMPNO = MGR์ ๊ณ์ธต์ ์ผ๋ก ๋น๊ตํ๋ค.
- - - - - - - - ์ฃผ๊ด์ - - - - - - - -
44. ์ ๋ต : GROUPING SETS (B.GRADE, (B.GRADE, A.STUDENTNO))
๐๋ฌธ์ ํ์ธ
ํด์ค :
๊ฒฐ๊ณผ๊ฐ์ ๋ณด๋ฉด 1. B.GRADE, A.STUDENTNO ์ ๋ํ ์ง๊ณ, 2. B.GRADE์ ๋ํ ์ง๊ณ๊ฐ ์๊ณ ์ ์ฒด ์ง๊ณ๋ ์๋ค.
SQL> SELECT B.GRADE, A.STUDENTNO, SUM(B.GRADE) FROM TEST44_1 A, TEST44_2 B GROUP BY GROUPING SETS (B.GRADE, (B.GRADE, A.STUDENTNO));
GRADE STUDENTNO SUM(B.GRADE)
---------- ---------- ------------
50 10 50
50 20 50
50 30 50
50 150
60 10 60
60 20 60
60 30 60
60 180
70 10 70
70 20 70
70 30 70
70 210
12 rows selected.
45. ์ ๋ต : NULLS LAST
๐๋ฌธ์ ํ์ธ
ํด์ค : NULLS LAST ๋ NULL ๊ฐ์ ๋ง์ง๋ง์ ์ ๋ ฌ์์ผ ์ค๋ค.
NULLS FIRST : ์ ๋ ฌํ๊ณ ์ ํ๋ NULL ๋ฐ์ดํฐ๋ค์ ๋ฐ์ดํฐ ์์ ๋์ค๊ฒ ํ๋ค.
NULLS LAST : ์ ๋ ฌํ๊ณ ์ ํ๋ NULL ๋ฐ์ดํฐ๋ค์ ๋ฐ์ดํฐ ๋ค์ ๋์ค๊ฒ ํ๋ค.
*Default ๊ฐ์ผ๋ก NULL ์ด ๋จผ์ ํ์๋จ
ORDER BY [์ ๋ ฌํ๊ณ ์ ํ๋ ์ปฌ๋ผ๋ช
] [DESC/ASC] NULLS LAST
46. ์ ๋ต : LEFT OUTER JOIN
๐๋ฌธ์ ํ์ธ
ํด์ค : ๊ฒฐ๊ณผ ํ ์ด๋ธ์ ๋ณด๋ฉด TEST46_1 ํ ์ด๋ธ์๋ง ์๋ 3๋ฒํ(COL1, COL2)๋ง ์กฐํ๋๊ณ TEST46_2 ํ ์ด๋ธ์๋ 3๋ฒํ์ด ์์ผ๋ฏ๋ก NULL๋ก ์กฐํ๋์๋ค. ๋ฐ๋ผ์ LEFT OUTER JOIN์ ์คํํ ๊ฒ์ด๋ค.
47. ์ ๋ต : LG-TV
๐๋ฌธ์ ํ์ธ
ํด์ค : ROLLBACK TRANSACTION SP2 ๋ฌธ์ฅ์ ์ํด ์ฒซ ๋ฒ์งธ UPDATEํ ๋ด์ญ๋ง ๋ฐ์ ๋๋ฏ๋ก ์ํ๋ช ์ LG-TV๊ฐ ๋๋ค.
48. ์ ๋ต : GRANT
๐๋ฌธ์ ํ์ธ
ํด์ค :
ํ ์ด๋ธ์ ๊ถํ์ ๋ถ์ฌํ๋ DCL(Data Control Language) : GRANTํ ์ด๋ธ์ ๊ถํ์ ํ์ํ๋ DCL(Data Control Language) : REVOKE
49. ์ ๋ต : 3, 2
๐๋ฌธ์ ํ์ธ
ํด์ค :NTILE(3)์ ๋ฐ์ดํฐ๋ฅผ 3๋ฑ๋ถ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ๋ฑ๋ถ์ ๋ํด์ COUNT๋ฅผ ๊ณ์ฐํ๋ฏ๋ก 3, 3, 2๊ฐ ๋๋ค.
50. ์ ๋ต : RANGE
๐๋ฌธ์ ํ์ธ
ํด์ค : RANGE๋ ํ์ฌ ํ์ ๋ฐ์ดํฐ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์๋ค ๋ฐ์ดํฐ ๊ฐ์ ๋ฒ์๋ฅผ ํ์ํ๋ ๊ฒ์ด๋ค.
๋จผ์ ์์ SQLD_37_50 ํ ์ด๋ธ์์ ๊ฒฐ๊ณผ๊ฐ๊ณผ ๊ฐ์ด ๋ฐํ๋๋๋ก 'SAL' ์์ฑ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ ์ํํ๊ณ ,๊ฐํ์ SAL ์์ฑ๊ฐ์ ๊ธฐ์ค์ผ๋ก -50 ~ +100 ๋ฒ์ ์ฌ์ด์ ํฌํจ๋๋ SAL๊ฐ์ ๊ฐ์ง๋ ๋ชจ๋ ํ์ ์๋ฅผ COUNTํ์ฌ SIM_CNT ์์ฑ๊ฐ์ผ๋ก ์กฐํํ๋ค.
์) ์ ๋น์ SAL ์์ฑ๊ฐ 1000 ์ ๊ธฐ์ค -50 ~ +100 ๋ฒ์ -> 950 ~1100 ์ ์ํ๋ SAL ์์ฑ๊ฐ์ 2๊ฐ (1000, 1100)
'IT์๊ฒฉ์ฆ ๊ณต๋ถ > SQLD ๊ธฐ์ถ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] 45 ~ 49ํ ๊ธฐ์ถ๋ฌธ์ ์ฃผ๊ด์ ๋ชจ์ ( ์ด 32๋ฌธ์ /์ ๋ต ) (31) | 2023.06.23 |
---|---|
[SQLD] 45ํ ๊ธฐ์ถ๋ฌธ์ 1๊ณผ๋ชฉ ( 10๋ฌธ์ / ์ ๋ต, ํด์ค ) (11) | 2022.12.10 |
[SQLD] 33ํ ๊ธฐ์ถ๋ฌธ์ ( 50๋ฌธ์ /์ ๋ต ) (46) | 2022.07.15 |
[SQLD] 33ํ ๊ธฐ์ถ 23๋ฒ ๋ฌธ์ - ์๋์ฐ ํจ์ (4) | 2022.05.27 |
[SQLD] 38ํ ๊ธฐ์ถ ๋ฌธ์ ( 50๋ฌธ์ / ์ ๋ต ) + ํด์ค์ถ๊ฐ (25) | 2022.05.25 |