์๋ ํ์ธ์ yunamom ์ ๋๋ค :D
์ด๋ฒ ํฌ์คํ ์์๋ 2022๋ 5์ 28์ผ ํ ์์ผ์ ์ํ๋ณธ SQLD 45ํ ์์๋ณต์/ํด์ค ์ ์์ฑํ๋๋ก ํ๊ฒ ์ต๋๋ค. ๐ฉ๐ป๐ป
1๊ณผ๋ชฉ ๊ฐ๊ด์/์ฃผ๊ด์ ์์ ๋ณต์ [ CLOSE ]
*๋ฌธ์ ์ ์์๋ ๋ค๋ฅผ์์์ต๋๋ค.
1. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ์ ์ ์์ ์ผ๋ก ์ ์ ํ์ง ์์ ๊ฒ์? (์๊ฒฉ ๊ฒ์ 3๋ฒ๊ณผ ์ ์ฌ)
์ ๋ต→ ์ฑ๋ฅ์ ์ํ ๋ฐ์ ๊ทํ๋ฅผ ๊ณ ๋ คํ๋ค. (์ ์์ ์ผ๋ก ์ ์ ํ์ง ์์ต๋๋ค.)
๊ตฌ๋ถ | ์ค๋ช |
์ค๋ณต | ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋, ์๊ฐ ๊ทธ๋ฆฌ๊ณ ์ฅ์๋ฅผ ํ์ ํ๋๋ฐ ๋์์ ์ค๋ค ์ด๋ฌํ ์ง์์์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ฌ๋ฌ ์ฅ์์ ๊ฐ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ์๋ชป์ ํ์ง ์๋๋ก ํ๋ค. |
๋น์ ์ฐ์ฑ | ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ด๋ป๊ฒ ์ค๊ณํ๋๋์ ๋ฐ๋ผ ์ฌ์ํ ์ ๋ฌด๋ณํ์๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ด ์์๋ก ๋ณ๊ฒฝ๋จ์ผ๋ก์จ ์ ์ง๋ณด์์ ์ด๋ ค์์ ๊ฐ์ค์ํฌ ์ ์๋ค. |
๋น์ผ๊ด์ฑ | ๋ฐ์ดํฐ์ ์ค๋ณต์ด ์๋๋ผ๋ ๋น์ผ๊ด์ฑ์ ๋ฐ์ํ๋ค. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ํ ๋ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ๊ฐ ์ํธ ์ฐ๊ด ๊ด๊ณ์ ๋ํ ๋ช ํํ ์ ์๋ ์ด๋ฌํ ์ํ์ ์ฌ์ ์ ์๋ฐฉํ ์ ์๋๋ก ํด์ค๋ค. |
2. ์๋์ ์ค๋ช ์ค ์์ฑ์ ๋ํ ์ค๋ช ์ด ๊ฐ์ฅ ์ ์ ํ์ง ์์ ๊ฒ์? (์๊ฒฉ ๊ฒ์ ๋ฌธ์ 16๋ฒ)
[์ค๋ช
]
์ฐ๋ฆฌ์ํ์ ์๊ธ๋ถ๋ฅ(์ผ๋ฐ์๊ธ, ํน๋ณ์๊ธ ๋ฑ)์ ์๊ธ, ์์น๊ธฐ๊ฐ, ์ด์์จ์ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค.
๋ํ ์๊ธ์ ๋ํ ์ด์์จ์ ์ ์ฉํ์ฌ ๊ณ์ฐ๋ ์ด์์ ๋ํด์๋ ์์ฑ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ ํ๋ค.
์๋ฅผ ๋ค์ด ์๊ธ์ด 1000์์ด๊ณ ์์น๊ธฐ๊ฐ์ด 5๊ฐ์์ด๋ฉฐ ์ด์์จ์ด 5.0%๋ผ๋ ์์ฑ์ ๊ด๋ฆฌํ๊ณ ๊ณ์ฐ๋ ์ด์๋ ๊ด๋ฆฌํ๋ค.
์ผ๋ฐ์๊ธ์ด๋ ํน๋ณ์๊ธ ๋ฑ์ ๋ํด์๋ ์ฝ๋๋ฅผ ๋ถ์ฌ(์: 01-์ผ๋ฐ์๊ธ, 02-ํน๋ณ์๊ธ ๋ฑ)ํ์ฌ ๊ด๋ฆฌํ๋ค.
1) ์ผ๋ฐ์๊ธ์ ์ฝ๋ ์ํฐํฐ๋ฅผ ๋ณ๋๋ก ๊ตฌ๋ถํ๊ณ ๊ฐ์๋ ์ฝ๋๊ฐ๋ง ํฌํจํ๋ค. 2) ์๊ธ, ์์น๊ธฐ๊ฐ์ ๊ธฐ๋ณธ(BASIC) ์์ฑ์ด๋ค. 3) ์ด์์ ์ด์์จ์ ํ์(DERIVED) ์์ฑ์ด๋ค. 4) ์๊ธ๋ถ๋ฅ๋ ์ค๊ณ(DESIGNED) ์์ฑ์ด๋ค. |
์ ๋ต→ 3๏ธโฃ์ด์, ์ด์์จ์ ํ์ ์์ฑ์ด๋ค.(์ด์์จ์ ์ ์๋๋ ๊ฐ์ผ๋ก ํ์์์ฑ์ด ์๋๋ค.)
๋ฌธ์ ํด์ค |
ํ์์์ฑ์ ๋ค๋ฅธ ์์ฑ์ ์ํฅ์ ๋ฐ์ ๋ฐ์ํ๋ ์์ฑ์ผ๋ก, ๋ณดํต ๊ณ์ฐ๋ ๊ฐ๋ค์ด ์ด์ ํด๋น๋๋ค. |
์ด์๋ ์ด์์จ๊ณผ ์๊ธ๋ฑ์ ์ํด ๊ณ์ฐ์ด ๋๋ ํ์์์ฑ, ์ด์์จ์ ๊ณ์ฐ์ด ๋๋ ์์ฑ์ด ์๋ ์ ์๋๋ ๊ฐ์ผ๋ก ํ์์์ฑ์ด ์๋๋ค. |
3. ์ธ์คํด์ค์ ๋ํ ์ค๋ช ์ค ๊ฐ์ฅ ์ ์ ํ์ง ์์ ๊ฒ์?
์ ๋ต→ ์ธ์คํด์ค๋ ์์ฑ์ด ์์ ์๋ ์๋ค.
ํด์ค : ์ธ์คํด์ค๋ ์์ฑ์ด ์์ผ๋ฉด ์กด์ฌํ ์ ์๋ค. (์๋ ํ ์ฐธ๊ณ )
4. ์๋์ ERD์ ๋ํ ์ค๋ช ์ค ์ ์ ํ์ง ์์ ๊ฒ์? (์๊ฒฉ ๊ฒ์ ๋ฌธ์ 7๋ฒ๊ณผ ์ ์ฌ)
์ ๋ต→ ์ฃผ๋ฌธ์ ๊ณ ๊ฐ์ด ์์ ์๋ ์๋ค.
ํด์ค : ์ฃผ๋ฌธ์ ๋ฐ๋์ ๊ณ ๊ฐ์ด ์์ด์ผ ํ๋ค. (์๋ ๊ด๊ณ์ฐจ์ํ ์ฐธ๊ณ )
5. ๋ถ๋ชจ์ํฐํฐ๋ก๋ถํฐ ์์ฑ์ ๋ฐ์์ง๋ง ์์์ํฐํฐ์ ์ฃผ์๋ณ์๋ก ์ฌ์ฉํ์ง ์๊ณ ์ผ๋ฐ์ ์ธ ์์ฑ์ผ๋ก๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ก ๊ฐ์ฅ ์ ์ ํ์ง ์์ ๊ฒ์?
์ ๋ต→ Data Life Cycle์ด ๊ฐ์ ๋.
ํด์ค :
๋ฌธ์ ํด์ค |
์์ ์ํฐํฐ์์ ๋ฐ์ ์์ฑ์ด ๋ฐ๋์ ํ์๊ฐ ์๋์ด๋ ๋ฌด๋ฐฉํ๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ ์๋ ์์์ด ์์ฑ๋ ์ ์๋ ๊ฒฝ์ฐ์ด๋ค. |
์ํฐํฐ๋ณ๋ก ๋ฐ์ดํฐ์ ์๋ช ์ฃผ๊ธฐ(Data Life Cycle)๋ฅผ ๋ค๋ฅด๊ฒ ๊ด๋ฆฌํ ๊ฒฝ์ฐ์ด๋ค. |
์ฌ๋ฌ ๊ฐ์ ์ํฐํฐ๊ฐ ํ๋์ ์ํฐํฐ๋ก ํตํฉ๋์ด ํํ๋์๋๋ฐ, ๊ฐ๊ฐ์ ์ํฐํฐ๊ฐ ๋ณ๋์ ๊ด๊ณ๋ฅผ ๊ฐ์ง ๋ ์ด์ ํด๋น๋๋ค. |
์์์ํฐํฐ์ ์ฃผ์๋ณ์๋ก ์ฌ์ฉํ์ฌ๋ ๋์ง๋ง ์์์ํฐํฐ์์ ๋ณ๋์ ์ฃผ์๋ณ์๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๋ ์ ๋ฆฌํ๋ค๊ณ ํ๋จ๋ ๋ |
6. ๋ชจ๋ธ๋ง์ ๋จ๊ณ ์ค ๊ฐ์ฅ ์ฌ์ฌ์ฉ์ฑ์ด ๋์ ๋ชจ๋ธ๋ง์?
์ ๋ต→ ๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง
ํด์ค : ๋ ผ๋ฆฌ์ ์์คํ ์ผ๋ก ๊ตฌ์ถํ๊ณ ์ ํ๋ ์ ๋ฌด์ ๋ํด Key, ์์ฑ, ๊ด๊ณ ๋ฑ์ ์ ํํ๊ฒ ํํ, ์ฌ์ฌ์ฉ์ฑ์ด ๋์
7. ์๋์ ๋ด์ฉ ์ค ํ์ ์์ฑ์ผ๋ก๋ง ์ ํ๋ ๊ฒ์ผ๋ก ์ ์ ํ ๊ฒ์?
์ ๋ต→ 4๏ธโฃ ์ต์ด์ฃผ๋ฌธ์ผ์, ์ฃผ๋ฌธ๊ธ์ก, ์ด์ฃผ๋ฌธ๊ธ์ก
ํด์ค : ํ์์์ฑ์ ํ ์์ฑ์ ์ํด ์ํฅ์๋ฐ์ ์์ ์ ๊ฐ์ด ๋ณํ๋ค.(์ฃผ๋ฌธ์๋, ์ด์ฃผ๋ฌธ๊ธ์ก ๋ฑ)
8. ๋ค์ ์ค ์ํฐํฐ๊ฐ์ ๊ด๊ณ์์ 1:1, 1:M๊ณผ ๊ฐ์ด ๊ด๊ณ์ ๊ธฐ์์ฑ์ ๋ํ๋ด๋๊ฒ์ผ๋ก ๊ฐ์ฅ ์ ์ ํ ๊ฒ์?
1) ๊ด๊ณ๋ช
(Relationship Membership) 2) ๊ด๊ณ์ฐจ์(Relationship Degree/Cardinality) 3) ๊ด๊ณ์ ํ์ฌ์(Relationship Optionality) 4) ๊ด๊ณ์ ์(Relationship Definition) |
์ ๋ต→ ๊ด๊ณ์ฐจ์ (Cardinality)
๋จ๋ตํ 1. ์ ๋ฌด์์ ํ์๋ก ํ๋ ์ธ์คํด์ค๋ก ๊ด๋ฆฌํ๊ณ ์ ํ๋ ์๋ฏธ์ ๋ ์ด์ ๋ถ๋ฆฌ ๋์ง ์๋ ์ต์์ ๋ฐ์ดํฐ ๋จ์๋?(์๊ฒฉ ๊ฒ์ 14๋ฒ)
์ ๋ต→ ์์ฑ
๋จ๋ตํ 2. ๊ธฐ๋ณธํค๊ฐ ์๋ ๋ชจ๋ ์์ฑ์ด ๊ธฐ๋ณธํค์ ์์ ํจ์ ์ข ์๋ ์ํ๋ฅผ ๋ฌด์์ด๋ผ ํ๋๊ฐ?
์ ๋ต→ ์ 2์ ๊ทํ
2๊ณผ๋ชฉ ๊ฐ๊ด์ ์์ ๋ณต์
*๋ฌธ์ ์ ์์๋ ๋ค๋ฅผ์์์ต๋๋ค.(SQL ๋ฌธ 100% ์ค๋ผํด ๊ธฐ์ค)
9. ํ ์ด๋ธ์ ๊ฐ์ ์ ๋ ฅํ๋ ๋ช ๋ น์ด
์ ๋ต→Insert
ํด์ค :
10. ๋ค์์ค ๊ฒฐ๊ณผ๊ฐ์ด ๋ค๋ฅธ ํ๋๋ฅผ ๊ณ ๋ฅด์์ค.
1) CEIL(22.14) 2) FLOOR(22.14) 3) TRUNC(22.14) 4) ROUND(22.14) |
์ ๋ต→1๋ฒ Ceil
ํด์ค : Ceil (์ ์์ฌ๋ฆผ), Floor(์ ์๋ด๋ฆผ), Trunc(์์์ ๋ฒ๋ฆฌ๊ธฐ), Round(๋ฐ์ฌ๋ฆผ) ←5์ด์์ ์ฌ๋ฆผ
SQL> SELECT CEIL(22.14), FLOOR(22.14), TRUNC(22.14), ROUND(22.14) FROM DUAL;
CEIL(22.14) FLOOR(22.14) TRUNC(22.14) ROUND(22.14)
----------- ------------ ------------ ------------
23 22 22 22
11. ์ํฅ๋ฏผ์ด ํฌํจ๋ ํ์ ํฌ์ง์ ์ 'FW' ๋ก ๋ณ๊ฒฝํ๋ SQL๋ฌธ์ผ๋ก ์ฌ๋ฐ๋ฅธ๊ฒ์?
์ ๋ต→4๏ธโฃ
ํด์ค :
12. SNS ๋ณ ์ถ์ฒ์ ์ ์ถ์ถํ๋ ํจ์
์ ๋ต→3๏ธโฃ
ํด์ค :
13. ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์งํค๊ธฐ ์ํ ๊ฒ๊ณผ ๊ด๊ณ ์๋ ๊ฒ์ ๊ณ ๋ฅด์์ค.
1) ์ ํ๋ฆฌ์ผ์ด์
์ ๋ก์ง 2) Trigger 3) Lock 4) Constraints |
์ ๋ต→3๏ธโฃ
ํด์ค : Lock/Unlock์ ๋ณํ์ฑ ์ ์ด(๋์์ฑ) ๊ธฐ๋ฒ์ด๋ค.
๋ฌด๊ฒฐ์ฑ : ๋ฐ์ดํฐ ์์ ๊ฐฑ์ ์ผ๋ก๋ถํฐ ๋ณดํธํด์ผ ํ๋ ๊ฒ.
์ ์ฝ์กฐ๊ฑด์ ๋ฃ์ด์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ฑฐ๋, Triger ๋ก์ง ์์ ๊ฒ์ฌ ๊ธฐ๋ฅ์ ๋ฃ์ ์๋ ์๊ณ , ๊ฐ๋ฐ์์ ์ฝ๋ฉ์์ ๋ก์ง์ ๋ฃ์ ์๋ ์๋ค.
14. ๋ค์ ์ค ์๋์ ๊ฐ์ ์งํฉ์ด ์กด์ฌ ํ ๋, ์งํฉ A์ B์ ๋ํ์ฌ ์งํฉ์ฐ์ฐ์ ์ํํ ๊ฒฐ๊ณผ ์งํฉ C๊ฐ ๋๋ ๊ฒฝ์ฐ ์ด์ฉ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์งํฉ์ฐ์ฐ์?
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
C = {3, 4}
1) Union 2) Difference 3) Intersection 4) Product |
์ ๋ต→3๏ธโฃ Intersection(๊ต์งํฉ)
ํด์ค :
15. CTAS ํน์ง์ ๋ง์ง ์๋๊ฒ์ ๊ณ ๋ฅด์์ค. ( ํ ์ด๋ธ ๋ณต์ฌ )
์ ๋ต→2๏ธโฃ ๋ชจ๋ ์ ์ฝ์กฐ๊ฑด์ ๋ค ๊ฐ์ ธ์ฌ์์๋ค.
ํด์ค : NOT NULL์กฐ๊ฑด๋ง ๊ฐ์ ธ์ฌ์ ์๋ค.
16. ๊ฐ์ฅ ์ฒซ๋ฒ์งธ๊ฐ์ ๋ฐํํ๋ ํจ์
์ ๋ต→1๏ธโฃ First value
ํด์ค :
17. 9๋ช ์ด์์ด ์๋ ์ง๊ธ ์ค์ ๋์ด๊ฐ ์ ์ผ ๋ง์์ฌ๋ ๊ณ ๋ฅด๊ธฐ
์ ๋ต→ count 9 >= group by ์ง๊ธ
ํด์ค :
18. ๋ค์์ค ์ํ์ด ๋๋ ๋ณด๊ธฐ๋ง์ ๊ณ ๋ฅธ๊ฒ์ ?
INSERT 1 ...
SAVEPOINT A
INSERT 2 ...
DELETE 3 ...
ROLLBACK SAVEPOINT A
INSERT 4 ...
INSERT 5 ...
COMMIT;
์ ๋ต→4๏ธโฃ (1, 4, 5)
ํด์ค : ๋กค๋ฐฑ ์ ๊ฐ์ ๋ค ํ์๋๋ค.
19. ROLLUP, CUBE, GROUPING SETS ํจ์๋ฅผ ์นญํ๋๊ฒ์?
์ ๋ต→3๏ธโฃ Grouping
ํด์ค :
20. SUBSTR ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅธ๊ฒ์ ๊ณ ๋ฅด์์ค
1) SELECT SUBSTR('DATABASE',7)FROM DUAL; 2) SELECT SUBSTR('DATABASE',-2)FROM DUAL; 3) SELECT SUBSTR('DATABASE',8,-2)FROM DUAL; 4) SELECT SUBSTR('DATABASE',INSTR('DATABASE','S'),2)FROM DUAL; |
์ ๋ต→3๏ธโฃ
ํด์ค : 3๋ฒ์ ์์๋ฅผ ๋ฐํํ๊ฒ ๋๋ฏ๋ก X
SQL> SELECT SUBSTR('DATABASE',7)FROM DUAL;
SU
--
SE
SQL> SELECT SUBSTR('DATABASE',-2)FROM DUAL;
SU
--
SE
SQL> SELECT SUBSTR('DATABASE',8,-2)FROM DUAL;
S
-
SQL> SELECT SUBSTR('DATABASE',INSTR('DATABASE','S'),2)FROM DUAL;
SU
--
SE
21. ์๋ ํ ์ด๋ธ ๋ฐ ๊ฒฐ๊ณผ๊ฐ ์์ ๋ SQL์ํ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? (WHERE ์ ์ NOT EXISTS ์์ ์๋ธ์ฟผ๋ฆฌ ์กฐ๊ฑด์ NULL ์ฒ๋ฆฌ ๋ฌธ์ )
[table1]
COL1 COL2
-----------
1 10
2 20
3 30
[table2]
COL1 COL2
------------
1 10
2 20
[RESULT]
COL1
----
3
์ ๋ต→ WHERE NOT EXISTS (SELECT 1 FROM T2 B WHERE B.COL1 = A.COL1)
ํด์ค :
SELECT COL1 FROM T1 A WHERE NOT EXISTS(SELECT 1 FROM T2 B WHERE B.COL1 = A.COL1);
COL1
----
3
22. ํ ์ด๋ธ์ ๊ฐ์๊ฐ 5๊ฐ์ผ ๋ ์ต์ ์กฐ์ธ ๊ฐ์๋ ๋ช๊ฐ์ธ๊ฐ?
์ ๋ต→ 4๊ฐ
ํด์ค : ์ต์ ์กฐ์ธ ๊ฐ์ (N-1)
23. ์๋์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ SQL์ ์์ฑํ๋ GROUP BY( )๋ก ์ ์ ํ์ง ์์ ๊ฒ์?
A ์ง๊ณ, A+B ์ง๊ณ ์ ๊ฒฐ๊ณผ
์ ๋ต→ ROLLUP(A,B) = GROUP BY(A,B) UNION ALL GROUP BY (A) UNION ALL GROUP BY ()
ํด์ค : ๋๋จธ์ง๋ ์ ์ฒด ์ง๊ณ๊ฐ ํฌํจ๋์ด ์์ง ์์
24. ์๋์ SQL๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅธ ๊ฒ์ ๊ณ ๋ฅด์์ค.(FULL OUTER JOIN์ ๋ณํ ํํ์ ๋ํ ๋ฌธ์ )
1) SELECT * FROM A FULL OUTER JOIN B
2) FULL JOIN
3) LEFT OUTER JOIN UNION RIGHT OUTER JOIN
4) LEFT OUTER JOIN UNION ALL RIGHT OUTER JOIN
์ ๋ต→4๏ธโฃ
ํด์ค : FULL OUTER JOIN ์ LEFT UNION RIGHT , UNION ALL ์ ์ค๋ณต์ ๊ฑฐ ์์ด ์ ์ฒด์ถ๋ ฅ๋๋ฏ๋ก ๋ค๋ฅด๋ค.
25. ์ฃผ๋ฌธ ํ ์ด๋ธ์ ํน์ ๊ธฐ๊ฐ ๊ณ ๊ฐ์ ์ฃผ๋ฌธ๊ธ์ก์ ํ์ฌ ๊ณ ๊ฐํ ์ด๋ธ์ ์๋ ๊ณ ๊ฐ ๋ฐ์ดํฐ๋ง์ผ๋ก ์ถ๋ ค๋ด์ด ์ ์ฒด๊ธฐ๊ฐ์ ์ฃผ๋ฌธ๊ธ์ก ํฉ์ธ์ง, ๋์ผ ๊ธฐ๊ฐ์ ์ฃผ๋ฌธ ๊ธ์ก ํฉ์ธ์ง๋ฅผ ๊ตฌํ๋ ๋ฌธ์ (์ด๋ ค์ ๋ ๋ฌธ์ ...SQL๋ฌธ์ด ์์ฒญ๊ธธ์์)
์ ๋ต→4๏ธโฃ
ํด์ค : ์ ๋ต์ 4๋ฒ์ด๋ผ๊ณ ํจ
26. ์๋์ ํ ์ด๋ธ์ ๋ํ INSERT ๊ตฌ๋ฌธ ์ํ์ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋ ๊ฒ์ ๊ณ ๋ฅด์์ค.
CREATE TABLE T1(
C1 PRIMARY KEY,
C2 NOT NULL,
C3 UNIQUE,
C4 CHECK (NOT NULL));
1)INSERT INTO T1 VALUES(NULL, 1, 2, 3);
2)INSERT INTO T1 VALUES(1, NULL, 2, 3);
3)INSERT INTO T1 VALUES(1, 2, NULL, 3);
4)INSERT INTO T1 VALUES(1, 2, 3, NULL);
์ ๋ต→3๏ธโฃ
ํด์ค : UNIQUE ์๋ NULL์ด ํ์ฉ๋๋ค.
27. ์๋์ ํ ์ด๋ธ์ ๋ํ SQL ๊ฒฐ๊ณผ๋? (AVG ํจ์์์ NULL ๊ฐ์ ํฌํจ ์ฌ๋ถ ๋ฌธ์ )
[table]
C1
----
10
20
NULL
SELECT AVG(NVL(C1,0)) FROM table;
์ ๋ต→ 10
ํด์ค : NULL์ด 0์ผ๋ก ๋ณ๊ฒฝ๋์ด AVG ์ ๋ชจ์๋ก ํฌํจ๋๋ค.
28. TABLE1, TABLE2, TABLE3 ํ ์ด๋ธ์ ๋ํ ์๋์ INSERT ๊ฒฐ๊ณผ ๊ฐ์๋ก ์๋ง์ ๊ฒ์?
(๋ค์ค TABLE INSERT FIRST)
[TABLE0]
N1
---
1
2
5
INSERT FIRST
WHEN N1 >= 2 THEN INTO TABLE1(N1) VALUES(N1)
WHEN N1 >= 3 THEN INTO TABLE2(N1) VALUES(N1)
ELSE INTO TABLE3 VALUES(N1)
SELECT N1 FROM TABLE0;
์ ๋ต→(2,0,1)
ํด์ค : ๊ฐ์ฅ ์์ WHEN ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ๋ฐ์ ์กฐ๊ฑด์ ์ฒดํฌํ์ง ์์ผ๋ฏ๋ก 2,0,1
SQL> INSERT FIRST WHEN N1 >= 2 THEN INTO TABLE1(N1) VALUES(N1) WHEN N1 >= 3 THEN INTO TABLE2(N1) VALUES(N1) ELSE INTO TABLE3 VALUES(N1) SELECT N1 FROM TABLE0;
3 rows created.
SQL> SELECT COUNT(*) FROM TABLE1;
COUNT(*)
----------
2
SQL> SELECT COUNT(*) FROM TABLE2;
COUNT(*)
----------
0
SQL> SELECT COUNt(*) FROM TABLE3;
COUNT(*)
----------
1
29. ์๋์ ๊ฐ์ SQL ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์?
(OUTER JOIN๊ณผ INNER JOIN์ด ์ฌ์ฉ๋ ๊ฒฝ์ฐ ์ฐ๊ฒฐ๋ ์กฐ์ธ์์ INNER JOIN ์ด ๋ง์ง๋ง์ ์ฌ์ฉ ๋ ๋)
SELECT * FROM
T1, T2, T3, T4
WHERE T2.COL1(+) = T1.COL1
AND T3.COL1(+) = T2.COL1
AND T4.COL1 = T3.COL1;
์ ๋ต→ 1
ํด์ค : LEFT - LEFT - INNER JOIN์ผ๋ก ์ฐ๊ฒฐ๋๋ ๊ฒฝ์ฐ ๊ฒฐ๊ตญ INNER JOIN์ ๊ฒฐ๊ณผ๋ง์ด ๋จ๋๋ค. ๊ณตํต์ผ๋ก ๊ฐ์ง ๊ฐ์ด 1์ด๋ฏ๋ก 1๊ฑด๋ง ๋จ์
30. ์๋์ SQL์์ 1๊ฑด๋ง ์ถ๋ ฅ๋๋ SQL์ด ์๋๊ฒ์ ๊ณ ๋ฅด์์ค.
1) ROWNUM = 1 2) ROWNUM < 2 3) ROWNUM <= 2 4) ROWNUM <= 2-1 |
์ ๋ต→ ROWNUM <= 2
ํด์ค : ROWNUM <= 2 (2๊ฑด ์ถ๋ ฅ)
31. ์๋ SQL ์ํ ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? (WHERE ์ NOT IN ์์ ์๋ธ์ฟผ๋ฆฌ ๊ฐ์ด NULL์ ํฌํจํ ๋์ ๊ฒฐ๊ณผ)
SELECT ... FROM table1 A
WHERE A.N1
NOT IN(SELECT B.N1 FROM table3 B);
-- select ๋ค ๋ถํ์ค
์ ๋ต→๊ฒฐ๊ณผ์์ (0 ROWS) or 0
ํด์ค : NOT IN (SUBQUERY) ์์ NULL์ด ํฌํจ๋ ๊ฒฝ์ฐ NULL์ ์ฐธ ๊ฑฐ์ง ํ์ ์ด ๋์ง ์์ 0๊ฑด ์ฒ๋ฆฌ
table3 ์ null ๊ฐ์ ๋ฃ๊ณ ์๋์ ๊ฐ์ด ์คํํด๋ณด์๋๋ฐ ๋ฌธ์ ์ count(*) ์๋์ง ์ ํํ ๊ธฐ์ต์๋จ ใ
ใ
SQL> select count(*) from table1 A where A.N1 NOT IN(select B.N1 from table3 b);
COUNT(*)
----------
0
SQL> select count(N1) from table1 A where A.N1 NOT IN(select B.N1 from table3 b);
COUNT(N1)
----------
0
SQL> select N1 from table1 A where A.N1 NOT IN(select B.N1 from table3 b);
no rows selected
32. ์๋์ ๋ณด๊ธฐ์ค ์์ ์ ํ๊ฐ ๋ค๋ฅธ ํ๋๋ฅผ ๊ณ ๋ฅด์์ค. (SUM๋ด๋ถ์ NVL๊ณผ ์ธ๋ถ์ NVL์ ์ฐจ์ด ๋ฌธ์ )
์ ๋ต→SUM (NVL(COL1) + NVL(COL2)) > NVL(SUM(COL1 + COL2))
ํด์ค : COL1 + COL2 ์์ ๋์ค ํ๋์ ๊ฐ์ด NULL ์ด๋ฉด NULL์ด ๋์ด ๊ฐ์ด ๋ฌ๋ผ์ง๋ค.
33. ์๋์ SQL๊ฒฐ๊ณผ ์ค ๋ค๋ฅธ ๊ฒ์ ๊ณ ๋ฅด์์ค.
(OR ์กฐ๊ฑด๊ณผ UNION ALL ๋ณํ์์ OR ์กฐ๊ฑด์์ ์ฌ์ฉ๋ ์ปฌ๋ผ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ์ ๊ฒฐ๊ณผ ๋ฌธ์ )
[TABLE1]
COL1 COL2
-----------
A a
B b
C c
1) SELECT COL1 FROM TABLE1 WHERE COL1 IN ('A','B') OR COL2 <> 'c';
2) SELECT COL1 FROM TABLE1 WHERE COL1 IN ('A','B')
UNION ALL
SELECT COL1 FROM TABLE1 WHERE COL2 <> 'c';
3) SELECT COL1 FROM TABLE1 WHERE COL1 IN ('A','B')
UNION
SELECT COL1 FROM TABLE1 WHERE COL2 <> 'c';
4) SELECT COL1 FROM TABLE1 WHERE COL1 = 'A' OR COL1 = 'B' OR COL2 <> 'c';
์ ๋ต→2๏ธโฃ
ํด์ค : UNION ALL ๋ก ์ธํด ABAB๋ก ๊ฐ์ด ์ถ๋ ฅ๋จ
34. ์๋์ SQL์ค ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅธ ๊ฒ์? ( OR, IN, AND ์ ๋ณํ์ ๋ํ ๋ฌธ์ )
1)SELECT*FROM SQLD49 WHERE V1 = 'A' AND V2 IN ('T1','T2','T3');
2)SELECT*FROM SQLD49 WHERE V1 = 'A' AND V2='T1' OR V2='T2' OR V2='T3';
3)SELECT*FROM SQLD49 WHERE (V1,V2) IN (('A','T1'),('A','T2'),('A','T3'));
4)SELECT*FROM SQLD49 WHERE V1 = 'A' AND (V2 = 'T1' OR V2 = 'T2' OR V2 = 'T3');
์ ๋ต→2๏ธโฃ
ํด์ค : OR ์ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ ์ถ๋ ฅ๋๋ค. ( 4๋ฒ๊ฐ์๊ฒฝ์ฐ๋ ๊ดํธ๋ก ๋ฌถ์ด์ ธ์์ด์ ๋ค๋ฆ)
SELECT*FROM SQLD49 WHERE V1 = 'A' AND V2 IN ('T1','T2','T3');
N1 V1 V2
-----------
1 A T1
SQL> SELECT*FROM SQLD49 WHERE V1 = 'A' AND V2='T1' OR V2='T2' OR V2='T3';
N1 V1 V2
-----------
1 A T1
2 B T2
3 T3
SQL> SELECT*FROM SQLD49 WHERE (V1,V2) IN (('A','T1'),('A','T2'),('A','T3'));
N1 V1 V2
-----------
1 A T1
SQL> SELECT*FROM SQLD49 WHERE V1 = 'A' AND (V2 = 'T1' OR V2 = 'T2' OR V2 = 'T3');
N1 V1 V2
-----------
1 A T1
35. ํน์ ๊ณผ๋ชฉ์ ํ์ ์ด 4.0 ์ด์์ธ ํ์์ ์ด๋ฆ์ ๊ตฌํ๋ SQL๋ก ์ฌ๋ฐ๋ฅธ๊ฒ์๊ณ ๋ฅด์์ค
(์ง๊ณ ์ฟผ๋ฆฌ์์ SELECT ์ ์ ์ฌ์ฉ๋๋ ์ปฌ๋ผ์ GROUP BY ์ ์ฌ์ฉ๋์ด์ผ ํจ์ ๋ฌป๋ ๋ฌธ์ )
์๊ฐ ์ ๋ณด
-------
ํ๋ฒ
๊ณผ๋ชฉ
ํ์
ํ์
----
์ด๋ฆ
ํ๋ฒ
๊ณผ๋ชฉ
----
๊ณผ๋ชฉ๋ช
...
์ ๋ต→ SELECT ์ด๋ฆ FROM .... GROUP BY ํ๋ฒ, ์ด๋ฆ HAVING MAX(ํ์ ) > 4
ํด์ค : SELECT ์ ์ด๋ฆ์ด ๋์ค๋ฏ๋ก GROUP BY ์ ์ด๋ฆ์ด ๋์์ผ ํจ
(๊ทธ๋ฃน์ ๊ธฐ์ค์ ์ด๋ฆ์ผ๋ก ํ ๊ฒฝ์ฐ ์ ์ผ๊ฐ์ด ์๋๋ฏ๋ก ํ๋ฒ-์ด๋ฆ์ผ๋ก ๋ฌถ์ด์ผ๋ง ์ ์ผ๊ฐ์ ํ์ ์ ๊ตฌํ ์ ์๋ค.)
36. ์๋์ SQL์ ๊ฒฐ๊ณผ๋ก ์๋ง์ ๊ฒ์? (WHERE 1=2 ๋ฌธ์ )
SELECT .... FROM SQLD WHERE 1 = 2;
-- SELECT ๋ค์ ๊ฐ์ด ์ ํํ์ง ์์
์ ๋ต→๊ฒฐ๊ณผ๊ฐ์ด ์์ (์ปค๋ฎค๋ํฐ์์ ์ด๊ฒ ๋ต์ด๋ผ๊ณ ํจ)
ํด์ค : ๋ฌธ์ ๋ณด๊ธฐ๊ฐ ์ ํํ ๊ธฐ์ต๋์ง ์์
SQL> SELECT N1 FROM SQLD WHERE 1=2;
no rows selected
SQL> SELECT COUNT(N1) FROM SQLD WHERE 1=2;
COUNT(N1)
----------
0
37. WHERE ์ ์ ์ฌ์ฉ๋ ์๋ธ์ฟผ๋ฆฌ์ ๋ํ ์ค๋ช ์ผ๋ก ์ ์ ํ์ง ์์ ๊ฒ์?
( ๋ฉ์ธ์ฟผ๋ฆฌ์ ์๋ธ์ฟผ๋ฆฌ์ค WHERE ์ ์ ์ฌ์ฉ๋ ์๋ธ์ฟผ๋ฆฌ์๋ํ ๋ด์ฉ์ ๋ฌป๋ ๋ฌธ์ )
์ ๋ต→ ๋ฉ์ธ์ฟผ๋ฆฌ ... ์๋ธ์ฟผ๋ฆฌ๊ฐ ์์๋ ๊ฒฐ๊ณผ๋ ํญ์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ๋ฐ๋ฅธ๋ค.
ํด์ค : FROM ์ ์ ์ฌ์ฉ๋ ์๋ธ์ฟผ๋ฆฌ(INLINE VIEW) ๊ฐ ์๋๋ผ๋ฉด ๋ฉ์ธ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ์ ์ํฅ์ ์ฃผ์ง ๋ชปํ๋ค.
38. ์๋์ SQL ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์?
(LEFT OUTER JOIN์์ ON์ ์ ์ฌ์ฉ๋ ์กฐ๊ฑด์ ๊ณผ WHERE ์ ์ ์ฌ์ฉ๋ ์กฐ๊ฑด์ ์ FILTERING์ ๊ดํ ๋ฌธ์ )
์ ๋ต→ 1๊ฑด
ํด์ค : ON ์ ์ ์กฐ๊ฑด์ ์ ์ฐ์ ์ ์ผ๋ก FILTERING ํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์กฐ์ธํจ
39.
์ ๋ต→
ํด์ค :
40.
์ ๋ต→
ํด์ค :
2๊ณผ๋ชฉ ์ฃผ๊ด์ ์์ ๋ณต์
*๋ฌธ์ ์ ์์๋ ๋ค๋ฅผ์์์ต๋๋ค.
๋จ๋ตํ 3. ์๋ SQL1 ๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋๋ก SQL2 ๋น์นธ์ ์์ฑํ์์ค.
[SQL1]
SELECT*FROM A, B;
[SQL2]
SELECT*FROM A ( ) B;
์ ๋ต→CROSS JOIN
ํด์ค :
๋จ๋ตํ 4. ์๋์ ๊ณ์ธตํ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์์ C3์ 2๋ฒ์งธ ๊ฐ์ ์์ฑํ์์ค.
[SQLD44]
C1 C2 C3
------------
1 NULL A
2 1 B
3 1 C
4 2 D
[SQL]
SELECT C1, C2, C3
FROM SQLD44
CONNECT BY PRIOR C1 = C2
START WITH C1 = 1
ORDER SIBLINGS BY C1 DESC;
์ ๋ต→C
ํด์ค : C1 ์ด ๊ฐ์ ๋ ๋ฒจ์์ DESC ๋ก ์ ๋ ฌ๋จ
[RESULT]
C1 C2 C3
-------------
1 A
3 1 C
2 1 B
4 2 D
๋จ๋ตํ 5. ์๋์ ๊ณ์ธตํ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์์ค.
[SQLD45]
C1 C2 C3
--------------
1 KING
2 1 JOHN
3 2 SCOTT
[SQL]
SELECT C3 FROM SQLD45
WHERE C1 <> 2
CONNECT BY C1 = PRIOR C2
START WITH C1 = 2;
์ ๋ต→KING
ํด์ค : C1 = PRIOR C2 ์ญ๋ฐฉํฅ
SQL> SELECT C3 FROM SQLD45 WHERE C1 <> 2 CONNECT BY C1 = PRIOR C2 START WITH C1 = 2;
C3
-----
KING
๋จ๋ตํ 6. GRANT, REVOKE ๋ฑ์ SQL ์ ๋ฌด์์ด๋ผ ํ๋๊ฐ?
์ ๋ต→DCL
ํด์ค :
๋จ๋ตํ 7. ์๋์ SQL๊ฒฐ๊ณผ์ ๋น์นธ์ ์์ฑํ์์ค. (NTILE ๋ฌธ์ )
[SQL]
[RESULT]
COL1 COL2
------------
A ( )
B 3
C ( )
์ ๋ต→3, 2
ํด์ค :
์ด 8๊ฐ์ ๋ก์ฐ์์ NTILE(3) ์ผ๋ก ๊ฐ์๋ 3, 3, 2
๋จ๋ตํ 8. ์๋ SQL์ ๋น์นธ์ ์์ฑํ์์ค.
[SQLD48]
V1 N1
----------------
A 100
B 150
C 1400
D 450
E 50
[SQL]
SELECT V1, N1,
COUNT(N1) OVER
(ORDER BY N1 RANGE
BETWEEN 0 PRECEDING
AND
50 FOLLOWING) AS CNT
FROM SQLD48;
์ ๋ต→RANGE
ํด์ค : ๊ฐ์ +0 ~ +50 ์ฌ์ด์ COUNT ๊ฒฐ๊ณผ๋ก ๋ํ๋จ
SQL> SELECT V1, N1, COUNT(N1) OVER (ORDER BY N1 RANGE BETWEEN 0 PRECEDING AND 50 FOLLOWING) AS CNT FROM SQLD48;
V1 N1 CNT
-----------------
E 50 2
A 100 2
B 150 1
D 450 1
C 1400 1
ROW : ๋ฐ์ดํฐ์ ๊ฐ์ ๋ํจ
RANGE : ๋ฐ์ดํฐ์ ๋ฒ์๋ฅผ ๋ํ๋
๋จ๋ตํ 9. ์๋์ SQL ๊ฒฐ๊ณผ๋ฅผ ์ ์ผ์์ค. (AND, OR, AND ์กฐ๊ฑด์ด ์๋ SQL) ๊ฐฏ์์ธ๊ธฐ
[SQLD49]
N1 V1 V2
--------------
1 A T1
2 B T2
3 NULL T3
์ ๋ต→3
ํด์ค :
๋จ๋ตํ 10. ์๋์ SQL๊ฒฐ๊ณผ๋ฅผ ์ ์ผ์์ค.(LIKE '_L%' ๋ฌธ์ )
[SQLD50]
N1 V1
--------
1 SMITH
2 JOHN
3 ALX
4 CLARE
5 BLX
[SQL]
SELECT COUNT(*)
FROM SQLD50
WHERE V1 LIKE '_L%';
์ ๋ต→3
ํด์ค : _L% (๋๋ฒ์งธ ์๋ฆฌ์ ๋ฌธ์๊ฐ L์ธ ๋ชจ๋ ํ ์ถ๋ ฅ)
SQL> SELECT COUNT(*) FROM SQLD50 WHERE V1 LIKE '_L%';
COUNT(*)
----------
3
์ถ์ฒ : ๋ฐ์ดํฐ ์ ๋ฌธ๊ฐ ํฌ๋ผ ํ์๋๋ค & ์์ผ๋ฃจ๋
'IT์๊ฒฉ์ฆ ๊ณต๋ถ > SQLD ์์๋ณต์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] 2023๋ SQLD 50ํ ๊ธฐ์ถ๋ณต์ (1๊ณผ๋ชฉ/2๊ณผ๋ชฉ) (7) | 2023.09.09 |
---|---|
[SQLD] 2023๋ SQLD 49ํ ๊ธฐ์ถ๋ณต์ ( 1๊ณผ๋ชฉ/2๊ณผ๋ชฉ ) (16) | 2023.06.10 |
[SQLD] 2023๋ SQLD 48ํ ( 1๊ณผ๋ชฉ/2๊ณผ๋ชฉ ์ ๋ต ) (6) | 2023.03.20 |
[SQLD] 47ํ SQLD ( 1๊ณผ๋ชฉ/2๊ณผ๋ชฉ ์ ๋ต ) (4) | 2022.11.07 |
[SQLD] 46ํ SQLD ( 1๊ณผ๋ชฉ/2๊ณผ๋ชฉ ์ ๋ต ) (3) | 2022.09.05 |