๐SQLD. ์ 38 ํ ๊ธฐ์ถ ๋ฌธ์
๋ฌธ์ 1. ๋ค์์ ERD์ ๋ํ ์ค๋ช ์ผ๋ก ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์๊ธ์ข
ํฉ๋ณ์์๋ ์์ฌ๊ฐ ๊ทผ๋ฌดํ์ง ์์์๊ฐ ์๋ค. 2) ํ ๊ฐ์ ์๊ธ์ข ํฉ๋ณ์์๋ ์ฌ๋ฌ ๋ช ์ ์์ฌ๊ฐ ๊ทผ๋ฌดํ๋ค. 3) ์ง๋ฃ๋ ๋ฐ๋์ ์์ฌ๊ฐ ํด์ผ ํ๋ค. 4) ์์ฌ๊ฐ ์์ด ์ง๋ฃํ ์ ์๋ค. |
๋ฌธ์ 2. ์ฑ๋ฅ์ ๊ณ ๋ คํ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์์ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ผ๋ก ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์ฑ๋ฅ ํ๋์ ์ํด์ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋ ํธ๋์ญ์
์ ํ์ ๋ฌด์ํด๋ ๋๋ค. 2) ๋ฐฐ์น๋ฅผ ํตํด์ ์ ๋ ฅ๋๋ ๋ฐ์ดํฐ ์ฉ๋์ด ํฌ๋ฉด ํด์๋ก ์ฑ๋ฅ ํ๋์ ์ํ ๋น์ฉ์ ์ฆ๊ฐ๋๋ค. 3) ์ฑ๋ฅ ํฅ์์ ์ํด์ ํ๋์ ์ํํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์ด ๋ณ๊ฒฝ๋ ์ ์๋ค. 4) ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง ์์ ์ฑ๋ฅ์ ๊ณ ๋ คํ ๋ชจ๋ธ๋ง์ ์ํํ๋ฉด ์ฑ๋ฅ ๋น์ฉ์ ๊ฐ์ ์ํฌ ์ ์๋ค. |
๋ฌธ์ 3. ๋ค์ ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ผ๋ฆฌ ๋ชจ๋ธ์ ๋ํ ์ค๋ช ์ผ๋ก ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๊ฐ๋
๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ฌ์ฉ์ ๊ด์ ์์ ๋ฐ์ดํฐ ์๊ตฌ์ฌํญ์ ์๋ณํ๋ค. 2) ๋ ผ๋ฆฌ ๋ฐ์ดํฐ ๋ชจ๋ธ์ M:N ๊ด๊ณํด์, ์๋ณ์ ํ์ , ์ ๊ทํ, ๋ฌด๊ฒฐ์ฑ ์ ์ ๋ฑ์ ์ํํ๋ค. 3) ๋ ผ๋ฆฌ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถ์ ์ํด์๋ง ์ฌ์ฉ๋๋ ๊ฒ์ด๋ค. 4) ๋ฐ์ดํฐ๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ์ฅ๋๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ๊ฒ์ด ๋ฌผ๋ฆฌ์ ๋ชจ๋ธ์ด๋ค. |
๋ฌธ์ 4. ์๋ ERD์ ๋ํ ์ค๋ช
์ผ๋ก ๊ฐ์ฅ ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์ฌ์์ ๋์ผํ ์ฝ๋๋ฅผ ์์ฝํด์ ๋ฐ๋ณต์ ์ผ๋ก ๋ฐฉ๋ฌธํ ์ ์๋ค. 2) ํ์ฌ ์ฝ๋๋ ๋๊ตฌ๋ ์ด์ฉํ์ง ์์ ์ ์๋ค. 3) ์ฌ์์ ๋์ผ ์ผ์์ ์ฌ๋ฌ ์ฝ๋๋ฅผ ์ด์ฉํ ์ ์๋ค. 4) ์ฌ๋ฌ ์ฌ์์ด ๋์ผํ ์ฝ๋๋ฅผ ์ด์ฉํ ์ ์๋ค. |
๋ฌธ์ 5. ๋ฆด๋ ์ด์ ์ ์ ๊ทํ(Normalization)ํ๋ ๋ชฉ์ ์ ๊ดํ ์ค๋ช ์ค ๊ฐ์ฅ ๊ฑฐ๋ฆฌ๊ฐ ๋จผ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์ ๋ณด์ ๊ฐฑ์ ์ด์์ด ์๊ธฐ์ง ์๋๋ก ํ๋ค. 2) ์ ๋ณด์ ๋ณด์์ ๋ชฉ์ ์ผ๋ก ํ๋ค. 3) ์ ๋ณด์ ์์ค์ ๋ง๋๋ค. 4) ์ ๋ณด์ ์ค๋ณต์ ๋ง๋๋ค. |
๋ฌธ์ 6. ์์ฑ์ ๋ํ ์๋์ ์ค๋ช ์์ ๋น์นธ์ ๋ค์ด๊ฐ ๊ฒ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
(ใฑ)์ ์ํฐํฐ๋ฅผ ์๋ณํ ์ ์๋ ์์ฑ์ด๊ณ (ใด)
์ ๋ค๋ฅธ ์ํฐํฐ์ ๊ด๊ณ์ ํฌํจ๋๋ ์์ฑ์ด๋ค.
๋ค๋ฅธ ์ํฐํฐ์ ๊ด๊ณ์ ํฌํจ๋์ง ์๋ ์์ฑ์
(ใท)์ด๋ผ๊ณ ํ๋ค.
1) (ใฑ)๊ธฐ๋ณธํค์์ฑ - (ใด)์ธ๋ํค์์ฑ - (ใท)์ผ๋ฐ์์ฑ 2) (ใฑ)์ธ๋ํค์์ฑ - (ใด)๊ธฐ๋ณธํค์์ฑ - (ใท)ํ์์์ฑ 3) (ใฑ)ํ์์์ฑ - (ใด)์ธ๋ํค์์ฑ - (ใท)๊ธฐ๋ณธํค์์ฑ 4) (ใฑ)์ผ๋ฐ์์ฑ - (ใด)๊ธฐ๋ณธํค์์ฑ - (ใท)์ธ๋ํค์์ฑ |
๋ฌธ์ 7. ๋ค์ ๋ณด๊ธฐ ์ค ์ํฐํฐ, ๊ด๊ณ, ์์ฑ์ ๋ํ ์ค๋ช ์ผ๋ก ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ํ ๊ฐ์ ์ํฐํฐ๋ ๋ ๊ฐ ์ด์์ ์ธ์คํด์ค์ ์งํฉ์ด์ด์ผ ํ๋ค. 2) ์ํฐํฐ๋ ๊ด๊ณ๋ฅผ ๋ ๊ฐ๊น์ง๋ง ๊ฐ์ง ์ ์๋ค. 3) ํ ๊ฐ์ ์ํฐํฐ๋ ๋ ๊ฐ ์ด์์ ์์ฑ์ ๊ฐ๋๋ค. 4) ํ ๊ฐ์ ์์ฑ์ ํ ๊ฐ์ ์์ฑ๊ฐ์ ๊ฐ๋๋ค. |
๋ฌธ์ 8. ๋ค์ ๋ณด๊ธฐ ์ค ์๋ ERD์ ๋ํ ์ค๋ช ์ผ๋ก ๋ฐ๋ฅด์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์ํ์ ์ฃผ๋ฌธ์ ํ๋ ์ด์ ๋ฐ๋์ ๊ฐ์ ธ์ผ ํ๋ค. 2) ์ฃผ๋ฌธ์ ์ํ 1๊ฐ ์ด์ ๊ฐ์ง ์ ์๋ค. 3) ์ฃผ๋ฌธ์ ์ํ์ด ์์ ์ ์๋ค. 4) ์ฃผ๋ฌธ, ์ํ์ ๋น์๋ณ๊ด๊ณ๋ก ๋ถ๋ชจ๊ฐ ์์ด๋ ์์์ด ์๊ธธ ์ ์๋ค. |
๋ฌธ์ 9. ๋ค์ ์ฃผ์ด์ง ๊ทธ๋ฆผ์ ํด๋นํ๋ ERD ํ๊ธฐ๋ฒ์ผ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) Barker 2) IE 3) IE Notation 4) IDEF1X |
๋ฌธ์ 10. ์๋์ ๋ด์ฉ์ ์ฃผ์๋ณ์์ ์ด๋ค ํน์ง์ ์ค๋ช ํ ๊ฒ์ธ๊ฐ? ์ ๋ตํ์ธ๐ผ
ํ์์ ํ๋ฒ์ผ๋ก ๊ณ ์ ํ ๊ตฌ์กฐ๋ฅผ ํํํ ์๊ฐ ์๋ค.
ํ์ง๋ง ABC๋ํ๊ต์ ํ์ ์ํฐํฐ์ ์ฃผ์๋ณ์๋ฅผ
ํ๋ฒ๊ณผ ์
ํ์ผ์๋ก ํด์ ์๋ชป๋ ๋ชจ๋ธ๋ง์ ํ๋ค.
1) ์ ์ผ์ฑ 2) ์ต์์ฑ 3) ๋ถ๋ณ์ฑ 4) ์กด์ฌ์ฑ |
๋ฌธ์ 11. ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ์๋์ SQL๋ฌธ์ ์ํํ ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TEST11]
COL1 COL2 COL3
--------------------
A 1
B A 2
C A 3
D B 4
[SQL]
SELECT COUNT(*) FROM TEST11
WHERE COL3 <> 3
START WITH COL3 = 4
CONNECT BY COL1 = PRIOR COL2;
1) 0 2) 1 3) 2 4) 3 |
๋ฌธ์ 12. ๋ค์ ๋ณด๊ธฐ ์ค JOIN์ ๋ํ ์ค๋ช ์ผ๋ก ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) Nested Loop Join์ ๋๋ค ์์ธ์ค (Random Access)๊ฐ ๋ฐ์ํ๋ค. 2) Sort Merge Join์ ์ ๋ ฌ์ ์ ๋ฐํ์ฌ ์กฐ์ธํ๋ ํํ๋ฅผ ์ฌ์ฉํ๋ค. 3) ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ธํ ํํ ํ ์ด๋ธ์ ์ธ๋ฑ์ค๊ฐ ์์ ๊ฒฝ์ฐ Nested Loop Join์ ์ฌ์ฉํด์ผ ํ๋ค. 4) Hash Join์ ์ ๋ ฌ์์ ์ด ์์ด ์ ๋ ฌ์ด ๋ถ๋ด๋๋ ๋๋๋ฐฐ์น์์ ์ ์ ๋ฆฌํ๋ค. |
๋ฌธ์ 13. ํ ์ด๋ธ์ ๋ํ ๊ถํ์ ๋ถ์ฌํ๋ DCL ๋ช ๋ น์ด๋? ์ ๋ตํ์ธ๐ผ
1) COMMIT 2) GRANT 3) REVOKE 4) ROLLBACK |
๋ฌธ์ 14. ๋ค์ ๋ณด๊ธฐ ์ค SQL ๋ช ๋ น์ด๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) DDL : TRUNCATE 2) DDL : ALTER 3) DCL : REVOKE 4) DML : RENAME |
๋ฌธ์ 15. ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๋ SQL๋ฌธ์ ๊ณ ๋ฅด์์ค. ์ ๋ตํ์ธ๐ผ
[TEST15]
BAN NAME
-------------
1 ์กฐ์กฐ
1 ์กฐ์กฐ
1 ์กฐ์กฐ
2 ์ฌํฌ
2 ์ ๋น
3 ๊ด์ฐ
3 ๊ด์ฐ
[RESULT]
BAN RESULT
---------------
1 1
3 1
2 2
1) 2)
SELECT BAN, COUNT(*) AS RESULT SELECT BAN, COUNT(1) AS RESULT
FROM TEST15 FROM TEST15
GROUP BY BAN; GROUP BY BAN;
3) 4)
SELECT BAN, SELECT
COUNT(DISTINCT NAME) AS RESULT COUNT(CASE WHEN BAN=1 THEN 1 END)
FROM TEST15 AS RESULT,
GROUP BY BAN; COUNT(CASE WHEN BAN=2 THEN 1 END)
AS B,
COUNT(CASE WHEN BAN=3 THEN 1 END)
AS C
FROM TEST15;
๋ฌธ์ 16. ๋ค์ ๋ณด๊ธฐ ์ค ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ์ํํ์์ ๋ ๊ฒฐ๊ณผ๊ฐ์ด ๋ค๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TEST 16]
MemberID Name
-----------------
NULL ์กฐ์กฐ
2 ์ฌํฌ
3 ๊ด์ฐ
4 ์ฅ๋น
5 ์กฐํ
NULL ์ ๋น
1) SELECT COUNT(3) FROM TEST16;
2) SELECT COUNT(MemberID) FROM TEST16;
3) SELECT COUNT(NULLIF (MemberID, NULL)) FROM TEST16;
4) SELECT COUNT(*) FROM TEST16 WHERE MemberID IS NOT NULL;
๋ฌธ์ 17. ๋ค์ ์ฃผ์ด์ง ํ ์ด๋ธ์์ ํด๋น SQL๋ฌธ์ ์คํํ ๊ฒฐ๊ณผ๋ก ์๋ง์ ๊ฒ์?์ ๋ตํ์ธ๐ผ
[TEST17]
COL1 COL2
-------------
NULL A
1 B
2 C
3 D
4 E
[SQL]
SELECT*FROM TEST17 WHERE COL1 IN(1, 2, NULL);
1) 2)
COL1 COL2 COL1 COL2
------------- -------------
1 B 2 B
2 C 2 C
3) 4)
COL1 COL2 COL1 COL2
------------- -------------
1 B NULL A
2 C 1 B
3 D 2 C
4 E 3 D
4 E
๋ฌธ์ 18. ๋ค์ ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ด ๋ฐํ๋๊ฒ ํ๋ ์๋ SQL๋ฌธ์ ๋น์นธ์ ๋ค์ด๊ฐ ๊ฒ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TEST18]
DNAME JOB SAL
----------------------------
ACCOUNTING CLERK 1000
ACCOUNTING MANAGER 2000
ACCOUNTING PRESIDENT 3000
RESEARCH CLERK 4000
RESEARCH MANAGER 5000
RESEARCH PRESIDENT 6000
SALES CLERK 7000
SALES MANAGER 8000
SALES PRESIDENT 9000
[SQL]
SELECT DNAME, JOB, SUM(SAL)
FROM TEST18
GROUP BY( )
[๊ฒฐ๊ณผ]
DNAME JOB SUM(SAL)
-------------------------------
45000
CLERK 12000
MANAGER 15000
PRESIDENT 18000
SALES 24000
SALES CLERK 7000
SALES MANAGER 8000
SALES PRESIDENT 9000
RESEARCH 15000
RESEARCH CLERK 4000
RESEARCH MANAGER 5000
RESEARCH PRESIDENT 6000
ACCOUNTING 6000
ACCOUNTING CLERK 1000
ACCOUNTING MANAGER 2000
ACCOUNTING PRESIDENT 3000
1) CUBE(DNAME, JOB) 2) ROLLUP(DNAME, JOB) 3) GROUPING SETS(DNAME, JOB) 4) CUBE(DNAME) |
๋ฌธ์ 19. ๋ค์ ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ์๋์ SQL๋ฌธ์ ์คํํ์์ ๋์ ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TEST19]
C1 C2
-------------
1 80
2 70
3 80
4 90
5 100
6 110
[SQL]
SELECT C1, C2,
CASE
WHEN C2 <= 100 THEN 'B'
WHEN C2 <= 300 THEN 'A'
ELSE 'S'
END GRADE
FROM TEST19
ORDER BY C2;
1) 2)
C1 C2 GRADE C1 C2 GRADE
--------------- ---------------
2 70 B 6 70 B
1 80 B 2 80 B
3 80 B 1 80 B
4 90 B 3 90 A
5 100 B 4 100 A
6 110 A 5 110 A
3) 4)
C1 C2 GRADE C1 C2 GRADE
--------------- ---------------
6 30 A 6 70 A
2 70 A 2 80 A
1 80 A 1 80 A
3 100 A 3 90 B
4 150 B 4 100 B
5 300 B 5 110 B
๋ฌธ์ 20. SELECT NVL(COUNT(*), 9999) FROM TABLE WHERE 1 = 2 ์ ๊ฒฐ๊ณผ๊ฐ์? ์ ๋ตํ์ธ๐ผ
1) 9999 2) 0 3) NULL 4) 1 |
๋ฌธ์ 21. ์๋์ WINDOW FUNCTION์ ์ฌ์ฉํ SQL ์ค ๊ฐ์ฅ ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒ์?์ ๋ตํ์ธ๐ผ
1)
SUM(SAL) OVER()
2)
SUM(SAL)
OVER(PARTITION BY JOB
ORDER BY EMPNO RANGE
BETWEEN UNBOUNDED PRECEDING
AND UNBOUNDED FOLLOWING
) SAL1
3)
SUM(SAL)
OVER(PARTITION BY JOB
ORDER BY JOB RANGE
BETWEEN UNBOUNDED PRECEDING
AND CURRENT ROW
) SAL2
4)
SUM(SAL)
OVER(PARTITION BY JOB
ORDER BY EMPNO RANGE
BETWEEN UNBOUNDED PRECEDING
AND UNBOUNDED PRECEDING
) SAL3
๋ฌธ์ 22. ๋ค์์ PL/SQL์ ๋ํ ์ค๋ช ์ด๋ค. ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) PL/SQL์ ์ ์ฐจํ ์ธ์ด์ด๋ค. 2) PL/SQL์์ ํ ์ด๋ธ์ ์์ฑํ ์๋ ์๋ค. 3) PL/SQL์์ ์กฐ๊ฑด๋ฌธ์ IF ~ THEN ~ ELSE IF ~ END IF์ CASE ~ WHEN์ ์ฌ์ฉํ๋ค. 4) PL/SQL์์ NAME์ด๋ผ๋ ๋ณ์์ 'aaa'๋ฅผ ๋์ ํ ๊ฒฝ์ฐ ":="์ ์ฌ์ฉํ๋ค. |
๋ฌธ์ 23. ๋ค์ ๋ณด๊ธฐ ์ค ์ธ๋ฑ์ค ์์ฑ ๊ตฌ๋ฌธ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ALTER TABLE [ํ
์ด๋ธ๋ช
] ADD INDEX [์ธ๋ฑ์ค ๋ช
] [์นผ๋ผ๋ช
] 2) INDEX [์ธ๋ฑ์ค ๋ช ] [์นผ๋ผ๋ช ] 3) CREATE INDEX [์ธ๋ฑ์ค ๋ช ] ON [ํ ์ด๋ธ ๋ช ] [์นผ๋ผ๋ช ] 4) DROP INDEX FROM [ํ ์ด๋ธ๋ช ] |
๋ฌธ์ 24. ์ฃผ์ด์ง SQL๋ฌธ์ ์ํํ ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[SQL]
INSERT INTO TEST24 VALUES(1);
INSERT INTO TEST24 VALUES(2);
COMMIT;
INSERT INTO TEST24 VALUES(3);
SAVEPOINT SP;
INSERT INTO TEST24 VALUES(4);
ROLLBACK TO SP;
SELECT COUNT(*) FROM TEST24;
1) 2 2) 3 3) 5 4) 6 |
๋ฌธ์ 25. TEST25 ํ ์ด๋ธ์ 1,2,3์ 3๊ฐ์ ํ์ด ์์๋ ๋ค์์ SQL์คํ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
SELECT * FROM TEST25
MINUS
SELECT 1 FROM DUAL;
1) 1, 2, 3 2) 2, 3 3) 1, 2 4) 1 |
๋ฌธ์ 26. ORDERSํ ์ด๋ธ์๋ CUSTOMERS ํ ์ด๋ธ์ ์กด์ฌํ์ง ์๋ ๊ณ ๊ฐID๊ฐ ์๋ค. ํด๋น SQL๋ฌธ์์ ( )๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
SELECT * FROM ORDERS
WHERE ( ใฑ ) (SELECT * FROM
CUSTOMERS
WHERE( ใด )
);
1) ใฑ : EXISTS, ใด : CUSTOMERS.ID = ORDERS.ID 2) ใฑ : EXISTS, ใด : CUSTOMERS.ID <> ORDERS.ID 3) ใฑ : NOT EXISTS, ใด : CUSTOMERS.ID = ORDERS.ID 4) ใฑ : NOT EXISTS, ใด : CUSTOMERS.ID <> ORDERS.ID |
๋ฌธ์ 27. ๋ฆด๋ ์ด์ EMP, DEPT๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋์ด ์๋ค. ์ฌ์์ด ํ๋ช ๋ ์๋ ๋ถ์(DEPTNO)๋ฅผ ๊ฒ์ํ๋ ์ง์๋ฅผ ์์ฑํ์๋, ๊ฐ์ฅ ๊ฑฐ๋ฆฌ๊ฐ ๋จผ ๊ฒ์?(๋จ, EMP์ DEPTNO์ DEPT์ DEPTNO์ ์ฐธ์กฐํ๋ ์ธ๋ํค์ด๋ค.) ์ ๋ตํ์ธ๐ผ
EMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
DEPT(DEPTNO, DNAME, LOC)
1)
SELECT DEPTNO FROM DEPT
WHERE DEPTNO NOT IN
(SELECT DEPTNO FROM EMP);
2)
SELECT DEPTNO FROM DEPT A
WHERE NOT EXISTS
(SELECT * FROM EMP B WHERE
A.DEPTNO = B.DEPTNO);
3)
SELECT B.DEPTNO FROM EMP A
RIGHT OUTER JOIN
DEPT B ON A.DEPTNO = B.DEPTNO
WHERE EMPNO IS NULL;
4)
SELECT DEPTNO FROM DEPT
WHERE DEPTNO <> ANY (SELECT
DEPTNO FROM EMP);
๋ฌธ์ 28. ๋ค์ ๋ฆด๋ ์ด์ ์ ๋ํ์ฌ ์๋์ ๊ฐ์ด ์ธ๋ฑ์ค๋ฅผ ์์ฑํ์๋ค. ๋ค์ ์ค ์์ฑ๋ ์ธ๋ฑ์ค์ ์ํ์ฌ ๊ฒ์์๋๋ฅผ ํฅ์์ํฌ ์ ์๋ ์ง์๋ก ๊ฐ์ฅ ์ ์ ํ์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[๋ฆด๋ ์ด์
]
ARTICLES(ID, TITLE, JOURNAL, ISSUE, YEAR, STARTPAGE, ENDPAGE, TR_ID)
[์ธ๋ฑ์ค]
CREATE INDEX IDX1 ON ARTICLES(YEAR, STARTPAGE);
CREATE INDEX IDX2 ON ARTICLES(STARTPAGE, ENDPAGE);
CREATE INDEX IDX3 ON ARTICLES(JOURNAL, ISSUE, YEAR);
1) 2)
SELECT TITLE FROM ARTICLES SELECT TITLE FROM ARTICLES
WHERE JOURNAL = 'JACM' AND WHERE ENDPAGE - STARTPAGE > 50;
ISSUE = 55;
3) 4)
SELECT TITLE FROM ARTICLES SELECT TITLE FROM ARTICLES
WHERE YEAR > 1995 AND WHERE JOURNAL = 'JACM';
YEAR < 2000;
๋ฌธ์ 29. ๋ค์์ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ค๋ช ์ด๋ค. ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋คํธ์ํฌ๋ฅผ ๊ฒฝ์ ํ์ฌ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ถ๋ฆฌ๋์ด ์๋ค. 2) ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์์คํ ๊ฐ์ฉ์ฑ์ด ๋จ์ด์ง๋ค. 3) ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๋ณ๋ ฌ์ ์ผ๋ก ์คํํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค. 4) ์ฌ์ฉ์๋ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ธ์ํ์ง ๋ชปํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค. |
๋ฌธ์ 30. ์๋์ ๋ณด๊ธฐ๊ฐ ์ค๋ช ํ๋ ๊ฒ์ผ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[๋ณด๊ธฐ]
- SQL์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์คํ๋ ๋ ์คํ ์ ์ฐจ ๋ฐ
๋ฐฉ๋ฒ์ ํํํ์ฌ DBA์๊ฒ ์๋ ค์ค๋ค.
- ์ตํฐ๋ง์ด์ ์ ์ข
๋ฅ๋ฅผ ํ์ธํ ์ ์๋ RULE, COST๊ฐ ํํ๋๊ณ
SQL์ด ๋ด๋ถ์ ์ผ๋ก ์ด๋ค ๋ฐฉ์์ผ๋ก ์คํ๋์๋์ง ํ์ธ ํ ์ ์๋ค.
1) ์คํ๊ณํ
2) ๋ด๋ถ๊ณํ 3) ์ ์ฐจ๊ณํ 4) ํํ๊ณํ |
๋ฌธ์ 31. ๋ค์ ๋ณด๊ธฐ ์ค ์ธ๋ฑ์ค์ ๋ํ ์ค๋ช ์ผ๋ก ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์ธ๋ฑ์ค๋ ์์ฐจ์ธ๋ฑ์ค, ๊ฒฐํฉ์ธ๋ฑ์ค, ๋นํธ๋งต, ํด๋ฌ์คํฐ, ํด์ ์ธ๋ฑ์ค๊ฐ ์๋ค. 2) VARCHAR, CHAR, DATE, NUMBER ๋ชจ๋ ์ธ๋ฑ์ค ์์ฑ์ด ๊ฐ๋ฅํ๋ค. 3) ํํฐ์ ํ ์ด๋ธ์ ํํฐ์ ํค์ ๋ํด์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ ์๋ค. 4) ์ธ๋ฑ์ค์ ์๊ฐ ์ฆ๊ฐํ๋ฉด ์ ๋ ฅ๊ณผ ์ญ์ , ์์ ์๋๊ฐ ์ ํ๋ ์ ์๋ค. |
๋ฌธ์ 32. ๋ค์ ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ์๋์ SQL๋ฌธ์ ์ํํ์์ ๋์ ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TEST 32]
COL1 COL2
-------------
NULL 10
12 NULL
NULL NULL
10 12
[SQL]
SELECT CASE WHEN SUM(COL1 + COL2)
IS NULL THEN 0
ELSE SUM(COL1 + COL2)
END AS ํฉ๊ณ
FROM TEST32;
1) NULL
2) 12 3) 22 4) 25 |
๋ฌธ์ 33. ๋ค์ ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ์ํํ์์๋ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ์๋ชป๋ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TEST33]
EMPNO ENAME SAL
--------------------
1 ์ ๋น 1000
2 ์กฐ์กฐ 2000
3 ๊ด์ฐ 3000
4 ์ฌํฌ 4000
5 ์ด์ 5000
6 ์กฐ์๋ฃก 6000
1) 2)
SELECT ENAME, SAL SELECT ENAME, SAL
FROM (SELECT ENAME, SAL FROM FROM (SELECT * FROM TEST33 ORDER
TEST33 ORDER BY SAL DESC) BY SAL DESC)
WHERE ROWNUM = 1; WHERE ROWNUM = 2;
โ SAL์ 6000์ด ์กฐํ๋๋ค. โ ๋์์ 2๊ฑด์ ๋ฐ์ดํฐ๊ฐ ์ถ์ถ๋๋ค.
3) 4)
SELECT ENAME, SAL SELECT ENAME, SAL
FROM (SELECT * FROM TEST33 FROM (SELECT * FROM TEST33 ORDER
ORDER BY SAL DESC) BY SAL DESC)
WHERE ROWNUM > 0; WHERE ROWNUM <= 3;
โ ์ด 6๊ฐ์ ํ์ด ์ถ๋ ฅ๋๋ค. โ 3๊ฐ์ ํ์ด ์ถ๋ ฅ๋๋ค.
๋ฌธ์ 34. ๋ณด๊ธฐ์ ์ฐ์ฐ์ ์ค ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ค์ธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์ฐ๊ฒฐ ์ฐ์ฐ์ 2) ๋น๊ต ์ฐ์ฐ์ 3) NOT ์ฐ์ฐ์ 4) OR ์ฐ์ฐ์ |
๋ฌธ์ 35. ๋ค์ ๋ณด๊ธฐ ์ค SELF JOIN์ ์ํํด์ผ ํ๋ ๊ฒฝ์ฐ๋ก ๊ฐ์ฅ ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๋์ผํ ํ
์ด๋ธ ๋ด์์ ๋ ๊ฐ์ ์นผ๋ผ ๊ฐ์ ์กฐ์ธ์ ์ํํ๋ค. 2) ๋คํธ์ํฌ๋ก ๋ถ์ฐ๋ ์์คํ ์์ ๊ฐ์ 2๊ฐ์ ํ ์ด๋ธ์ ์กฐ์ธํ๊ธฐ ์ํด์ ์ฌ์ฉ๋๋ค. 3) ์จ๋ผ์ธ ์ผํ๋ชฐ์์ ์ฃผ๋ฌธ์ ๋ณด๋ ์ฃผ๋ฌธ์ ๋ณด๋ฅผ ์ฌ์ฉํด์ SELF JOIN์ ํ๋ค. 4) ํ ํ ์ด๋ธ ๋ด์์ ์๋ก ์ฐ๊ด๋ ์นผ๋ผ์ด ์์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. |
๋ฌธ์ 36. ๋ค์ ์ฃผ์ด์ง ํ ์ด๋ธ๋ค์ ๋ํด์ ์๋์ SQL๋ฌธ์ ์ํํ์์๋ ๊ฒฐ๊ณผ์ ํ์๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์?
์ ๋ตํ์ธ๐ผ
[TEST36_1]
EMPNO ENAME
---------------
1000 ์กฐ์กฐ
2000 ๊ด์ฐ
3000 ์กฐํ
[TEST36_2]
NO CONDITION
-----------------
1 ์กฐ%
2 %์ฐ%
[SQL]
SELECT COUNT(*) ROWCNT
FROM TEST36_1 A, TEST36_2 B
WHERE A.ENAME LIKE B.CONDITION;
1) 0 2) 3 3) 4 4) 6 |
๋ฌธ์ 37. ABC๊ธฐ์ ์ TEST37ํ ์ด๋ธ์๋ COL1๋ฒ๊ณผ COL2๋ฒ์ ์นผ๋ผ์ด ์๋ค. ์ด ๋ ์๋์ SQL๋ฌธ์ ์คํํ ๊ฒฝ์ฐ ๊ฑด ์๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
INSERT INTO TEST37 VALUES(NULL, 10);
INSERT INTO TEST37 VALUES(12, NULL);
INSERT INTO TEST37 VALUES(NULL, NULL);
INSERT INTO TEST37 VALUES(10, 12);
SQL1)
SELECT COUNT(COL1) FROM TEST37; -- ์ถ๋ ฅ๊ฐ
SQL2)
SELECT*FROM TEST37 WHERE COL1 IN(12, 10, NULL); -- ํ์์
SQL3)
SELECT COL1, COUNT(*) FROM TEST37 GROUP BY COL1; -- ํ์์
1) 2, 3, 4 2) 2, 1, 3 3) 2, 2, 3 4) 4, 2, 3 |
๋ฌธ์ 38. ๋ค์์ A, Bํ ์ด๋ธ์ ๋ํ ์ค๋ช ์ ๋ณด๊ณ ์๋ง์ ๊ฒ์ ๊ณ ๋ฅด์์ค. ์ ๋ตํ์ธ๐ผ
CREATE TABLE A(
A NUMBER(10) PRIMARY KEY,
B NUMBER(10)
);
CREATE TABLE B(
A NUMBER(10),
B NUMBER(10)
REFERENCES A(A) ON DELETE CASCADE);
INSERT INTO A VALUES(1,1);
INSERT INTO A VALUES(2,2);
INSERT INTO B VALUES(1,1);
INSERT INTO B VALUES(2,2);
DELETE FROM A WHERE A=1;
SELECT*FROM B;
1) 2)
A B A B
----- -----
2 2 1 1
1 1
3) 4)
A B A B
----- -----
2 2 1 1
1 1
๋ฌธ์ 39. ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ์๋์ SQL๋ฌธ์ ์ํํ์์๋ ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TEST39]
COL1 COL2
------------
์กฐ์กฐ 1
์ ๋น 2
์ ๋น 3
๊ด์ฐ 4
๊ด์ฐ 5
๊ด์ฐ 6
์ฌํฌ 7
์ด์ 8
[SQL]
SELECT COUNT(*) FROM TEST39
GROUP BY COL1
HAVING COUNT(*) > 2;
1) NULL 2) 3 3) 5 4) 6 |
๋ฌธ์ 40. ์ฃผ์ด์ง ํ ์ด๋ธ์์ ํด๋น SQL๋ฌธ์ ์ํํ ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TEST40]
COL1 COL2
--------------
์กฐ์กฐ 1
์กฐ์กฐ 1
์กฐ์กฐ 1
์กฐ์กฐ 2
์กฐ์กฐ 3
[SQL]
SELECT COUNT(COL1), COUNT(COL2)
FROM(SELECT DISTINCT COL1, COL2
FROM TEST40);
1) 1, 2 2) 2, 1 3) 2, 2 4) 3, 3 |
๋ฌธ์ 41. ๋ค์ ๋ณด๊ธฐ ์ค NUMERIC(์ซ์)ํ์ด ์๋ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) INT 2) CHAR 3) FLOAT 4) DECIMAL |
๋ฌธ์ 42. ์๋์ SQL๋ฌธ์ ๋ํด์ ์คํ ์์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋์ดํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
SELECT DEPTNO, COUNT(EMPNO)
FROM SCOTT.EMP
WHERE SAL >= 400
GORUP BY DEPTNO
HAVING COUNT(EMPNO) >= 3
ORDER BY DEPTNO;
1) FROM โ WHERE โ GROUP BY โ HAVING โ ORDER BY โ SELECT 2) FROM โ WHERE โ HAVING โ GROUP BY โ ORDER BY โ SELECT 3) FROM โ WHERE โ GROUP BY โ SELECT โ HAVING โ ORDER BY 4) FROM โ WHERE โ GROUP BY โ HAVING โ SELECT โ ORDER BY |
๋ฌธ์ 43. ๋ค์ ๋ณด๊ธฐ ์ค ์์ ๊ด๊ณ ์ฐ์ฐ์์ ํด๋นํ์ง ์๋ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) SELECT 2) DELETE 3) JOIN 4) DIVISION |
- - - - - - - - ์ฃผ๊ด์ - - - - - - - -
๋ฌธ์ 44. ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ์๋์ ๊ฐ์ด ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋๋๋ก ์ฃผ์ด์ง SQL๋ฌธ์ ๋น์นธ์ ์์ฑํ์์ค.์ ๋ตํ์ธ๐ผ
[TEST44]
NAME DEPTNAME POSITION SAL
------------------------------
์กฐ์กฐ ITํ ๋ถ์ฅ 5000
์ฌํฌ ITํ ๋๋ฆฌ 3000
์ ๋น ๋ณด์ํ ์ฐจ์ฅ 4000
๊ด์ฐ ๋ณด์ํ ์ฌ์ 2000
์ฅ๋น ์ด๋ฌดํ ๋ถ์ฅ 5000
๋ํ ์ธ์ฌํ ์ฐจ์ฅ 4000
[SQL]
SELECT
( ) OVER(ORDER BY SAL DESC)
AS RANK, NAME, DEPTNAME, POSITION, SAL
FROM TEST44;
[RESULT]
RANK NAME DEPTNAME POSITION SAL
-----------------------------------
1 ์กฐ์กฐ ITํ ๋ถ์ฅ 5000
2 ์ฅ๋น ์ด๋ฌดํ ๋ถ์ฅ 5000
3 ๋ํ ์ธ์ฌํ ์ฐจ์ฅ 4000
4 ์ ๋น ๋ณด์ํ ์ฐจ์ฅ 4000
5 ์ฌํฌ ITํ ๋๋ฆฌ 3000
6 ๊ด์ฐ ๋ณด์ํ ์ฌ์ 2000
โ๏ธ
๋ฌธ์ 45. ๋ค์์ ORACLE ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉํ๋ SQL๋ฌธ๊ณผ SQL server ๋ฐ์ดํฐ๋ฒ ์ด์ค์ SQL์ ์ฐจ์ด์ ์ ๋ํ ๋ฌธ์ ์ด๋ค. ( )์ ์ฌ๋ฐ๋ฅธ ๊ฒ์?
[ORACLE]
CREATE TABLE TEAM_EMP
AS SELECT * FROM EMP;
[SQL server]
SELECT * ( ) FROM EMP;
โ๏ธ์ ๋ตํ์ธ๐ผ
๋ฌธ์ 46. ์ฃผ์ด์ง ๋ณด๊ธฐ์ SQL1์ ๋ํ ๊ฒฐ๊ณผ์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋๋ก SQL2์ ( )์ ์์ฑํ์์ค.
[SQL1]
SELECT COL1, COL2, COUNT(*)
FROM TEST46
GROUP BY ROLLUP(COL1, COL2);
[SQL2]
SELECT COL1, COL2, COUNT(*)
FROM TEST46
GROUP BY GROUPING SETS( );
โ๏ธ์ ๋ตํ์ธ๐ผ
๋ฌธ์ 47. ๋ค์์ ํ ์ด๋ธ์ ๋ํ SQL๋ฌธ์ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์์ค. ์ ๋ตํ์ธ๐ผ
[PRODUCT]
CREATE TABLE PRODUCT(
COL1 VARCHAR(20),
COL2 NUMBER(10));
INSERT INTO PRODUCT VALUES('1',1000);
INSERT INTO PRODUCT VALUES('2',2000);
INSERT INTO PRODUCT VALUES('3',3000);
INSERT INTO PRODUCT VALUES('4',4000);
INSERT INTO PRODUCT VALUES('5',5000);
[SQL]
INSERT INTO PRODUCT VALUES('6',6000);
COMMIT;
DELETE PRODUCT WHERE COL1 = '2';
UPDATE PRODUCT SET COL2 = 9000 WHERE COL2 = 1000;
ROLLBACK;
SELECT COUNT(COL1) FROM PRODUCT WHERE COL2 = 2000;
โ๏ธ
๋ฌธ์ 48. ๋ค์์ ํ ์ด๋ธ์ ๋ํ SQL๋ฌธ์ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์์ค.
[TEST48]
COL1 COL2
-----------------
1 10
2 20
3 NULL
4 40
5 50
[SQL]
SELECT AVG(NVL(COL2,0)) FROM TEST48;
โ๏ธ์ ๋ตํ์ธ๐ผ
๋ฌธ์ 49. ๋ค์์ ํ ์ด๋ธ์ ๋ํ SQL๋ฌธ์ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์์ค.
[TEST49_1]
COL1 COL2
-----------
1 1
1 2
2 1
3 1
3 2
[TEST49_2]
COL1 COL2
-----------
1 1
1 2
2 1
3 1
3 2
[SQL]
SELECT COUNT(*)
FROM TEST49_1 A, TEST49_2 B
WHERE A.COL1 <> B.COL1;
โ๏ธ์ ๋ตํ์ธ๐ผ
๋ฌธ์ 50. TEST50 ํ ์ด๋ธ์๋ ์ด 5๊ฑด์ ํ์ด ์๋ค. ๋ค์ ๋น์นธ์ ์ฌ๋ฐ๋ฅธ ๊ฒ์ ์์ฑํ์์ค.
[SQL]
SELECT COUNT(*) FROM TEST50
( ) TEST50;
[RESULT]
COUNT(*)
----------
25
1row selected
โ๏ธ์ ๋ตํ์ธ๐ผ
๐SQLD. ์ 38 ํ ๊ธฐ์ถ ๋ฌธ์ (์ด 50) - ์ ๋ต / ํด์ค
1. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : ์๊ธ์ข ํฉ๋ณ์์๋ ํ ๋ช ์ ํน์ ์ฌ๋ฌ ๋ช ์ ์์ฌ๊ฐ ๊ทผ๋ฌดํ๊ณ ๋ชจ๋ธ๋ง์ผ๋ก๋ ์์ฌ๊ฐ ์์ ์๋ ์๋ค.
์ง๋ฃ๋ ์์ฌ๋ง ํ ์ ์๊ณ ์์ฌ๋ ์ง๋ฃ๋ฅผ ํ์ง ์์ ์๋ ์๋ค.
2. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :
์ฑ๋ฅ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๊ณ ๋ ค์ฌํญ
1) ์ ๊ทํ๋ฅผ ์ํํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ์ ์ ์ฐ์ฑ์ ํ๋ณดํ๋ค.
2) ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฒด ์ฉ๋, ์๊ฐ, ์ฐ๊ฐ ์ฆ๊ฐ์จ์ ์์ธกํ๋ค.
3) ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ๋์ญ์ ์ ์ ํ(CRUD: Create Read Update Delete)์ ํ์ ํ๋ค.
4) ํฉ๊ณ ๋ฐ ์ ์ฐ ๋ฑ์ ์ํํ๋ ๋ฐ์ ๊ทํ๋ฅผ ์ํํ๋ค.(์ฑ๋ฅํฅ์์ ์ํ ํ๋)
5) ๊ธฐ๋ณธํค์ ์ธ๋ํค, ์ํผํ์ ๊ณผ ์๋ธํ์ ๋ฑ์ ์กฐ์ ํ๋ค.
6) ์ฑ๋ฅ๊ด์ ์์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ฒ์ฆํ๊ณ ํ์ธํ๋ค.
[ 3๊ฐ์ง ๋ชจ๋ธ๋ง ์์๋๊ธฐ ]
- ๊ฐ๋ ์ ๋ชจ๋ธ๋ง: ๊ฐ์ฒด์ ๊ฐ์ฒด๋ค ๊ฐ์ ๊ด๊ณ์์ ER๋ค์ด์ด๊ทธ๋จ์ ๋ง๋๋ ๊ณผ์
- ๋ ผ๋ฆฌ์ ๋ชจ๋ธ๋ง: ER๋ค์ด์ด๊ทธ๋จ์ ์ฌ์ฉํ์ฌ ๊ด๊ณ ์คํค๋ง ๋ชจ๋ธ์ ๋ง๋๋ ๊ณผ์
- ๋ฌผ๋ฆฌ์ ๋ชจ๋ธ๋ง: ๊ด๊ณ ์คํค๋ง ๋ชจ๋ธ์ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ ๊ตฌํํ๋ ๊ณผ์
3. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ๋ ผ๋ฆฌ์ ๋ชจ๋ธ์ ๋น์ฆ๋์ค ์ ๋ณด์ ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ ๋ฐ ๊ตฌ์ถ์ ํ์ ํ ์๋ ์๋ค.
์ฆ, ํต์ฌ ์ํฐํฐ์ ํค ์ํฐํฐ๋ฑ์ ์๋ณํ๊ณ ๋ชจ๋ธ๋งํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ธ๋งํ๋ค.
4. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ด์ฉ๋ด์ญ ์ํฐํฐ์์ ์ด์ฉ์ผ์ + ์ฌ์๋ฒํธ๊ฐ ๊ธฐ๋ณธํค(PK) ์ด๋ฏ๋ก ์ผ์๊ฐ ๊ฐ์ ๋ ์ ์ฌ๋ฌ ์ฝ๋๋ฅผ ์ด์ฉํ ์ ์๋ค.
์ฌ์, ์ด์ฉ ๋ด์ญ( (1 : M) โ 1๋ช ์ ์ฌ์์ ์ด์ฉ๋ด์ญ์ด ์์์๋ ์๊ณ ์์์๋ ์๋ค.)
์ฝ๋์ด์ฉ์ ๋ณด, ์ด์ฉ ๋ด์ญ( (1 : 0 or 1 : 1 ) : M โ ์ฝ๋ ์ด์ฉ์ ๋ณด๊ฐ ์์์๋ ์๊ณ ์์์๋ ์์ผ๋ฉฐ ์ฝ๋ ์ด์ฉ์ ๋ณด๊ฐ ์ด์ฉ๋ด์ญ์ ์์์๋ ์๊ณ ์์์๋ ์๋ค.)
5. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ ๊ทํ(Normalization)๋ ํจ์์ ์ข ์์ฑ์ ๋ฐ๋ผ์ ํ ์ด๋ธ์ ๋ถํดํ๋ ๊ณผ์ ์ผ๋ก ๋ฐ์ดํฐ ์ค๋ณต์ ์ ๊ฑฐํด์ ๋ชจ๋ธ์ ๋ ๋ฆฝ์ฑ์ ํฅ์์ํจ๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๊ทํ๋ฅผ ์ํํ์ง ์์ผ๋ฉด ๋ฐ์๋๋ ๋ฌธ์ ๊ฐ ๊ฐฑ์ ์ด์ (์ด์ํ์(Anoma-ly) ์ฝ์ , ์ญ์ , ์์ ์ด์ํ์์ด ์๋ค.) ์ด๊ณ ,
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณด์๊ณผ ๊ด๋ จ์ด ์๋ ๊ฒ์ ๋ทฐ(View) ์ด๋ค.
6. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : ๊ธฐ๋ณธํค(PK)๋ ์ํฐํฐ๋ฅผ ๋ํํ๋ ํค๋ก ์ต์์ฑ(Not Null)๊ณผ ์ ์ผ์ฑ(์ค๋ณต ์์)์ ๋ง์กฑํด์ผ ํ๋ค.
์ธ๋ํค(FK)๋ ๋ ๊ฐ์ ํ ์ด๋ธ ๊ฐ์ ์ฐ๊ฒฐ์ ์ค์ ํ๊ธฐ ์ํ Key์ด๋ค. ํ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ์ฐธ์กฐํ๋ ๋ค๋ฅธ ํ ์ด๋ธ์ ์นผ๋ผ์ด๋ค.
ํ์์์ฑ โ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ๋ฐ์ดํฐ, ์) ์ฃผ์์ ๊ฐ๊ฒฉ์ ํ๊ท ๋ฐ์ดํฐ ๋ฑ
7. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ํฐํฐ๋ ๊ด๊ณ๋ฅผ 2๊ฐ ์ด์ ๊ฐ์ง ์ ์๋ค.
์ํฐํฐ ํน์ง | ์ค๋ช |
์๋ณ์ | - ์ํฐํฐ๋ ์ ์ผํ ์๋ณ์๊ฐ ์์ด์ผ ํ๋ค. ์) ๋ฅผ ๋ค์ด ํ์ID, ๊ณ์ข๋ฒํธ |
์ธ์คํด์ค ์งํฉ | - 2๊ฐ ์ด์์ ์ธ์คํด์ค๊ฐ ์์ด์ผ ํ๋ค. ์) ๊ณ ๊ฐ์ ๋ณด๋ 2๋ช ์ด์ ์์ด์ผ ํ๋ค. |
์์ฑ | - ์ํฐํฐ๋ ๋ฐ๋์ ์์ฑ์ ๊ฐ์ง๊ณ ์๋ค. |
๊ด๊ณ | - ์ํฐํฐ๋ ๋ค๋ฅธ ์ํฐํฐ์ ์ต์ ํ ๊ฐ ์ด์ ๊ด๊ณ๊ฐ ์์ด์ผ ํ๋ค. - ์ํฐํฐ์ ๊ด๊ณ โ ์งํฉ๊ณผ ์งํฉ๊ฐ์ ๊ด๊ณ ์) ๊ณ ๊ฐ ์ํฐํฐ์์ ๊ณ ๊ฐ ๊ณ์ข๊ฐ์ค, ๊ณ ๊ฐ ํ์๋ฑ๊ธ ๋ถ์ฌ, ๊ณ ๊ฐ ๋ฐฐ์ก์ง ์ฃผ์ ๋ฑ๋ฑ |
์ ๋ฌด | - ์ํฐํฐ๋ ์
๋ฌด์์ ๊ด๋ฆฌ๋์ด์ผ ํ๋ ์งํฉ์ด๋ค. ์) ๊ณ ๊ฐ, ๊ณ์ข |
์ํฐํฐ์ ์ข ๋ฅ
์ข ๋ฅ | ์ค๋ช |
๋
๋ฆฝ ์ํฐํฐ [Kernel Entity, Master Entity] |
์ฌ๋, ๋ฌผ๊ฑด, ์ฅ์ ๋ฑ๊ณผ ๊ฐ์ด ํ์ค์ธ๊ณ์ ์กด์ฌํ๋ ์ํฐํฐ |
์
๋ฌด์ค์ฌ ์ํฐํฐ [Transaction Entity] |
Transaction์ด ์คํ๋๋ฉด์ ๋ฐ์ํ๋ ์ํฐํฐ |
์ข
์ ์ํฐํฐ [Dependent Entity] |
์ฃผ๋ก 1์ฐจ ์ ๊ทํ๋ก ์ธํด ๊ด๋ จ ์ค์ฌ์ํฐํฐ๋ก๋ถํฐ ๋ถ๋ฆฌ๋ ์ํฐํฐ |
๊ต์ฐจ ์ํฐํฐ [Intersaction Entity] |
M:M์ ๊ด๊ณ๋ฅผ ํด์ํ๋ ค๋ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ง ์ํฐํฐ [ex> M:M -> 1:M] |
1. ์ ํ๊ณผ ๋ฌดํ์ ๋ฐ๋ฅธ ์ํฐํฐ ์ข ๋ฅ
* ์ ํ๊ณผ ๋ฌดํ์ผ๋ก ๊ตฌ๋ถํ๋ ๊ธฐ์ค์ ๋ฌผ๋ฆฌ์ ํํ์ ์กด์ฌ ์ฌ๋ถ
์ข ๋ฅ | ์ค ๋ช |
์ ํ ์ํฐํฐ | ์ ๋ฌด์์ ๋์ถ๋๋ฉฐ ์ง์์ ์ผ๋ก ์ฌ์ฉ๋๋ Entity |
๊ฐ๋ ์ํฐํฐ | ๊ฐ๋
์ ์ผ๋ก ์ฌ์ฉ๋๋ Entity ์ ํ ์ํฐํฐ๋ ๋ฌผ๋ฆฌ์ ํํ๊ฐ ์์ง๋ง, ๊ฐ๋ ์ํฐ๋๋ ๋ฌผ๋ฆฌ์ ํํ๊ฐ ์๋ค |
์ฌ๊ฑด ์ํฐํฐ | ๋น์ฆ๋์ค ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ฉด์ ์์ฑ๋๋ Entity |
2. ๋ฐ์์์ ์ ๋ฐ๋ฅธ ์ํฐํฐ ์ข ๋ฅ
์ข ๋ฅ | ์ค ๋ช |
๊ธฐ๋ณธ ์ํฐํฐ [Basic Entity] |
๋ค๋ฅธ ์ํฐํฐ๋ก๋ถํฐ ์ํฅ์ ๋ฐ์ง ์๊ณ ๋
๋ฆฝ์ ์ผ๋ก ์์ฑ๋๋ ์ํฐํฐ ํค ์ํฐํฐ[Key Entity]๋ผ๊ณ ๋ ํจ |
์ค์ฌ ์ํฐํฐ [Main Entity] |
๊ธฐ๋ณธ ์ํฐํฐ์ ํ์ ์ํฐํฐ ๊ฐ์ ์ค๊ฐ์ ์๋ ์ํฐํฐ ๊ธฐ๋ณธ ์ํฐํฐ๋ก๋ถํฐ ๋ฐ์๋๊ณ ํ์ ์ํฐํฐ๋ฅผ ์์ฑํ๋ ์ํฐํฐ |
ํ์ ์ํฐํฐ [Active Entity] |
2๊ฐ ์ด์์ ์ํฐํฐ๋ก๋ถํฐ ๋ฐ์ํ๋ ์ํฐํฐ ์ง์์ ์ผ๋ก ์ ๋ณด๊ฐ ์ถ๊ฐ๋๊ณ ๋ณ๊ฒฝ๋๋ ์ํฐํฐ |
8. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ํ์ ์ฃผ๋ฌธ์ ํ ๊ฐ ์ด์ ๋ฐ๋์ ๊ฐ์ ธ์ผ ํ๋ ๊ฒ์ด ์๋๋ผ ์ ๊ฐ์ง ์๋ ์๋ค.
ํ๊ธฐ๋ฒ ๋ฌธ์ ๋ฅผ ๋ณผ๋ O ๋๊ทธ๋ผ๋ฏธ๋ฅผ ์ ์ํด์ ๋ณด๋ฉด ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํ์์์ต๋๋ค.
O = or (์์์๋ ์๊ณ or ์์์๋ ์๋ค.)
9. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ERD ํ๊ธฐ๋ฒ ์ค IE ํ๊ธฐ๋ฒ์ ๊ด๊ณ์ 1:N ๊ด๊ณ์์ N์ชฝ์ ์๋ฐ์ ํ์ํ๊ณ ์ ํ,
ํ์ ์ฐธ์ฌ๊ด๊ณ์์ ์ ํ ์ฐธ์ฌ(or)์ O, ํ์ ์ฐธ์ฌ์ | ๋ก ํ์ํ๋ค.
10. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ๊ฐ์ํ๋ ์ ์ ํ ๋ ์ง๊ฐ ๋ชจ๋ ๊ฐ๊ฒ ์์ฑ๋๊ธฐ ๋๋ฌธ์ ๋ค์ ๊ฐ์ ๊ฐ์ด ๋ถ์์ผ๋ก์จ ์ต์์ ์๊ฐ ์๋๋ฏ๋ก ์๋ชป๋ ๋ชจ๋ธ๋ง์ด๋ค.
์๋ณ์์ ํน์ง
- ์ ์ผ์ฑ : ์ฃผ์๋ณ์์ ์ํด ์ํฐํฐ๋ด์ ๋ชจ๋ ์ธ์คํด์ค๋ค์ด ์ ์ผํ๊ฒ ๊ตฌ๋ถ๋์ด์ผ ํจ
- ์ต์์ฑ : ์ฃผ์๋ณ์๋ฅผ ๊ตฌ์ฑํ๋ ์์ฑ์ ์๋ ์ ์ผ์ฑ์ ๋ง์กฑํ๋ ์ต์์ ์๊ฐ ๋์ด์ผ ํจ
- ๋ถ๋ณ์ฑ : ์ง์ ๋ ์ฃผ์๋ณ์ ๊ฐ์ ์์ฃผ ๋ณํ์ง ์๋ ๊ฒ์ด์ด์ผ ํจ
- ์กด์ฌ์ฑ : ์ฃผ์๋ณ์๊ฐ ์ง์ ์ด ๋๋ฉด ๋ฐ๋์ ๊ฐ์ด ๋ค์ด์์ผ ํจ(NOT NULL)
์๋ณ์ ๋ถ๋ฅ | ์๋ณ์ | ์ค๋ช |
๋ํ์ฑ์ฌ๋ถ |
์ฃผ์๋ณ์ | - ์ํฐํฐ ๋ด์์ ๊ฐ ํ์ ๊ตฌ๋ถํ ์ ์๋ ๊ตฌ๋ถ์์ด๋ฉฐ, ํ ์ํฐํฐ์ ์ฐธ์กฐ๊ด๊ณ๋ฅผ ์ฐ๊ฒฐํ ์ ์๋ ์๋ณ์ (ex. ์ฌ์๋ฒํธ, ๊ณ ๊ฐ๋ฒํธ) |
๋ณด์กฐ์๋ณ์ | - ์ํฐํฐ ๋ด์์ ๊ฐ ํ์ ๊ตฌ๋ถํ ์ ์๋ ๊ตฌ๋ถ์์ด๋ ๋ํ์ฑ์ ๊ฐ์ง์ง ๋ชปํด ์ฐธ์กฐ๊ด๊ณ ์ฐ๊ฒฐ์ ๋ชปํจ(ex. ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ) | |
์ค์ค๋ก ์์ฑ์ฌ๋ถ |
๋ด๋ถ์๋ณ์ | - ์ํฐํฐ ๋ด๋ถ์์ ์ค์ค๋ก ๋ง๋ค์ด์ง๋ ์๋ณ์(ex. ๊ณ ๊ฐ๋ฒํธ) |
์ธ๋ถ์๋ณ์ | - ํ ์ํฐํฐ์์ ๊ด๊ณ๋ฅผ ํตํด ํ ์ํฐํฐ๋ก๋ถํฐ ๋ฐ์์ค๋ ์๋ณ์(ex. ์ฃผ๋ฌธ์ํฐํฐ์ ๊ณ ๊ฐ๋ฒํธ) | |
์์ฑ์ ์ | ๋จ์ผ์๋ณ์ | - ํ๋์ ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋ ์๋ณ์(ex. ๊ณ ๊ฐ์ํฐํฐ์ ๊ณ ๊ฐ๋ฒํธ ) |
๋ณตํฉ์๋ณ์ | - ๋ ์ด์์ ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋ ์๋ณ์(ex. ์ฃผ๋ฌธ์์ธ์ํฐํฐ์ ์ฃผ๋ฌธ๋ฒํธ+์์ธ์๋ฒ) | |
๋์ฒด์ฌ๋ถ | ๋ณธ์ง์๋ณ์ | - ์ ๋ฌด(๋น์ฆ๋์ค)์ ์ํด ๋ง๋ค์ด์ง๋ ์๋ณ์(ex. ๊ณ ๊ฐ๋ฒํธ) |
์ธ์กฐ์๋ณ์ | - ์ ๋ฌด์ ์ผ๋ก ๋ง๋ค์ด์ง์ง๋ ์์ง๋ง ์์กฐ์๋ณ์๊ฐ ๋ณต์กํ ๊ตฌ์ฑ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ธ์์ ์ผ๋ก ๋ง๋ ์๋ณ์(ex. ์ฃผ๋ฌธ์ํฐํฐ์ ์ฃผ๋ฌธ๋ฒํธ(๊ณ ๊ฐ๋ฒํธ+์ฃผ๋ฌธ๋ฒํธ+์๋ฒ)) |
11. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : Connect by ๊ณ์ธตํ ์ฟผ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ ํํ์ฌ ๊ณ์ธต์ ์ธ ์์ ๊ทธ๋๋ก ๋ฆฌํดํ๋๋ฐ ์ฌ์ฉ๋๋ค.
ํ์ฌ ํ๊ณผ ๋ค๋ฅธ ํ์ Prior๋ผ๋ ํค์๋๋ฅผ ํตํด ๊ตฌ๋ณ๋๋ค.
Prior๋ ์์ ํ์ ์ฐธ์กฐํ๋ ๊ฒ์ผ๋ก ๋ฌธ์ ์์๋ "๋ฐฉ๊ธ ์ ํ์ COL2 ๊ฐ์ด ํ์ฌ ํ์ COL1 ๊ฐ์ธ ๋ชจ๋ ํ์ ์ฐพ์๋ผ" ๋ผ๋ ์๋ฏธ์ด๋ค.
CONNECT BY COL1 = PRIOR COL2;
WHERE ์ ์ COL3์ด 3์ธํ์ ์ ์ธ. โ COL3 ์ด 4์ธ๊ฒ๋ถํฐ ์์โ CONNECT BY COL1 = PRIOR COL2
COL1(D) COL2(B) COL3(4) โ 1๊ฐ
COL1(B) COL2(A) COL3(2) โ COL2(B)์ ๊ฐ๊ณผ ๊ฐ์ COL1(B) 1๊ฐ
COL1(A) COL2(NULL) COL3(1) โ COL2(A)์ ๊ฐ๊ณผ ๊ฐ์ COL1(A) 1๊ฐ
COL1 ์ค์ NULL ์ ์์ผ๋ฏ๋ก ์ข ๋ฃ
1 + 1 + 1 = 3๊ฐ
๐ก์์๋๊ธฐ
CONNECT BY PRIOR ์์ = ๋ถ๋ชจ (๋ถ๋ชจ โ ์์) (์ โ ๋ฐฉํฅ)
CONNECT BY PRIOR ๋ถ๋ชจ = ์์ (์์ โ ๋ถ๋ชจ) (์ญ โ ๋ฐฉํฅ)
CONNECT BY ์์ = PRIOR ๋ถ๋ชจ (์์ โ ๋ถ๋ชจ) (์ญ โ ๋ฐฉํฅ)
CONNECT BY ๋ถ๋ชจ = PRIOR ์์ (๋ถ๋ชจ โ ์์) (์ โ ๋ฐฉํฅ)
๊ตฌ๋ถ | ์ค๋ช |
START WITH | ๊ณ์ธต๊ตฌ์กฐ ์ ๊ฐ์ ์์ ์์น๋ฅผ ์ง์ ํ๋ ๊ตฌ๋ฌธ, ๋ฃจํธ ๋ฐ์ดํฐ๋ฅผ ์ง์นญ |
CONNECT BY | ๋ค์์ ์ ๊ฐ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ง์ , ์์ ๋ฐ์ดํฐ๋ CONNECT BY ์ ์ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ง์กฑํด์ผํจ(JOIN) |
PRIOR | CONNECT BY ์ ์ ์ฌ์ฉ๋๋ฉฐ ํ์ฌ ์ฝ์ ์นผ๋ผ์ ์ง์ |
PRIOR ์์ | ๋ถ๋ชจํํ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณ์ธต๊ตฌ์กฐ์์ ๋ถ๋ชจ -> ์์ ๋ฐฉํฅ์ผ๋ก ์๋ฐฉํฅ ์ ๊ฐ |
PRIOR ๋ถ๋ชจ | ์์ ํํ๋ฅผ ์ฌ์ฉํ๋ฉด ์์ -> ๋ถ๋ชจ ๋ฐฉํฅ์ผ๋ก ์ญ๋ฐฉํฅ ์ ๊ฐ |
NOCYCLE | ๋ฐ์ดํฐ๋ฅผ ์ ๊ฐํ๋ฉด์ ์ด๋ฏธ ๋ํ๋ฌ๋ ๋์ผํ ๋ฐ์ดํฐ๊ฐ ์ ๊ฐ์ค์ ๋ค์ ๋ํ๋๋ ๊ฒฝ์ฐ CYCLE์ด ์์ฑ. CYCLE์ด ๋ฐ์ํ ๋ฐ์ดํฐ๋ ๋ฐํ์ ์ค๋ฅ๋ฅผ ๋ฐฉ์์์ผ NOCYCLE ๊ตฌ๋ฌธ์ ํตํด CYCLE์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ดํ ๋ฐ์ดํฐ ์ ๊ฐ๋ฅผ ๋ฐฉ์ง |
ORDER SIBLINGS BY | ํ์ ๋ ธ๋(๋์ผ LEVEL) ์ฌ์ด ๋ฐ์ดํฐ ์ ๋ ฌ |
WHERE | ๋ชจ๋ ์ ๊ฐ๋ฅผ ์ํํ ๋ค ์ง์ ์กฐ๊ฑด์ ํตํด ๋ฐ์ดํฐ ํํฐ๋ง |
๊ตฌ๋ถ | ์ค๋ช |
CONNECT_BY_ROOT | ๊ณ์ธตํ ์ฟผ๋ฆฌ์์ ์ต์์ ๋ก์ฐ๋ฅผ ๋ฐํํ๋ ์ฐ์ฐ์๋ค. ์ฐ์ฐ์์ด๋ฏ๋ก CONNECT_BY_ROOT ๋ค์์๋ ํํ์์ด ์จ๋ค. |
CONNECT_BY_ISLEAF | CONNECT BY ์กฐ๊ฑด์ ์ ์๋ ๊ด๊ณ์ ๋ฐ๋ผ ํด๋น ๋ก์ฐ๊ฐ ์ตํ์ ์์ ๋ก์ฐ์ด๋ฉด 1์, ๊ทธ๋ ์ง ์์ผ๋ฉด 0์ ๋ฐํํ๋ ์์ฌ ์ปฌ๋ผ์ด๋ค. |
12. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ธํ ๋ ํํ ํ ์ด๋ธ์ ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด Nested Loop์กฐ์ธ์ ์ฌ์ฉํ๋ฉด ์ ๋๋ค. ๋ฌผ๋ก ์ตํฐ๋ง์ด์ ๊ฐ ์ด๋ฐ ๊ฒฝ์ฐ์ ์๋์ผ๋ก Nested Loop์กฐ์ธ์ผ๋ก ์คํํ์ง ์๊ณ Hash์กฐ์ธ ํน์ Sort Merge, Full Scan์ ์ฌ์ฉํ๋ค.
๋ฐฉ ๋ฒ | ์ค ๋ช |
์ค์ฒฉ ๋ฐ๋ณต ์กฐ์ธ (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. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : GRANT(๊ถํ๋ถ์ฌ), REVOKE(๊ถํํ์)
DCL(Data Control Language) ๋ฐ์ดํฐ ์ ์ด์ด
14. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : RENAME์ DDL(Data Definition Language) ๋ฐ์ดํฐ์ ์์ด ์ ์ํ๋ค.
๊ตฌ๋ถ | ์ข ๋ฅ |
DDL (๋ฐ์ดํฐ ์ ์์ด) |
CREATE, DROP, MODIFY(์ค๋ผํด), ALTER(SQL์๋ฒ), RENAME, TRUNCATE |
DML (๋ฐ์ดํฐ ์กฐ์์ด) |
SELECT, INSERT, DELETE, UPDATE |
DCL (๋ฐ์ดํฐ ์ ์ด์ด) |
GRANT, REVOKE |
TCL (ํธ๋์ญ์ ์ ์ด์ด) |
COMMIT, ROLLBACK, SAVE POINT |
15. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค :BAN ์นผ๋ผ์ผ๋ก ๊ทธ๋ฃนํํ๊ณ DISTINCT๋ฅผ ์ฌ์ฉํด์ ์ค๋ณต๋ ์ด๋ฆ์ ์ ๊ฑฐํ๊ณ ์นด์ดํ ํ๋ค.
16. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : ๋ณด๊ธฐ 1๋ฒ์ 6๊ฐ๋ฅผ ๋ฐํํ๊ณ ๋๋จธ์ง๋ ๋ชจ๋ 4๊ฐ๋ฅผ ๋ฐํํ๋ค.
NULLIF์ ํน์ง : ๋ ๊ฐ์ ๊ฐ์ด ๊ฐ์ผ๋ฉด NULL, ๊ฐ์ง ์์ผ๋ฉด ์ฒซ ๋ฒ์งธ ๊ฐ์ ๋ฐํํ๋ค.
17. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :NULL์ ๋น๊ต์์ ์ ์ด์ ์ ์ธ๋์ด IN() ์ฐ์ฐ์ ์์ NULL์ด ์์ด๋ ๋น๊ต์ฐ์ฐ์ ์ํํ์ง ์๋๋ค.
์ฃผ์ด์ง ํ ์ด๋ธ์ COL1 ์์ฑ๊ฐ 1, 2๊ฐ์ ๊ฐ๋ ํ๋ง ์กฐํ๋๋ค.
18. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : ์กฐํ๊ฒฐ๊ณผ๊ฐ ์์๋ฅผ ๋์ดํ๋ฉด
DNAME, JOB๋ณ ์๊ณ โ DNAME ๋ณ ์๊ณ โ JOB ๋ณ ์๊ณ โ ์ ์ฒด ์ง๊ณ
๋ชจ๋ ์กฐํฉ ๊ฐ๋ฅํ ์๊ณ์ ์ง๊ณ๊ฐ ์กฐํ ๋์์ผ๋ฏ๋ก ๋น์นธ์ ๋ค์ด๊ฐ ๊ทธ๋ฃนํจ์๋ CUBE(DEPTNO, JOB) ์ ๋๋ค.
SQL> SELECT DNAME,JOB,SUM(SAL) FROM TEST18 GROUP BY CUBE(DNAME,JOB);
DNAME JOB SUM(SAL)
-------------------- --------------------
45000
CLERK 12000
MANAGER 15000
PRESIDENT 18000
SALES 24000
SALES CLERK 7000
SALES MANAGER 8000
SALES PRESIDENT 9000
RESEARCH 15000
RESEARCH CLERK 4000
RESEARCH MANAGER 5000
RESEARCH PRESIDENT 6000
ACCOUNTING 6000
ACCOUNTING CLERK 1000
ACCOUNTING MANAGER 2000
ACCOUNTING PRESIDENT 3000
16 rows selected.
SQL> SELECT DNAME,JOB,SUM(SAL) FROM TEST18 GROUP BY ROLLUP(DNAME,JOB);
DNAME JOB SUM(SAL)
-------------------- --------------------
SALES CLERK 7000
SALES MANAGER 8000
SALES PRESIDENT 9000
SALES 24000
RESEARCH CLERK 4000
RESEARCH MANAGER 5000
RESEARCH PRESIDENT 6000
RESEARCH 15000
ACCOUNTING CLERK 1000
ACCOUNTING MANAGER 2000
ACCOUNTING PRESIDENT 3000
ACCOUNTING 6000
45000
13 rows selected.
SQL> SELECT DNAME,JOB,SUM(SAL) FROM TEST18 GROUP BY GROUPING SETS(DNAME,JOB);
DNAME JOB SUM(SAL)
-------------------- -------------------- ----------
ACCOUNTING 6000
RESEARCH 15000
SALES 24000
CLERK 12000
PRESIDENT 18000
MANAGER 15000
6 rows selected.
SQL> SELECT DNAME,JOB,SUM(SAL) FROM TEST18 GROUP BY CUBE(DNAME);
SELECT DNAME,JOB,SUM(SAL) FROM TEST18 GROUP BY CUBE(DNAME)
*
ERROR at line 1:
ORA-00979: not a GROUP BY expression
4๋ฒ ๋ณด๊ธฐ์ CUBE(DNAME) ์ด๋ ๊ฒ ํ๋ธ๋ฅผ ์์ฑํ๋๊ฑด ์๋ฏธ๊ฐ ์๋ค.
๊ตฌ๋ถ | ์ค๋ช |
ROLLUP | - ์ ์ฒดํฉ๊ณ์ ์๊ทธ๋ฃน ๊ฐ์ ์๊ณ๋ฅผ ๊ณ์ฐํ๋ ROLLUP ํจ์ ์) GROUP BY ROLLUP (DEPTNO); โ DEPTNO ํฉ๊ณ(์๊ณ), ์ ์ฒด ํฉ๊ณ๋ฅผ ์กฐํ |
CUBE | - CUBE๋ ์ ์ํ ์นผ๋ผ์ ๋ํด์ ๊ฒฐํฉ ๊ฐ๋ฅํ ๋ชจ๋ ์ง๊ณ๋ฅผ ๊ณ์ฐํ๋ค. - ๋ค์ฐจ์ ์ง๊ณ๋ฅผ ์ ๊ณตํ์ฌ ๋ค์ํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ ์ ์๋ค. ์) GROUP BY CUBE(DEPTNO, JOB); โ DEPTNO ํฉ๊ณ, JOB ํฉ๊ณ, DEPTNO & JOB ํฉ๊ณ, ์ ์ฒด ํฉ๊ณ๋ฅผ ์กฐํ ์กฐํฉํ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๊ฐ ์กฐํฉ๋๋ค. *์์คํ ์ ๋ถํ๋ฅผ ๋ง์ด ์ฃผ๋ ๋จ์ ์ด ์์ |
GROUPING SET | - ์ํ๋ ๋ถ๋ถ์ ์๊ณ๋ง ์์ฝ๊ฒ ์ถ์ถํ์ฌ ๊ณ์ฐํ ์ ์๋ GROUPING SETS ํจ์ |
19. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : C2 ๊ฐ์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ณ CASE๋ฌธ์ผ๋ก B, A, S ๋ฑ๊ธ์ ๋ถ์ฌํ๋ค. ์ ์ฒด๋ฑ๊ธ์ด 300์ ์ ๋๋ ๋ฑ๊ธ์ด ์๊ธฐ ๋๋ฌธ์ S๋ฑ๊ธ์ ์๊ณ
100 ์ด์์ธ C1์ 6๋ฒ๋ง A๋ฑ๊ธ์ ๋ฐ๋๋ค.
20. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ง๊ณ ํจ์์์ COUNT(*) ํจ์๋ ์กฐ๊ฑด์ ์ด ๊ฑฐ์ง์ผ ๋ 0์ ๋ฐํํ๋ค.
21. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : ๋๊ฐ์๊ฒ ๋๋ฒ ๋์์ ๋ฌธ๋ฒ์ค๋ฅ ์ด๋ค.
1) SUM(๊ธ์ฌ) OVER() : ์ ์ฒด ๊ธ์ฌ์ ํฉ๊ณ / AVG(๊ธ์ฌ) OVER() : ํ๊ท ๊ธ์ฌ
2) UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING โ ์์๋ถํฐ ๋๊น์ง์ ์ ์ฒด ํฉ๊ณ
2)
SUM(SAL)
OVER(PARTITION BY JOB
ORDER BY EMPNO RANGE
BETWEEN UNBOUNDED PRECEDING
AND UNBOUNDED FOLLOWING
) SAL1
[๊ฒฐ๊ณผ ์์]
SAL SAL2
----------
10 60
20 60
30 60
3) UNBOUNDED PRECEDING AND CURRENT ROW โ ๋์ ํฉ๊ณ
3)
SUM(SAL)
OVER(PARTITION BY JOB
ORDER BY JOB RANGE
BETWEEN UNBOUNDED PRECEDING
AND CURRENT ROW
) SAL2
[๊ฒฐ๊ณผ ์์]
SAL SAL2
----------
10 10
20 30
30 60
โจOVER์ ์ด๋ ๋ฌด์์ธ๊ฐ?
[ OPEN ]
โจWINDOW FUNCTION
[ OPEN ]
โจWINDOW ์
[ OPEN ]
22. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : PL/SQL์ ์ ์ฐจํ ์ธ์ด๋ก PL/SQL ๋ด๋ถ์์ ํ ์ด๋ธ์ ์์ฑํ ์ ์๋ค.
PL/SQL๋ด๋ถ์์ ํ ์ด๋ธ์ ์์ฑํ๋ ์ด์ ๋ ์์ ํ ์ด๋ธ๋ก ์ ๊น ์ฌ์ฉํ๊ธฐ ์ํ ์ฉ๋๊ฐ ๋ง๋ค.
23. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : CREATE INDEX [์ธ๋ฑ์ค๋ช ] ON [ํ ์ด๋ธ๋ช ] [์นผ๋ผ๋ช ]
์ธ๋ฑ์ค ์์ฑ / ์ญ์ ๊ตฌ๋ฌธ
-- ์์ฑ
CREATE INDEX ์ธ๋ฑ์ค๋ช
ON ํ
์ด๋ธ๋ช
( ์์ฑ๋ช
, ์์ฑ๋ช
,โฆ)
-- ์ญ์
DROP INDEX ์ธ๋ฑ์ค๋ช
ON ํ
์ด๋ธ๋ช
-- ์์
์ธ๋ฑ์ค ์ญ์ ํ ๋ค์ ๋ง๋ค์ด์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผ ํ๋ค
-- ์ธ๋ฑ์ค ์กฐํ
SELECT ํ
์ด๋ธ๋ช
, ์ธ๋ฑ์ค๋ช
, ์ปฌ๋ผ๋ช
FROM ALL_IND_COLUMNS
WHERE TABLE_NAME = 'ํ
์ด๋ธ๋ช
'
24. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ROLLBACK (์ด์ ์ํ๋ก ๋๋๋ฆฌ๊ธฐ) ์ด๋ฏ๋ก TEST24์ COUNT(*) โ 3๊ฐ
SAVEPOINT [์ธ์ด๋ธํฌ์ธํธ ๋ช
]
ROLLBACK TO [์ ์ฅ๋ ์ธ์ด๋ธํฌ์ธํธ ๋ช
]
-- SAVEPOINT ๋ก ์ ์ฅํ๊ณ ROLLBACK TO ๋ก ์ ์ฅ๋ ๊ณณ์ผ๋ก ๋์๊ฐ๋ค.
์) ๊ฒ์ํ ๋ ์ธ์ด๋ธํฌ์ธํธ ์ ์ฅํ, ์ ์ฅ๋ ๊ทธ ์๊ฐ์ผ๋ก ๋๋์๊ฐ
25. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : MINUS (์ฐจ์งํฉ) 1์ ์ ์ธํ๊ฒ ๋๋ฏ๋ก 2, 3์ด ์ถ๋ ฅ๋๋ค.
26. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : EXISTS(์กด์ฌํ๋), NOT EXISTS(์กด์ฌํ์ง ์์) ์ด๋ฏ๋ก
CUSTOMERS ํ ์ด๋ธ์์ ์กด์ฌํ์ง ์๋ ๊ณ ๊ฐID ์๋ณ์ ์ํด์๋ NOT EXISTS๋ฅผ ์ฌ์ฉํ๊ณ
WHERE์ ์ CUSTOMER.ID = ORDER.ID ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
27. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : <>(๊ฐ์ง์์), ANY (๋ค์์ ๋น๊ต๊ฐ ์ค ํ๋๋ผ๋ ๋ง์กฑํ๋ฉด TRUE ) ์ด๋ฏ๋ก ๋ณด๊ธฐ 4๋ฒ์ ๋ชจ๋ ํ์ด ์ถ๋ ฅ๋๋ค.
์) EMP ํ ์ด๋ธ์ DEPTNO(10, 20, 30) , DEPT ํ ์ด๋ธ์ DEPTNO(10, 20, 30, 40) ๋ผ๋ ๋ฐ์ดํฐ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์๋
28. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ธ๋ฑ์ค์ ๋ํด์ ์ฐ์ฐ์ ํ๋ฉด ์ธ๋ฑ์ค๊ฐ ๋ณํ์ด ๋๋ฏ๋ก ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ์๊ฐ ์๋ค.
29. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋คํธ์ํฌ๋ฅผ ํตํด์ ์ฌ๋ฌ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค.
๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฅ์ ๊ณผ ๋จ์
์ฅ์ | ๋จ์ |
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ขฐ์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ด ๋๋ค. | ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ฌ๋ฌ ๋คํธ์ํฌ๋ฅผ ํตํด์ ๋ถ๋ฆฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ด๋ฆฌ์ ํต์ ๊ฐ ์ด๋ ต๋ค. |
๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ์๋ต์ด ๊ฐ๋ฅ | ๋ณด์๊ด๋ฆฌ๊ฐ ์ด๋ ต๋ค. |
๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ถ๊ฐํ์ฌ ์์คํ ์ฉ๋ ํ์ฅ์ด ์ฝ๋ค. | ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๊ด๋ฆฌ๊ฐ ์ด๋ ต๋ค. |
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ๊ฐ ๋ณต์กํจ |
30. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : ์คํ๊ณํ (Execution Plan)
์คํ๊ณํ์ด๋ SQL์ ์คํํ๊ธฐ ์ํ ์ ์ฐจ์ ๋ฐฉ๋ฒ์ ์๋ฏธํ๋ค.
- SQL๊ฐ๋ฐ์๊ฐ SQL์ ์์ฑํ์ฌ ์คํํ ๋, SQL์ ์ด๋ป๊ฒ ์คํํ ๊ฒ์ธ์ง๋ฅผ ๊ณํํ๊ฒ ๋๋ค. ์ฆ, SQL์คํ๊ณํ์ ์๋ฆฝํ SQL์ ์คํํ๋ค.
- ์ตํฐ๋ง์ด์ ๋ SQL์ ์คํ๊ณํ์ ์๋ฆฝํ๊ณ SQL์ ์คํํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ์ํํธ์จ์ด์ด๋ค.
SQL> SET AUTOTRACE ON;
SQL> SELECT*FROM TEST30;
DNAME JOB SAL
-------------------- -------------------- ----------
ACCOUNTING CLERK 1000
ACCOUNTING MANAGER 2000
ACCOUNTING PRESIDENT 3000
RESEARCH CLERK 4000
RESEARCH MANAGER 5000
RESEARCH PRESIDENT 6000
SALES CLERK 7000
SALES MANAGER 8000
SALES PRESIDENT 9000
9 rows selected.
Execution Plan -- ์คํ๊ณํ
----------------------------------------------------------
Plan hash value: 2195686282
----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 9 | 333 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| TEST30 | 9 | 333 | 2 (0)| 00:00:01 |
----------------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement (level=2)
Statistics
----------------------------------------------------------
4 recursive calls
0 db block gets
8 consistent gets
0 physical reads
0 redo size
921 bytes sent via SQL*Net to client
519 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
9 rows processed
31. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ํํฐ์ ์ธ๋ฑ์ค์ ๊ฒฝ์ฐ ํํฐ์ ํค์ ๋ํด์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ ์๊ณ ํํฐ์ ํค์ ๋ํด์ ์์ฑํ ์ธ๋ฑ์ค๋ฅผ GLOBAL์ธ๋ฑ์ค๋ผ๊ณ ํ๋ค.
ํํฐ์ ์ด๋ผ๋๊ฒ์ ์ด๋ค ํน์ ํ ๊ธฐ์ค์ผ๋ก ๋ถํ ํ๋๊ฒ์ด๋ค. (์ปฌ๋ผ์ด ํํฐ์ Key ๊ฐ ๋๋ค.)
32. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ซ์์ NULL ์ ๋ํ๋ฉด NULL ์ด๋ฏ๋ก 0, 10 + 12 = 22
WHEN SUM (COL1 + COL2) IS NULL THEN 0
ELSE SUM (COL1 + COL2) ์ด๋ฏ๋ก ์๋์ ๊ฐ๋ค.
NULL + 10 = NULL โ 0
12 + NULL = NULL โ 0
NULL + NULL = NULL โ 0
10 + 12 = 22
33. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : 2๋ฒ์ ๋ฐ์ดํฐ๊ฐ ์กฐํ๋์ง ์๋๋ค. ์๋ํ๋ฉด ROWNUM์ ๋ ผ๋ฆฌ์ ์ธ ์ซ์์ด๋ฏ๋ก "ROWNUM = 2" ์ ๊ฐ์ด ์กฐํํ๋ฉด ์ฐพ์ ์ ์๋ค.
[ 1๋ฒ RESULT ]
ENAME SAL
---------- ----------
์กฐ์๋ฃก 6000
[ 2๋ฒ RESULT ]
no rows selected
[ 3๋ฒ RESULT ]
ENAME SAL
---------- ----------
์กฐ์๋ฃก 6000
์ด์ 5000
์ฌํฌ 4000
๊ด์ฐ 3000
์กฐ์กฐ 2000
์ ๋น 1000
[ 4๋ฒ RESULT ]
ENAME SAL
---------- ----------
์กฐ์๋ฃก 6000
์ด์ 5000
์ฌํฌ 4000
34. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
์ฐ์ ์์ | ์ฐ์ฐ์ |
1 | ์ฐ์ ์ฐ์ฐ์(*, /, +, -) |
2 | ์ฐ๊ฒฐ ์ฐ์ฐ์ (||) |
3 | ๋น๊ต ์ฐ์ฐ์(<, >, <=, =>, <>, =) |
4 | IS NULL, LIKE, IN |
5 | BETWEEN |
6 | NOT ์ฐ์ฐ์ |
7 | AND ์ฐ์ฐ์ |
8 | OR ์ฐ์ฐ์ |
35. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : SELF JOIN์ ๋์ผํ ํ ์ด๋ธ์์ ๋ฐ์ํ๋ ์กฐ์ธ์ ์๋ฏธํ๋ฉฐ, FROM์ ์ ๋์ผํ ํ ์ด๋ธ๋ช ์ด ๋ ๋ฒ ์ด์ ๋ํ๋๋ค. ๊ทธ๋ฆฌ๊ณ SELF JOIN์ ํ๊ธฐ ์ํด์ ๋์ผํ ํ ์ด๋ธ์ ๋ ๋ฒ ์ด์ ์ฌ์ฉํ๋ฏ๋ก FROM์ ์ ๋ณ์นญ(Alias)์ ์ฌ์ฉํด์ผ ํ๋ค.
[SELF JOIN]
SELECT A.์นผ๋ผ๋ช
,
B.์นผ๋ผ๋ช
FROM ํ
์ด๋ธ1 A, ํ
์ด๋ธ2 B
WHERE A.์นผ๋ผ๋ช
2 = B.์นผ๋ผ๋ช
1
36. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : SELECT * FROM [ํ ์ด๋ธ๋ช ] WHERE LIKE [์กฐ๊ฑด]
SQL> SELECT*FROM TEST36_1 A, TEST36_2 B WHERE A.ENAME LIKE B.CONDITION;
EMPNO ENAME NO CONDITION
---------- ---------- ---------- ----------
1000 ์กฐ์กฐ 1 ์กฐ%
3000 ์กฐํ 1 ์กฐ%
2000 ๊ด์ฐ 2 %์ฐ%
-- ๋ฌธ์ ์์ COUNT(*) ์ด๋ฏ๋ก
SQL> SELECT COUNT(*) ROWCNT FROM TEST36_1 A, TEST36_2 B WHERE A.ENAME LIKE B.CONDITION;
ROWCNT
----------
3
--'์กฐ์กฐ'๋ก ์์ํ๋ ์ด๋ฆ ์กฐํ
WHERE B.CONDITION LIKE '์กฐ์กฐ%'
--'์ฐ'๊ฐ ํฌํจ๋ ์ด๋ฆ ์กฐํ
WHERE B.CONDITION LIKE '%์ฐ%'
--'์กฐ์กฐ'๋ก ๋๋๋ ์ฌ์์ ์ด๋ฆ ์กฐํ
WHERE B.CONDITION LIKE '%์กฐ์กฐ'
--A๋ก ์์ํ๋ ๋ฌธ์๋ฅผ ์ฐพ๊ธฐ--
SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ WHERE ์ปฌ๋ผ๋ช
LIKE 'A%'
--A๋ก ๋๋๋ ๋ฌธ์ ์ฐพ๊ธฐ--
SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ WHERE ์ปฌ๋ผ๋ช
LIKE '%A'
--A๋ฅผ ํฌํจํ๋ ๋ฌธ์ ์ฐพ๊ธฐ--
SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ WHERE ์ปฌ๋ผ๋ช
LIKE '%A%'
--A๋ก ์์ํ๋ ๋๊ธ์ ๋ฌธ์ ์ฐพ๊ธฐ--
SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ WHERE ์ปฌ๋ผ๋ช
LIKE 'A_'
--์ฒซ๋ฒ์งธ ๋ฌธ์๊ฐ 'A''๊ฐ ์๋ ๋ชจ๋ ๋ฌธ์์ด ์ฐพ๊ธฐ--
SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ WHERE ์ปฌ๋ผ๋ช
LIKE'[^A]'
--์ฒซ๋ฒ์งธ ๋ฌธ์๊ฐ 'A'๋๋'B'๋๋'C'์ธ ๋ฌธ์์ด ์ฐพ๊ธฐ--
SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ WHERE ์ปฌ๋ผ๋ช
LIKE '[ABC]'
SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ WHERE ์ปฌ๋ผ๋ช
LIKE '[A-C]'
37. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : COUNT์ ์ปฌ๋ผ์ ์ฃผ์์๋ NULL๊ฐ์ ํฌํจ์ด ๋์ง์์ผ๋ฏ๋ก (2,2,3)
SQL> SELECT COUNT(*) FROM TEST37;
COUNT(*)
----------
4
โ ์ ์ฒด ํ์ ๊ฐฏ์๋ฅผ ๋ฐํํ ๋๋ NULL ํฌํจ
SQL> SELECT COUNT(COL1) FROM TEST37;
COUNT(COL1)
-----------
2
โ (์ปฌ๋ผ๋ช
์ ์ง์ ํ ๊ฒฝ์ฐ NULL ๋ฏธํฌํจ)
SQL> SELECT*FROM TEST37 WHERE COL1 IN(12,10,NULL);
COL1 COL2
---------- ----------
12
10 12
โ 2๊ฑด
SQL> SELECT COL1, COUNT(*) FROM TEST37 GROUP BY COL1;
COL1 COUNT(*)
---------- ----------
2
12 1
10 1
โ 3๊ฑด
38. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : ํ ์ด๋ธ B๋ฅผ ์์ฑํ ๋ "ON DELETE CASCADE" ์ต์ ์ ์ฌ์ฉํ๊ณ Aํ ์ด๋ธ์ ํ์ ์ญ์ ํ๋ฉด B ํ ์ด๋ธ์ ํ๋ ๊ฐ์ด ์ญ์ ๋๋ค.
SQL> SELECT*FROM B;
A B
---------- ----------
1 1
2 2
SQL> DELETE FROM A WHERE A=1;
1 row deleted.
SQL> SELECT*FROM B;
A B
---------- ----------
2 2
39. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : GROUP BY COL1 โ ์กฐ์กฐ(1๊ฐ),์ ๋น(2๊ฐ),๊ด์ฐ(3๊ฐ),์ฌํฌ(1๊ฐ),์ด์ (1๊ฐ)
โ HAVING COUNT(*) > 2 ์ด๋ฏ๋ก ๊ฐฏ์๊ฐ 2๊ฐ ์ด์์ธ ๊ด์ฐ์ ๊ฐฏ์ โ 3
40. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : DISTINCT (์ค๋ณต์ ๊ฑฐ)
COL1 COL2
-----------
์กฐ์กฐ 1
์กฐ์กฐ 2
์กฐ์กฐ 3
COUNT(COL1) COUNT(COL2)
------------------------
3 3
41. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : CHAR๋ ๊ณ ์ ๊ธธ์ด ๋ฌธ์์ด์ ์๋ฏธํ๋ค.
DOUBLE ์ด DECIMAL ์ ๋นํด ๋น๊ตํ ์ ์์ด ํฌ์ง๋ง, ์์์ ์ ํํํ๋ ๊ฒ์๋ DECIMAL ์ด ๋ ์ ๋ฐํ๋ค.
์ซ์์ ์ ๋ฐํ ํํ๊ณผ ๊ธ์ต๊ด๋ จ ๊ณ์ฐ๊ณผ ๊ฐ์ ๋ถ๋ถ์ ์ฌ์ฉ ๋๋ค.
DECIMAL(m, d) : M์ ์ต๋๊ฐ์ 65, D๋ ์์ ์๋ฆฟ์์ด๋ฉฐ 0์ด๋ฉด ์์์ ๊ฐ์ง์ง ์์
mysql> CREATE TABLE T1(NUM DECIMAL(65,30));
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO T1 VALUES(123.123);
Query OK, 1 row affected (0.00 sec)
mysql> SELECT*FROM T1;
+------------------------------------+
| NUM |
+------------------------------------+
| 123.123000000000000000000000000000 |
+------------------------------------+
1 row in set (0.00 sec)
42. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : ORDER BY ๊ฐ ํญ์ ๋ง์ง๋ง์ ์คํ๋๋ค.
1๏ธโฃFROM ์ ์์ ํ ์ด๋ธ์ ๋ชฉ๋ก์ ๊ฐ์ ธ์จ๋ค.
2๏ธโฃWHERE ์ ์์ ๊ฒ์ ์กฐ๊ฑด์ ์ผ์นํ์ง์๋ ํ์ ์ ์ธํ๋ค.
3๏ธโฃGROUP BY ์ ์ ๋ช ์๋ ํ์ ๊ฐ์ ๊ทธ๋ฃนํ ํ๋ค.
4๏ธโฃHAVING ์ ์ GROUP BY ์ ๋ก ๊ทธ๋ฃนํ๋ ๋ฐ์ดํฐ๋ฅผ ๋์์ผ๋ก ์กฐ๊ฑด์ ์ ์ํ๋ค.
5๏ธโฃSELECT ์ ์์ ๋ช ์ํ ์นผ๋ผ๊ฐ๋ค์ ์กฐํํ๋ค.
6๏ธโฃORDER BY ์ ์์ ๋ช ์ํ ์นผ๋ผ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํํ ์ถ๋ ฅ
43. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ์์ ๊ด๊ณ ์ฐ์ฐ์๋, ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉํ ์ ์๋๋ก ๊ฐ๋ฐํ ๊ด๊ณ ์ฐ์ฐ์๋ฅผ ์๋ฏธํ๋ค. DELETE๋ ํฌํจ๋์ง ์๋๋ค.
์์ ๊ด๊ณ ์ฐ์ฐ์
์ฐ์ฐ์ | ํน์ง |
SELECT ( ฯ ) |
ยท ๋ฆด๋ ์ด์
์ ์กด์ฌํ๋ ํํ ์ค์์ ์ ํ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํํ์ ๋ถ๋ถ์งํฉ์ ๊ตฌํ์ฌ ์๋ก์ด ๋ฆด๋ ์ด์
์ ๋ง๋ฆ ยท ๋ฆด๋ ์ด์ ์ ํ(๊ฐ๋ก)์ ํด๋นํ๋ ํํ์ ๊ตฌํ๋ ๊ฒ์ด๋ฏ๋ก ์ํ ์ฐ์ฐ์ด๋ผ๊ณ ๋ ํจ ยท ์ฐ์ฐ์์ ๊ธฐํธ๋ ๊ทธ๋ฆฌ์ค ๋ฌธ์ ์๊ทธ๋ง(ฯ)๋ฅผ ์ฌ์ฉํจ |
PROJECT ( ฯ ) |
ยท ์ฃผ์ด์ง ๋ฆด๋ ์ด์
์์ ์์ฑ List์ ์ ์๋ Attribute๋ง์ ์ถ์ถํ๋ ์ฐ์ฐ ยท ๋ฆด๋ ์ด์ ์ ์ด(์ธ๋ก)์ ํด๋นํ๋ Attribute๋ฅผ ์ถ์ถํ๋ ๊ฒ์ด๋ฏ๋ก ์์ง ์ฐ์ฐ์๋ผ๊ณ ๋ ํจ ยท ์ฐ์ฐ์์ ๊ธฐํธ๋ ๊ทธ๋ฆฌ์ค ๋ฌธ์ ํ์ด(ฯ)๋ฅผ ์ฌ์ฉํจ |
JOIN ( โ ) |
ยท ๊ณตํต ์์ฑ์ ์ค์ฌ์ผ๋ก 2๊ฐ์ ๋ฆด๋ ์ด์
์ ํ๋๋ก ํฉ์ณ์ ์๋ก์ด ๋ฆด๋ ์ด์
์ ๋ง๋๋ ์ฐ์ฐ ยท ์ฐ์ฐ์์ ๊ธฐํธ๋ โ๋ฅผ ์ฌ์ฉํจ ยท ์กฐ์ธ ์กฐ๊ฑด์ด '='์ผ ๋ ๋์ผํ ์์ฑ์ด ๋ ๋ฒ ๋ํ๋๊ฒ ๋๋๋ฐ, ์ด ์ค ์ค๋ณต๋ ์์ฑ์ ์ ๊ฑฐํ์ฌ ๊ฐ์ ์์ฑ์ ํ ๋ฒ๋ง ํ๊ธฐํ๋ ๋ฐฉ๋ฒ์ ์์ฐ(NATURAL) ์กฐ์ธ์ด๋ผ๊ณ ํจ |
DIVISION ( รท ) |
ยท X โ Y์ธ 2๊ฐ์ ๋ฆด๋ ์ด์ ์์ R(X)์ S(Y)๊ฐ ์์ ๋, R์ ์์ฑ์ด S์ ์์ฑ๊ฐ์ ๋ชจ๋ ๊ฐ์ง ํํ์์ S๊ฐ ๊ฐ์ง ์์ฑ์ ์ ์ธํ ์์ฑ๋ง์ ๊ตฌํ๋ ์ฐ์ฐ |
- - - - - - - - ์ฃผ๊ด์ - - - - - - - -
44. ์ ๋ต : ROW_NUMBER()
๐๋ฌธ์ ํ์ธ
ํด์ค : ROW_NUMBER() : ์ค๋ณต๊ฐ์ด ์์ด๋ ๊ณ ์ ๋ฑ์ ๋ถ์ฌ(1์, 2์, 3์, 4์)
RANK() : ์ค๋ณต๊ฐ์ ์ค๋ณต๋ฑ์, ๋ฑ์ ๊ฑด๋๋(1์, 1์, 3์, 4์)
DENSE_RANK() : ์ค๋ณต๊ฐ์ ์ค๋ณต๋ฑ์, ๋ฑ์ ์ ๊ฑด๋๋(1์, 1์, 2์, 2์) *๋์ผ ๋ฑ์ ์์์ ์ํฅ์ด ์๋ค.
45. ์ ๋ต : INTO TEAM_EMP
๐๋ฌธ์ ํ์ธ
ํด์ค : SELECT * INTO ์๋ก๋ง๋คํ ์ด๋ธ๋ช FROM ๋ณต์ฌํ ํ ์ด๋ธ๋ช
[์ค๋ผํด]
<ํ
์ด๋ธ ๋ณต์ฌํ ๋>
CREATE TABLE ์๋ก๋ง๋คํ
์ด๋ธ๋ช
AS
SELECT * FROM ๋ณต์ฌํ ํ
์ด๋ธ๋ช
[WHERE ์ ]
<ํ
์ด๋ธ ๊ตฌ์กฐ๋ง ๋ณต์ฌํ ๋>
CREATE TABLE ์๋ก๋ง๋คํ
์ด๋ธ๋ช
AS
SELECT * FROM ๋ณต์ฌํ ํ
์ด๋ธ๋ช
WHERE 1=2 [where์๋ค๊ฐ ์ฐธ์ด ์๋ ์กฐ๊ฑด์ ๋ฃ์ด์ค]
<ํ
์ด๋ธ์ ์ด๋ฏธ ์์ฑ๋์ด ์๊ณ ๋ฐ์ดํฐ๋ง ๋ณต์ฌํ ๋>
INSERT INTO ๋ณต์ฌํ ํ
์ด๋ธ๋ช
SELECT * FROM ๋ณต์ฌํ ํ
์ด๋ธ๋ช
[WHERE ์ ]
<ํ
์ด๋ธ ์ด๋ฆ ๋ณ๊ฒฝ>
ALTER TABLE ๊ตฌํ
์ด๋ธ๋ช
RENAME TO ์ ํ
์ด๋ธ๋ช
[SQL server]
<ํ
์ด๋ธ ๋ณต์ฌํ ๋>
SELECT * INTO ์๋ก๋ง๋คํ
์ด๋ธ๋ช
FROM ๋ณต์ฌํ ํ
์ด๋ธ๋ช
46. ์ ๋ต : (COL1, COL2),(COL1),()
๐๋ฌธ์ ํ์ธ
ํด์ค : ROLLUP์ ๊ทธ๋ฃน๋ ์นผ๋ผ์ SUBTOTAL์ ์์ฑํ๊ธฐ ์ํด์ ์ฌ์ฉ๋๋ค.
๊ทธ๋ฃน์ ์๊ฐ N๊ฐ ์ผ๋ N+1๊ฐ์ SUBTOTAL์ด ์์ฑ๋๋ค.
GROUPING SETS์ ์ฌ๋ฌ ๊ทธ๋ฃน์ง์๋ฅผ UNION ALL(ํฉ์งํฉ)๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์๊ณ, ํฉ๊ณ๋ฅผ ์ง๊ณํ ์ ์๋ค.
GROUPING SETS ํจ์ | GROUP BY UNION ALL์ |
group by grouping sets(a,b,c) | group by a union all group by union all group by c |
group by grouping sets(a,b,(b,c)) | group by a union all group by b union all group by b,c |
group by grouping sets((a,b,c)) | group by a,b,c |
group by grouping sets(a,rollup(b,c)) | group by a union all group by rollup(b,c) |
group by rollup(a,b,c) | group by (a,b,c) union all group by (a,b)union all group by (a) union all group by () |
group by cube(a,b,c) | group by (a,b,c) union all group by (a,b) union all group by (a,c) union all group by (b,c) union all group by (a) union all group by (b) union all group by (c) union all group by () |
47. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : COMMIT ์์ ์ผ๋ก ROLLBACK(๋๋์๊ฐ๊ธฐ) ํ์์ผ๋ฏ๋ก ์ถ๋ ฅ๊ฐ์ 1
48. ์ ๋ต : 24
๐๋ฌธ์ ํ์ธ
ํด์ค : NVL(COL2,0) , COL2 ์ด NULL์ด๋ฉด 0์ผ๋ก ๋์ฒด๋๊ณ ํ๊ท ์ด ๊ณ์ฐ๋๋ค.
49. ์ ๋ต : 16
๐๋ฌธ์ ํ์ธ
ํด์ค : WHERE ์ ์ A.COL1 <> B.COL1 ์ด๋ฏ๋ก A.COL1 ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ๋ค๋ฅธ์์ ๊ฐฏ์๋ฅผ ์นด์ดํธํ๋ค.
SQL> SELECT COUNT(*) FROM TEST49 A, TEST49_2 B WHERE A.COL1 <> B.COL1;
COUNT(*)
----------
16
50. ์ ๋ต : CROSS JOIN
๐๋ฌธ์ ํ์ธ
ํด์ค : CROSS JOIN์ ๊ฒฐ๊ณผ ๊ฐ์๋ ๋ ํ ์ด๋ธ์ ํ์ ๊ฐ์๋ฅผ ๊ณฑํ ๊ฐ์๊ฐ ๋๋ค.
SQL> SELECT COUNT(*) FROM TEST49 CROSS JOIN TEST49;
COUNT(*)
----------
25
* 30๋ฒ, 49๋ฒ ๋ฌธ์ ๋ ๋ค๋ฅธ๊ธฐ์ถ๋ฌธ์ ๋ก ๊ตฌ์ฑ ํ์์ต๋๋ค.
sqld 38ํ ๊ธฐ์ถ๋ฌธ์ ๋ณต์ / ์ ๋ต ์ถ์ฒ : ์ ํ๋ธ ์ด๊ธฐ์ ์์ง๋ท์ปด
'IT์๊ฒฉ์ฆ ๊ณต๋ถ > SQLD ๊ธฐ์ถ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] 33ํ ๊ธฐ์ถ๋ฌธ์ ( 50๋ฌธ์ /์ ๋ต ) (46) | 2022.07.15 |
---|---|
[SQLD] 33ํ ๊ธฐ์ถ 23๋ฒ ๋ฌธ์ - ์๋์ฐ ํจ์ (4) | 2022.05.27 |
[SQLD] 39ํ ๊ธฐ์ถ ๋ฌธ์ ( 50๋ฌธ์ / ์ ๋ต,ํด์คํฌํจ ) (63) | 2022.05.19 |
[SQLD] 35ํ ๊ธฐ์ถ ๋ฌธ์ ( 50๋ฌธ์ / ์ ๋ต,ํด์คํฌํจ ) (27) | 2022.05.13 |
[SQLD] 34ํ ๊ธฐ์ถ ๋ฌธ์ ( 50๋ฌธ์ / ์ ๋ต,ํด์คํฌํจ ) (19) | 2022.04.26 |