๐SQLD. ์ 33 ํ ๊ธฐ์ถ ๋ฌธ์
๋ฌธ์ 1. ์๋ ์ค๋ช ์ ๋ง์กฑํ๋ ๊ฐ์ฅ ์ ์ ํ ํํฐ์ ๋ถํ ๊ธฐ๋ฒ์ ์์ฑํ์์ค.
๋์ ํ
์ด๋ธ์ด ๋ ์ง ๋๋ ์ซ์ ๊ฐ์ผ๋ก ๋ถ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ณ ๊ฐ ์์ญ๋ณ๋ก ํธ๋์ญ์
์ด ๋ถ๋ฆฌ๋๋ค.
๋ฐ์ดํฐ ๋ณด๊ด ์ฃผ๊ธฐ์ ๋ฐ๋ผ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ง์ฐ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
โ๏ธ ์ ๋ตํ์ธ๐ผ
๋ฌธ์ 2. ์์ฑ์ ๋ถ๋ฅ ์ค ์์ฑ์ ํน์ฑ์ ๋ฐ๋ฅธ ๋ถ๋ฅ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๊ธฐ๋ณธ ์์ฑ, ์ผ๋ฐ ์์ฑ, ํ์ ์์ฑ 2) ๊ธฐ๋ณธ ์์ฑ, ์ค๊ณ ์์ฑ, ํ์ ์์ฑ 3) ๊ธฐ๋ณธ ์์ฑ, ์ค๊ณ ์์ฑ, ์ผ๋ฐ ์์ฑ 4) ์ผ๋ฐ ์์ฑ, ์ค๊ณ ์์ฑ, ํ์ ์์ฑ |
๋ฌธ์ 3. ์์ฑ์ ๋ถ๋ฅ ์ค ์ํฐํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ ๋ฐ๋ฅธ ๋ถ๋ฅ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๊ธฐ๋ณธ ์์ฑ 2) ์ผ๋ฐ ์์ฑ 3) ์ค๊ณ ์์ฑ 4) ํ์ ์์ฑ |
๋ฌธ์ 4. ๋ค์ ์ฃผ์ด์ง ๊ทธ๋ฆผ์ ํด๋นํ๋ ERD ํ๊ธฐ๋ฒ์ผ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) Barker 2) IE 3) UML 4) IDEFIX |
๋ฌธ์ 5. ์๋ณ์ ์ ๋น์๋ณ์ ๊ด๊ณ์ ๋ํ ์ค๋ช ์ผ๋ก ๋ถ์ ์ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์๋ณ์ ๊ด๊ณ๋ ๊ฐํ ๊ด๊ณ, ๋น์๋ณ์ ๊ด๊ณ๋ ์ฝํ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ค. 2) ์๋ณ์ ๊ด๊ณ๋ ์์๋ฐ์ ์ฃผ์๋ณ์ ์์ฑ์ ํ ์ํฐํฐ์ ์ด์ ์ด ํ์ํ๊ณ ๋น์๋ณ์ ๊ด๊ณ๋ ์ฐจ๋จ์ด ํ์ํ๋ค. 3) ์๋ณ์ ๊ด๊ณ๋ ์ค์ ์ผ๋ก, ๋น์๋ณ์ ๊ด๊ณ๋ ์ ์ ์ผ๋ก ํ์ํ๋ค. 4) ์๋ณ์ ๊ด๊ณ๋ ์์ ์ํฐํฐ์ ๊ธฐ๋ณธํค๊ฐ ๋ถ๋ชจ ์ํฐํฐ์ ๋ํด ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ์ฑ๋๊ณ ๋น์๋ณ์ ๊ด๊ณ์์๋ ์ข ์์ ์ผ๋ก ๊ตฌ์ฑ๋๋ค. |
๋ฌธ์ 6. 3์ฐจ ์ ๊ทํ์ ๋ํ ์ค๋ช ์ผ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์์ฑ์ ์ค๋ณต ๊ฐ์ ์ ๊ฑฐํ๋ค. 2) ๋ณตํฉ ์ธ์คํด์ค์ ๋ํด ๊ฐ ์ธ์คํด์ค์ ์ข ์์ฑ ์ค๋ณต์ ์ ๊ฑฐํ๋ค. 3) ๋ค์น์ข ์์ฑ์ ์ ๊ฑฐํ๋ค. 4) ์ผ๋ฐ ์์ฑ์ ์ข ์์ฑ์ ์ ๊ฑฐํ๋ค. |
๋ฌธ์ 7. ๋ค์ ์ฃผ์ด์ง ERD ์ ๋ํ ์ค๋ช ์ผ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๊ณ ๊ฐ ์ ๋ณด๊ฐ ์๋ ์ฃผ๋ฌธ์ด ์์ ์ ์๋ค. (๊ณ ๊ฐ ์ ๋ณด๊ฐ ์์ ์๋ ์๋ค.) 2) ๊ณ์ฝ ํ ์ด๋ธ์ ์ฃผ๋ฌธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ๊ฐ์ ๋ชจ๋ ๊ฐ์ ธ์ผ ํ๋ค. 3) ์ฃผ๋ฌธ ํ ์ด๋ธ์ ๋ฐ๋์ ์ฒญ์ฝ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค. 4) ๊ณ์ฝ์ ๊ณ์ฝ ๊ทธ๋ฃน์ ์ํด ์์ง ์์ ์ ์๋ค. (๊ณ์ฝ ์ ๋ณด๊ฐ ์์ ์๋ ์๋ค.) |
๋ฌธ์ 8. ๊ณ ๊ฐ, ๊ณ ๊ฐ ๋ก๊ทธ์ธ ๋ด์ญ ํ ์ด๋ธ์์ ๊ณ ๊ฐ์ 10ํผ์ผํธ๋ ๋ก๊ทธ์ธ ๋ด์ญ์ ํ์ธํ๊ณ ๋ก๊ทธ์ธ ๋ด์ญ์ 3๋ ๋์ ๋ณด๊ดํ๊ณ ์ญ์ ํด์ผ ํ๋ค. ์๋์ ์ค๋ช ์ค ๊ฐ์ฅ ์ ์ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๊ธฐ๋ณธํค(Primary Key)์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ๋ค. 2) ์ธ๋ํค(Foreign Key)์ ๋ํ ์ธ๋ฑ์ค๋ ์ถ๊ฐํ์ง ์์๋ ๋๋ค. 3) ๊ธฐ๊ฐ์ Range ํํฐ์ ํ๋ค. 4) Hash ํํฐ์ ์ ์ํํ๋ค. |
๋ฌธ์ 9. ๋ค์ ์ค ๋ณด๊ธฐ์ ํ ์ด๋ธ์ ์ค๊ณํ ์ฌํญ์ผ๋ก ๊ฐ์ฅ ์ ์ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
- ๊ฐ์ธ ๊ณ ๊ฐ๊ณผ ๋ฒ์ธ ๊ณ ๊ฐ์ด ์๊ณ ๊ฐ ๊ณ ๊ฐ ๋ฐ์ดํฐ๋ ๊ณตํต ์์ฑ์ ๊ฐ์ง๊ณ ์๋ค.
- ๊ฐ๊ฐ์ ๊ณ ๊ฐ ๋ฐ์ดํฐ์์๋ง ์ฌ์ฉ๋๋ ๊ฐ๋ณ ์์ฑ๋ ์๋ค.
- ๋ก๊ทธ์ธ ๊ด๋ฆฌ๋ ๋์ผํ๊ฒ ๊ด๋ฆฌ๋๋ค.
- ๋ฒ์ธ ๊ณ ๊ฐ๊ณผ ๊ฐ์ธ ๊ณ ๊ฐ ์ค ๊ฐ์ธ ๊ณ ๊ฐ์ ๋น์จ์ด 98%๋ฅผ ์ฐจ์งํ๋ค.
- ๊ฐ์ธ ๊ณ ๊ฐ์ ๋ํ ์ฌ์ฉ์ด ์๋์ ์ผ๋ก ๋ง๋ค.
1) ํตํฉํ์ฌ ํ๋์ ํ
์ด๋ธ์ ๋ง๋ ๋ค. (All in One) 2) ๊ณตํต ์์ฑ์ ์ค๋ณต์ผ๋ก ๋์ด ์ํผ-์๋ธ ํ์ ์ผ๋ก ํ๋ค. (์ํผ-์๋ธํ์ ) 3) ๊ณตํต ์์ฑ์ ๋ณ๋๋ก ๋๊ณ ๊ฐ์ธ ๊ณ ๊ฐ๊ณผ ๋ฒ์ธ ๊ณ ๊ฐ๋ ๋ณ๋์ ํ ์ด๋ธ๋ก ์์ฑํ๋ค. (1:1) 4) ์ ๋ณด๊ธฐ ๋ชจ๋ ์ฑ๋ฅ ์กฐ์ ์ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ถ์ ์ ํ๋ค. |
๋ฌธ์ 10. ์กฐ์ธ์ด ๋ณต์กํ ์ฌ๋ฌ ํ ์ด๋ธ์ด ์กด์ฌํ ๊ฒฝ์ฐ ํด๋น ํ ์ด๋ธ๋ค์ ๋ฐ์ ๊ทํ ํ๋ ค๊ณ ํ ๋ ๊ฐ์ฅ ์ ์ ํ ๋ฐ์ ๊ทํ ๊ธฐ๋ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์ค๋ณต ๊ด๊ณ ์ถ๊ฐ 2) ํ์ ์นผ๋ผ ์ถ๊ฐ 3) ํต๊ณ ํ ์ด๋ธ ์ถ๊ฐ 4) ๊ธฐ๋ณธํค์ ์ํ ์นผ๋ผ ์ถ๊ฐ |
๋ฌธ์ 11. ๋ค์ ๋ณด๊ธฐ ์ค ์๋ธ ์ฟผ๋ฆฌ์ ๋ํ ์ค๋ช ์ผ๋ก ์ณ์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๋ฉ์ธ ์ฟผ๋ฆฌ์์ ์๋ธ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ ์นผ๋ผ์ ์ฌ์ฉํ ์ ์๋ค. 2) ์๋ธ ์ฟผ๋ฆฌ์์๋ ORDER BY๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ค. 3) ์๋ธ ์ฟผ๋ฆฌ๋ ๋จ์ผ ํ(Single Row) ๋๋ ๋ณต์ ํ(Multi Row) ๋น๊ต ์ฐ์ฐ์์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค. 4) ๋ฉ์ธ ์ฟผ๋ฆฌ ๋ ๋ฒจ์ด 1์ด๊ณ ์๋ธ ์ฟผ๋ฆฌ๊ฐ M์ด๋ฉด ํญ์ ๋ฉ์ธ ์ฟผ๋ฆฌ ๋ ๋ฒจ1๋ก ๊ฒฐ๊ณผ ์งํฉ์ด ์์ฑ๋๋ค. |
๋ฌธ์ 12. ์ฃผ์ด์ง ํ ์ด๋ธ์์ ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ SQL๋ฌธ์ ๊ณ ๋ฅด์์ค. ์ ๋ตํ์ธ๐ผ
[SQLD_33_12]
DNAME YEAR SAL
------------------------
๊ฒฝ์์ง์๋ถ 2010 4900
๊ฒฝ์์ง์๋ถ 2011 5000
๊ฒฝ์์ง์๋ถ 2012 5100
์ธ์ฌ๋ถ 2010 4800
์ธ์ฌ๋ถ 2011 4900
์ธ์ฌ๋ถ 2012 5000
[RESULT]
DNAME YEAR SUM(SAL)
----------------------------
์ธ์ฌ๋ถ 2010 4800
์ธ์ฌ๋ถ 2011 4900
์ธ์ฌ๋ถ 2012 5000
์ธ์ฌ๋ถ 14700
๊ฒฝ์์ง์๋ถ 2010 4900
๊ฒฝ์์ง์๋ถ 2011 5000
๊ฒฝ์์ง์๋ถ 2012 5100
๊ฒฝ์์ง์๋ถ 15000
29700
1)
SELECT DNAME, YEAR, SUM(SAL)
FROM SQLD_33_12
GROUP BY ROLLUP((DNAME, YEAR), NULL);
2)
SELECT DNAME, YEAR, SUM(SAL)
FROM SQLD_33_12
GROUP BY ROLLUP(DNAME, (DNAME, YEAR));
3)
SELECT DNAME, SUM(SAL)
FROM SQLD_33_12
GROUP BY ROLLUP((DNAME, YEAR));
4)
SELECT DNAME, SUM(SAL)
FROM SQLD_33_12
GROUP BY ROLLUP(DNAME, YEAR, (DNAME, YEAR));
๋ฌธ์ 13. ๋ค์ ๋ณด๊ธฐ ์ค ์ซ์ํ ํจ์์ ๊ฒฐ๊ณผ ๊ฐ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) SELECT FLOOR(35.8) FROM DUAL;
๊ฒฐ๊ณผ โ 36
2) SELECT CEIL(35.8) FROM DUAL;
๊ฒฐ๊ณผ โ 36
3) SELECT ROUND(36.8, 9) FROM DUAL;
๊ฒฐ๊ณผ โ 36
4) SELECT TRUNC(35.8) FROM DUAL;
๊ฒฐ๊ณผ โ 36
๋ฌธ์ 14. ๋ค์ ๋ณด๊ธฐ ์ค SQL๋ฌธ์ ์คํ ์์๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์ ๊ณ ๋ฅด์์ค. ์ ๋ตํ์ธ๐ผ
1) FROM - WHERE - GROUP BY - HAVING - ORDER BY - SELECT 2) FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY 3) FROM - WHERE - HAVING - GROUP BY - ORDER BY - SELECT 4) FROM - WHERE - GROUP BY - SELECT - HAVING - ORDER BY |
๋ฌธ์ 15. ์ค๋ผํด ํ๊ฒฝ์์ ๋ ์งํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๊ฒฝ์ฐ ์๋ SQL๋ฌธ์ ๊ฒฐ๊ณผ๋ก ๊ฐ์ฅ ์ ์ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
SELECT TO_CHAR(TO_DATE('2015.01.10 10', 'YYYY.MM.DD HH24')
+1/24/(60/10),'YYYY.MM.DD HH24:MI:SS')
FROM DUAL;
1) 2015.01.10 11:01:00 2) 2015.01.10 10:05:00 3) 2015.01.10 10:10:00 4) 2015.01.10 10:30:00 |
๋ฌธ์ 16. ์๋ SQL ๋ฌธ์ฅ ์คํ ์์๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1. Nested Loops
2. Hash Join
3. TABLE ACCESS (FULL) TAB1
4. TABLE ACCESS (FULL) TAB2
5. TABLE ACCESS (BY ROWID) TAB3
6. INDE (UNIQUE SCAN) PK_TAB3
1) 3, 4, 2, 6, 5, 1 2) 1, 2, 3, 4, 5, 6 3) 3, 4, 6, 2, 5, 1 4) 3, 4, 2, 1, 6, 5 |
๋ฌธ์ 17. ๋ช ์์ ์ปค์์์ FETCH ๋จ๊ณ ์ดํ ์ํ๋๋ ๊ฒ์ ๋ฌด์์ธ๊ฐ?์ ๋ตํ์ธ๐ผ
1) CURSOR DEFINE 2) OPEN CURSOR 3) CLOSE CURSOR 4) EXIT |
๋ฌธ์ 18. ์๋ ํ ๋ณ ์ฑ์ ํ ์ด๋ธ์์ ์น๋ฆฌ ๊ฑด์๊ฐ ๋์ ์์ผ๋ก 3์๊น์ง ์ถ๋ ฅํ๋ 3์์ ์น๋ฆฌ ๊ฑด์๊ฐ ๋์ผํ ํ์ด ์๋ค๋ฉด ํจ๊ป ์ถ๋ ฅํ๋ ๋ฌธ์ฅ์ผ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[TABLE : ํ๋ณ์ฑ์ ]
ํ๋ช
์น๋ฆฌ๊ฑด์ ํจ๋ฐฐ๊ฑด์
---------------------------
Aํ 120 80
Bํ 20 180
Cํ 10 190
Dํ 100 100
Eํ 110 90
Fํ 100 100
Gํ 70 130
1) 3)
SELECT TOP(3) ํ๋ช
, ์น๋ฆฌ๊ฑด์ SELECT ํ๋ช
, ์น๋ฆฌ๊ฑด์
FROM ํ๋ณ์ฑ์ FROM ํ๋ณ์ฑ์
ORDER BY ์น๋ฆฌ๊ฑด์ DESC; WHERE ROWNUM <= 3
ORDER BY ์น๋ฆฌ๊ฑด์ DESC;
2) 4)
SELECT TOP(3) ํ๋ช
, ์น๋ฆฌ๊ฑด์ SELECT TOP(3) WITH TIES ํ๋ช
, ์น๋ฆฌ๊ฑด์
FROM ํ๋ณ์ฑ์ ; FROM ํ๋ณ์ฑ์
ORDER BY ์น๋ฆฌ๊ฑด์ DESC;
๋ฌธ์ 19. ๋ค์ ๋ณด๊ธฐ ์ค ์ธ๋ฒ์งธ ๋ฌธ์๊ฐ 'N'์ธ ๋ฌธ์์ด์ ๊ฒ์ํ๋ ์กฐ๊ฑด์ผ๋ก ์ ์ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) SELECT*FROM ํ
์ด๋ธ๋ช
WHERE like LIKE 'N%';
2) SELECT*FROM ํ
์ด๋ธ๋ช
WHERE like '%N%';
3) SELECT*FROM ํ
์ด๋ธ๋ช
WHERE like '[__N]%';
4) SELECT*FROM ํ
์ด๋ธ๋ช
WHERE like '__N%';
๋ฌธ์ 20. ๋ค์ ๋ณด๊ธฐ์์ Hash Join์ ์์๋ก ์ณ์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
๊ฐ) ์ ํ ํ
์ด๋ธ์์ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ ์ฝ๋๋ฅผ ํํฐ๋งํ๋ค.
๋) ์ ํ ํ
์ด๋ธ์ ์กฐ์ธ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ํด์ ํจ์๋ฅผ ์ ์ฉํ์ฌ ํด์ ํ
์ด๋ธ์ ์์ฑํ๋ค.
๋ค) 1๋ฒ, 2๋ฒ ์์
์ ์ ํ ํ
์ด๋ธ์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ชจ๋ ํ์ ์ํํ๋ค.
๋ผ) ํํ ํ
์ด๋ธ์์ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ ์ฝ๋๋ฅผ ํํฐ๋งํ๋ค.
๋ง) ํํ ํ
์ด๋ธ์ ์กฐ์ธ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ํด์ ํจ์๋ฅผ ์ ์ฉํ์ฌ ์ ํ ํ
์ด๋ธ์์ ํด์ ํจ์ ๋ฐํ๊ฐ๊ณผ ๊ฐ์ ๊ฐ์ ๋ฐํํ๋ ํด๋น ๋ฒํท์ ์ฐพ๋๋ค.
1) ๊ฐ-๋-๋ค-๋ผ-๋ง 2) ๊ฐ-๋-๋ผ-๋ง-๋ค 3) ๋-๊ฐ-๋ง-๋ผ-๋ค 4) ๊ฐ-๋ผ-๋-๋ง-๋ค |
๋ฌธ์ 21. ๋ค์ ๋ณด๊ธฐ ์ค ๊ฒฐ๊ณผ๊ฐ์ด ๋ค๋ฅธ SQL๋ฌธ์ ๋ฌด์์ธ๊ฐ?์ ๋ตํ์ธ๐ผ
[SQLD_33_21]
๊ณ ๊ฐ ๊ฑฐ๋๋ด์ญ
--------------
์ฒ ์ 100
๋ฏผ์
์๋ฆ 300
์์ง
1) SELECT NULL*2 FROM SQLD_33_21;
2) SELECT NULL*3 FROM SQLD_33_21;
3) SELECT NULL*NULL FROM SQLD_33_21;
4) SELECT COUNT(๊ณ ๊ฐ) FROM SQLD_33_21 WHERE ๊ฑฐ๋๋ด์ญ IS NULL;
๋ฌธ์ 22. ๋ค์ ์ฃผ์ด์ง SQL๋ฌธ๊ณผ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํ ํ๋ SQL๋ฌธ์ ๋ฌด์์ธ๊ฐ? ์ ๋ตํ์ธ๐ผ
[SQL]
SELECT * FROM SQLD_33_22
WHERE (COL1 = 1 AND COL2 = 3)
OR (COL1 = 1 AND COL2 = 4);
1) SELECT*FROM SQLD_33_22
WHERE COL1 IN (1, 3) AND COL2 IN (1, 4);
2) SELECT*FROM SQLD_33_22
WHERE COL1 IN (1, 3) OR COL2 IN(1, 4);
3) SELECT*FROM SQLD_33_22
WHERE COL1 = 1 OR (COL2 = 3 OR COL2 = 4);
4) SELECT*FROM SQLD_33_22
WHERE COL1 = 1 AND (COL2 = 3 OR COL2 = 4);
๋ฌธ์ 23. ๋ค์ ์ฃผ์ด์ง ํ ์ด๋ธ์์ ์๋์ SQL์ ์ํํ์์ ๋์ ๊ฒฐ๊ณผ๊ฐ ์๋์ ๊ฐ์ ๋ ๊ฒฐ๊ณผ์์ ๋น์นธ์ ๋ค์ด๊ฐ MGR_SUM ๊ฐ์ผ๋ก ์๋ง์ ๊ฒ์ ๊ณ ๋ฅด์์ค. ์ ๋ตํ์ธ๐ผ
[SQLD_33_23]
MGR ENAME HIREDATE SAL
-----------------------------
์ ๋น ๊ด์ฐ 2017 1000
์ ๋น ์ฅ๋น 2018 1500
์ ๋น ์ ๊ฐ๋ 2015 2000
์กฐ์กฐ ํํ๋ 2016 2000
์กฐ์กฐ ํํ์ฐ 2017 3500
์กฐ์กฐ ์์ฑ 2015 3000
์๊ถ ์ฃผ์ 2015 2500
์๊ถ ํฉ๊ฐ 2019 3000
์๊ถ ๋
ธ์ 2013 2000
[SQL]
SELECT MGR, ENAME, HIREDATE, SAL,
SUM(SAL) OVER(PARTITION BY MGR
ORDER BY HIREDATE
ROWS BETWEEN 1 PRECEDING
AND 1 FOLLOWING) AS MGR_SUM
FROM SQLD_33_23;
[RESULT]
MGR ENAME HIREDATE SAL MGR_SUM
---------------------------------------
์๊ถ ๋
ธ์ 2013 2000 ( )
์๊ถ ์ฃผ์ 2015 2500 ( )
์๊ถ ํฉ๊ฐ 2019 3000 ( )
์ ๋น ์ ๊ฐ๋ 2015 2000 ( )
์ ๋น ๊ด์ฐ 2017 1000 ( )
์ ๋น ์ฅ๋น 2018 1500 ( )
์กฐ์กฐ ์์ฑ 2015 3000 ( )
์กฐ์กฐ ํํ๋ 2016 2000 ( )
์กฐ์กฐ ํํ์ฐ 2017 3500 ( )
1) 2000, 2500, 3000, 2000, 1000, 1500, 3000, 2000, 3500 2) 4500, 7500, 5500, 3000, 4500, 2500, 5000, 8500, 5500 3) 2000, 4500, 7500, 2000, 3000, 4500, 3000, 5000, 8500 4) 4500, 7500, 7500, 3000, 4500, 4500, 5000, 8500, 8500 |
๋ฌธ์ 24. ๋ค์ ์ฃผ์ด์ง SQL๋ฌธ์ ์ํํ์์ ๋ ์๊ตฌ์ ์ผ๋ก ๋ฐ์๋๋ ๊ฒ์ ๋ฌด์์ธ๊ฐ? ์ ๋ตํ์ธ๐ผ
[SQL]
INSERT INTO SQLD_33_24 VALUES(1);
INSERT INTO SQLD_33_24 VALUES(2);
SAVEPOINT SV1;
UPDATE SQLD_33_24 SET COL1 = 7 WHERE COL1 = 2;
INSERT INTO SQLD_33_24 VALUES(9);
SAVEPOINT SV2;
DELETE SQLD_33_24 WHERE COL1 = 7;
INSERT INTO SQLD_33_24 VALUES(11);
SAVEPOINT SV3;
INSERT INTO SQLD_33_24 VALUES(9);
ROLLBACK TO SV2;
COMMIT;
1) 1, 2 2) 1, 9, 11 3) 1, 9, 11, 9 4) 1, 7, 9 |
๋ฌธ์ 25. ๋ค์ ๋ณด๊ธฐ ์ค B-tree ์ธ๋ฑ์ค์ ๋ํ ์ค๋ช ์ผ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์ธ๋ฑ์ค์ ๋ฆฌํ ๋ฐ์ดํฐ๊ฐ ๊ณง ๋ฐ์ดํฐ ํ์ด์ง๋ค. 2) ๋ธ๋์น ๋ธ๋ก๊ณผ ๋ฆฌํ ๋ธ๋ก์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ ๋ธ๋์น ๋ธ๋ก์ ๋ถ๊ธฐ๋ฅผ ๋ชฉ์ ์ผ๋ก ํ๊ณ ๋ฆฌํ ๋ธ๋ก์ ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ๋ ์นผ๋ผ์ ๊ฐ์ผ๋ก ์ ๋ ฌ๋๋ค. 3) ํ๋์ ์ธ๋ฑ์ค ํค ์ํธ๋ฆฌ๊ฐ ๋ง์ ํ์ ๋ํ ํฌ์ธํฐ๋ฅผ ์ ์ฅํ๋ ๊ตฌ์กฐ์ด๋ค. 4) ์์คํ ์์ ์ฌ์ฉ๋ ์ง์๋ฅผ ์์คํ ๊ตฌํ ์์ ๋ชจ๋ ์ ์ ์๋ ๊ฒฝ์ฐ์ธ DW ๋ฐ AD-HOC ์ง์ ํ๊ฒฝ์ ์ํด ์ค๊ณ๋์๋ค. |
๋ฌธ์ 26. HASH JOIN์ ๋ํ ์ค๋ช ์ผ๋ก ์ณ์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๋๋ฑ ์กฐ์ธ ์ด์ธ์์๋ ์ฌ์ฉํ ์ ์๋ค. 2) ๋ฐ์ดํฐ ๊ฑด์๊ฐ ์ ์ ํ ์ด๋ธ์ ์ ํ ํ ์ด๋ธ๋ก ๋๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค. 3) ์กฐ์ธ ์นผ๋ผ์ ์ธ๋ฑ์ค๊ฐ ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ ์ ์๋ค. 4) ์์ฐ ์กฐ์ธ ์ ๋๋ผ์ด๋น ์งํฉ์ชฝ์ผ๋ก ์กฐ์ธ ์ก์ธ์ค์์ด ๋ง์ Random ์ก์ธ์ค ๋ถํ๊ฐ ์ฌํ ๋ ์ ๋ฆฌํ๋ค. |
๋ฌธ์ 27. ๋ค์ ๋ณด๊ธฐ ์ค ROLE์ ๋ํ ์ค๋ช ์ผ๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๋ค์ํ ์ ์ ์๊ฒ ๋ค์ํ ๊ถํ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ '๋ช
๋ น์ด' ์ด๋ค. 2) ROLE์ DBA ๊ถํ์ ๊ฐ์ง ์ ์ ์ ์ํด์ ์์ฑ๋๋ค. 3) ROLE์ GRANT ๋ช ๋ น์ด๋ก ๋ถ์ฌํ๊ณ REVOKE ๋ช ๋ น์ด๋ก ํ์ํ ์ ์๋ค. 4) ์ฌ๋ฌ ์ฌ์ฉ์์๊ฒ๋ ์๋ก ๋ค๋ฅธ ROLL์ ๋ถ์ฌํด์ผ ํ๋ค. |
๋ฌธ์ 28. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ํ๊ณ ์ ๊ทผํ๊ธฐ ์ํด์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ๊ณผ์ ํต์ ์๋จ์ด ํ์ํ๋ฐ ์ด๋ฅผ ๋ฐ์ดํฐ ์ธ์ด(Data Language) ๋ผ๊ณ ํ๋ฉฐ ๊ทธ ๊ธฐ๋ฅ๊ณผ ์ฌ์ฉ ๋ชฉ์ ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ์ ์์ด(DDL), ๋ฐ์ดํฐ ์กฐ์์ด(DML), ๋ฐ์ดํฐ ์ ์ด์ด(DCL)๋ก ๊ตฌ๋ถ๋๋ค. ๋ค์ ์ค ๋ฐ์ดํฐ ์ธ์ด์ SQL ๋ช ๋ น์ด์ ๋ํ ์ค๋ช ์ผ๋ก ๊ฐ์ฅ ๋ถ์ ์ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ๋น์ ์ฐจ์ ๋ฐ์ดํฐ ์กฐ์์ด(DML)๋ ์ฌ์ฉ์๊ฐ ๋ฌด์จ ๋ฐ์ดํฐ๋ฅผ ์ํ๋ฉฐ, ์ด๋ป๊ฒ ๊ทธ๊ฒ์ ์ ๊ทผํด์ผ ๋๋์ง๋ฅผ ๋ช
์ธํ๋ ์ธ์ด์ด๋ค. 2) DML์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ด๋ ์ง์์ด๋ฅผ ํตํ์ฌ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค์ง์ ์ผ๋ก ์ ๊ทผํ๋๋ฐ ์ฌ์ฉ๋๋ฉฐ SELECT, INSERT, DELETE, UPDATE ๋ฑ์ด ์๋ค. 3) DDL์ ์คํค๋ง, ๋๋ฉ์ธ, ํ ์ด๋ธ, ๋ทฐ, ์ธ๋ฑ์ค๋ฅผ ์ ์ํ๊ฑฐ๋ ๋ณ๊ฒฝ ๋๋ ์ ๊ฑฐ ํ ๋ ์ฌ์ฉ๋๋ฉฐ CREATE, ALTER, DROP, RENAME ๋ฑ์ด ์๋ค. 4) ํธ์คํธ ํ๋ก๊ทธ๋จ ์์ ์ฝ์ ๋์ด ์ฌ์ฉ๋๋ DML ๋ช ๋ น์ด๋ค์ ๋ฐ์ดํฐ ๋ถ์์ด(Data Sub Language)๋ผ๊ณ ํ๋ค. |
๋ฌธ์ 29. ๋ค์ ์๋์ SQL๋ฌธ์ ํ์ค ANSI SQL๋ก ์๋ง๊ฒ ๋ฐ๊พผ ๊ฒ์?(๋จ, ์กฐ์ธ ์กฐ๊ฑด๊ณผ ์กฐํ ์กฐ๊ฑด์ ๋ถ๋ฆฌํ๋ค.) ์ ๋ตํ์ธ๐ผ
SELECT * FROM SCOTT.EMP A, SCOTT.DEPT B
WHERE A.DEPTNO = B.DEPTNO AND
B.DNAME = 'SALES';
1) 3)
SELECT * SELECT *
FROM SCOTT.EMP A LEFT OUTER JOIN FROM SCOTT.EMP A INNER JOIN
SCOTT.DEPT B SCOTT.DEPT B
ON (A.DEPTNO = B.DEPTNO AND ON (A.DEPTNO = B.DEPTNO AND
B.DNAME = 'SALES') B.DNAME = 'SALES')
WHERE 1=1; WHERE 1=1;
2) 4)
SELECT * SELECT *
FROM SCOTT.EMP A RIGHT OUTER JOIN FROM SCOTT.EMP A INNER JOIN
SCOTT.DEPT B SCOTT.DEPT B
ON (A.DEPTNO = B.DEPTNO AND ON A.DEPTNO = B.DEPTNO
B.DNAME = 'SALES') WHERE 1=1 AND
WHERE 1=1; B.DNAME = 'SALES'
๋ฌธ์ 30. ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ์๋์ SQL๋ฌธ์ ์ํํ์์ ๋ ์ด ๋ช๊ฐ์ ํ(ROW)์ ๋ฐํํ๋๊ฐ? ์ ๋ตํ์ธ๐ผ
[SQLD_30_1]
COL1 COL2
------------
1 2
1 2
1 3
[SQLD_30_2]
COL1 COL2
------------
1 2
1 4
1 5
[SQL]
SELECT DISTINCT COL1, COL2 FROM
SQLD_30_1
UNION ALL
SELECT COL1, COL2 FROM SQLD_30_2;
1) 2, 4
2) 5 3) 4 4) 2, 5 |
๋ฌธ์ 31. ์๋์ ๊ณ์ธตํ SQL์์ ๋ฆฌํ ๋ฐ์ดํฐ์ด๋ฉด 1, ๊ทธ๋ ์ง ์์ผ๋ฉด 0์ ๋ฐํํ๋ ๋น์นธ์ ๋ค์ด๊ฐ ํค์๋๋ก ์๋ง์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[SQL]
SELECT LEVEL,
LPAD(' ',4*(LEVEL - 1)) || EMPNO,
MGR, ( ) AS ISLEAF
FROM SQLD_33_31
START WITH MGR IS NULL
CONNECT BY PRIOR EMPNO = MGR;
1) CONNECT_BY_ISLEAF 2) CONNECT_BY_ISCYCLE 3) SYS_CONNECT_BY_PATH 4) CONNECT_BY_ROOT |
๋ฌธ์ 32. ๋ค์ ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ์๋์ SQL๋ฌธ์ ์ํํ์์ ๋์ ๊ฒฐ๊ณผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[SQLD_32_1]
N1 V1
-------
1 A
2
3 B
4 C
[SQLD_32_2]
N1 V1
-------
1 A
2
3 B
[SQL]
SELECT SUM(A.N1)
FROM SQLD_32_1 A,
SQLD_32_2 B
WHERE A.V1 <> B.V1;
1) 10
2) 30 3) 12 4) 8 |
๋ฌธ์ 33. ์๋ธ ์ฟผ๋ฆฌ์ ๋ํ ์ค๋ช ์ผ๋ก ๊ฐ์ฅ ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) ์๋ธ ์ฟผ๋ฆฌ๋ ๊ดํธ๋ก ๊ฐ์ธ์ ์ฌ์ฉํ๋ค. 2) ์๋ธ ์ฟผ๋ฆฌ๋ ๋น๊ต ์ฐ์ฐ์์ ํจ๊ป ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. 3) ๋ฉ์ธ ์ฟผ๋ฆฌ๋ ์๋ธ ์ฟผ๋ฆฌ์ ์นผ๋ผ์ ์ธ ์ ์๋ค. 4) ์๋ธ ์ฟผ๋ฆฌ๋ SELECT์ , FROM์ , WHERE์ ๋ฑ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. |
๋ฌธ์ 34. ์๋์ ์คํ ๊ณํ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค๋ช ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
-----------------------------------------------------
0 SELECT STATEMENT Optimizer = ALL_ROWS
(Cost=7 Card=9 Bytes=1k)
1 0 HASH JOIN (Cost=7 Card=9 Bytes=1k)
2 1 TABLE ACCESS (FULL) OF 'SCOTT.DEPT' (TABLE)
(Cost=3 Card=1 Bytes=30)
3 1 VIEW(Cost=3 Card=9 Bytes=783)
4 3 COUNT(STOPKEY)
5 4 TABLE ACESS (FULL) OF 'SCOTT.EMP' (TABLE)
(Cost=3 Card=14 Bytes=1k)
-----------------------------------------------------
Predicate information (identified by opera-tion id);
-----------------------------------------------------
1 - access("A"."DEPTNO"="B"."DEPTNO")
2 - filter("B"."DNAME"='SALES')
4 - filter(ROWNUM < 10)
-----------------------------------------------------
1) DEMP TABLE์ ๋ํ ํ ์ ํ ๊ตฌ๋ฌธ์ด ์๋ค. 2) EMP TABLE๊ณผ DEPT TABLE์ OUTER JOIN์ผ๋ก ์ํ๋๊ณ ์๋ค. 3) EMP TABLE๊ณผ DEPT TABLE์์ ์ ํ ํ ์ด๋ธ์ EMP TABLE์ด๋ค. 4) DEPT TABLE์ ๋ณ๋์ ์กฐ๊ฑด์ด ์์ด FULL SCAN์ ํ๊ณ ์๋ค. |
๋ฌธ์ 35. ์๋์ SQL๋ฌธ์ ๋ง์กฑํ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ฅ ์ ์ค๋ช ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[EMP_A]
ENO MNO SALARY
----------------------
A1 B1 400
A2 B2 8000
A3 B3 9000
A4 B4 4000
A5 B5 5000
[EMP_B]
ENO MNO SALARY
----------------------
B1 C1 2000
B2 C2 7000
B3 C3 10000
B4 C4 3000
B5 C5 6000
[SQL]
SELECT B. * FROM EMP_A A, EMP_B B
WHERE A.MNO = B.ENO
AND B.SALARY >= A.SALARY;
1) ์ด๋ค ๋ถํ์ง์๋ณด๋ค๋ ์ฐ๋ด์ด ๋์ ์์ฌ 2) ์ด๋ค ๋ถํ์ง์๋ณด๋ค๋ ์ฐ๋ด์ด ๋ฎ์ ์์ฌ 3) ์ด๋ค ์์ฌ๋ณด๋ค๋ ์ฐ๋ด์ด ๋์ ๋ถํ ์ง์ 4) ์ด๋ค ์์ฌ๋ณด๋ค๋ ์ฐ๋ด์ด ๋ฎ์ ๋ถํ ์ง์ |
๋ฌธ์ 36. ๋ค์ ๋ณด๊ธฐ ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ธ์ด์ ์ข ๋ฅ์ ํด๋น๋๋ ๋ช ๋ น์ด๋ฅผ ๋ฐ๋ฅด๊ฒ ์ฐ๊ฒฐํ ๊ฒ์ 2๊ฐ ๊ณ ๋ฅด์์ค. โ๏ธ ์ ๋ตํ์ธ๐ผ
1) DML - SELECT 2) DML - ALTER 3) DCL - DROP 4) TCL - COMMIT |
๋ฌธ์ 37. ๋ค์ ์ค ์๋์ ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ๊ฐ์ ํ ์ด๋ธ ๋ฐ ๊ธฐ๋ณธํค (Primary Key) ์ ์ฝ์กฐ๊ฑด์ ์์ฑํ๋ DDL ๋ฌธ์ฅ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์?(DBMS ๋ Oracle์ ๊ธฐ์ค) ์ ๋ตํ์ธ๐ผ
[IE ํ๊ธฐ๋ฒ] [Barker ํ๊ธฐ๋ฒ]
PRODUCT PRODUCT()
PROD_ID: VARCHAR2(10)NOT NULL # PROD_ID VARCHAR2(10)
----------------------------- * PROD_NM: VARCHAR2(100)
PROD_NM: VARCHAR2(100)NOT NULL * REG_DT DATE
REG_DT: DATE NOT NULL 0 REGR_NO: NUMBER(10)
REGR_NO: NUMBER(10) NULL
1) 3)
CREATE TABLE PRODUCT( CREATE TABLE PRODUCT(
PROD_ID VARCHAR2(10) NOT NULL, PROD_ID VARCHAR2(10) NOT NULL,
PROD_NM VARCHAR2(100) NOT NULL, PROD_NM VARCHAR2(100) NOT NULL,
REG_DT DATE NOT NULL, REG_DT DATE NOT NULL,
REGR_NO NUMBER(10) NULL); REGR_NO NUMBER(10) NULL);
ALTER TABLE PRODUCT ADD PRIMARY KEY
PRODUCT_PK ON (PROD_ID);
2) 4)
CREATE TABLE PRODUCT( CREATE TABLE PRODUCT(
PROD_ID VARCHAR2(10), PROD_ID VARCHAR2(10) NOT NULL,
PROD_NM VARCHAR2(100), PROD_NM VARCHAR2(100) NOT NULL,
REG_DT DATE, REG_DT DATE NOT NULL,
REGR_NO NUMBER(10)); REGR_NO NUMBER(10),
CONSTRAINT PRODUCT_PK PRIMARY KEY(PROD_ID));
ALTER TABLE PRODUCT ADD CONSTRAINT
PRODUCT_PK PRIMARY KEY (PROD_ID);
๋ฌธ์ 38. ์๋ ํ ์ด๋ธ T, S, R์ด ๊ฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์ ์ธ๋์๋ค. ๋ค์ ๋ณด๊ธฐ ์ค DELETE FROM T ์ฟผ๋ฆฌ๋ฅผ ์ํํ ํ์ ํ ์ด๋ธ R์ ๋จ์์๋ ๋ฐ์ดํฐ๋ก ๊ฐ์ฅ ์ ์ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
CREATE TABLE T(
C INTEGER PRIMARY KEY,
D INTEGER);
CREATE TABLE S(
B INTEGER PRIMARY KEY,
C INTEGER REFERENCES T(C)
ON DELETE CASCADE);
CREATE TABLE R(
A INTEGER PRIMARY KEY,
B INTEGER REFERENCES S(B)
ON DELETE SET NULL);
[T] [S] [R]
C D B C A B
------ ------ ------
1 1 1 1 1 1
2 1 2 1 2 2
1) (1, NULL)๊ณผ (2, 2) 2) (1, NULL)๊ณผ (2, NULL) 3) (2, 2) 4) (1, 1) |
๋ฌธ์ 39. ๋ค์ ๋ณด๊ธฐ ์ค ํ ์ด๋ธ ์์ฑ์ ์นผ๋ผ๋ณ ์์ฑํ ์ ์๋ ์ ์ฝ์กฐ๊ฑด(Constraints)์ ๋ํ ์ค๋ช ์ผ๋ก ๊ฐ์ฅ ๋ถ์ ์ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) UNIQUE : ํ
์ด๋ธ ๋ด์์ ์ค๋ณต๋๋ ๊ฐ ์ด ์์ผ๋ฉด NULL ์
๋ ฅ์ด ๋ถ๊ฐ๋ฅํ๋ค. 2) Primary Key : ์ฃผ ํค๋ก ํ ์ด๋ธ๋น 1๊ฐ๋ง ์์ฑ์ด ๊ฐ๋ฅํ๋ค. 3) Foreign Key : ์ธ๋ํค๋ก ์ฌ๋ฌ ๊ฐ ์์ฑ์ด ๊ฐ๋ฅํ๋ค. 4) NOT NULL : ๋ช ์์ ์ผ๋ก NULL ์ ๋ ฅ์ ๋ฐฉ์งํ๋ค. |
๋ฌธ์ 40. ๋ค์ ์ค ์๋์ (1), (2), (3) ์ SQL์์ ์คํ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
(1)
SELECT A.ID, B.ID
FROM SQLD_40_1 A FULL OUTER JOIN
SQLD_40_2 B
ON A.ID = B.ID;
(2)
SELECT A.ID, B.ID
FROM SQLD_40_1 A LEFT OUTER JOIN
SQLD_40_2 B
ON A.ID = B.ID
UNION
SELECT A.ID, B.ID
FROM SQLD_40_1 A RIGHT OUTER JOIN
SQLD_40_2 B
ON A.ID = B.ID;
(3)
SELECT A.ID, B.ID
FROM SQLD_40_1 A, SQLD_40_2 B
WHERE A.ID = B.ID
UNION ALL
SELECT A.ID, NULL FROM SQLD_40_1 A
WHERE NOT EXISTS(SELECT 1 FROM
SQLD_40_2 B
WHERE A.ID = B.ID)
UNION ALL
SELECT NULL, B.ID
FROM SQLD_40_2 B
WHERE NOT EXISTS(SELECT 1 FROM
SQLD_40_1 A
WHERE B.ID = A.ID);
1) 1, 2 2) 1, 3 3) 2, 3 4) 1, 2, 3 |
๋ฌธ์ 41. ์๋์ SQL๋ก ์กฐํ๋๋ ํ ์๋ฅผ ๊ตฌํ์์ค. ์ ๋ตํ์ธ๐ผ
[SQLD_41_1]
DEPTNO JOB SAL
------------------------
20 CLERK 800
30 SALESMAN 1600
30 SALESMAN 1250
20 MANAGER 2976
30 SALESMAN 1250
30 MANAGER 2850
10 MANAGER 2450
20 ANALYST 3000
10 PRESIDENT 5000
30 SALESMAN 1500
20 CLERK 1100
30 CLERK 950
20 ANALYST 3000
10 CLERK 1300
[SQLD_41_2]
DEPTNO DNAME
-----------------
10 ACCOUNTING
20 RESEARCH
30 SALES
40 OPERATIONS
SELECT DNAME, JOB,
COUNT(*) "TOTAL EMP",
SUM(SAL) "TOTAL SAL"
FROM SQLD_41_1 A, SQLD_41_2 B
WHERE A.DEPTNO = B.DEPTNO
GROUP BY CUBE(DNAME, JOB);
1) 10 2) 14 3) 18 4) 20 |
๋ฌธ์ 42. ๋ค์ ๋ณด๊ธฐ ์ค Oracle ๊ณ์ธตํ ์ง์์ ๋ํ ์ค๋ช ์ผ๋ก ๊ฐ์ฅ ๋ถ์ ์ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
1) START WITH์ ์ ๊ณ์ธต ๊ตฌ์กฐ์ ์์์ ์ ์ง์ ํ๋ ๊ตฌ๋ฌธ์ด๋ค. 2) ORDER SIBLINGS BY์ ์ ํ์ ๋ ธ๋ ์ฌ์ด์์ ์ ๋ ฌ์ ์ง์ ํ๋ ๊ตฌ๋ฌธ์ด๋ค. 3) ์๋ฐฉํฅ ์ ๊ฐ๋ ๋ถ๋ชจ ๋ ธ๋๋ก๋ถํฐ ์์ ๋ ธ๋ ๋ฐฉํฅ์ผ๋ก ์ ๊ฐํ๋ ๊ฒ์ ๋งํ๋ค. 4) ๋ฃจํธ ๋ ธ๋์ LEVEL ๊ฐ์ 0์ด๋ค. |
๋ฌธ์ 43. ๋ค์ ๋ณด๊ธฐ ์ค ์ฃผ์ด์ง ํ ์ด๋ธ์ ๋ํด์ ์๋์ SQL๋ฌธ์ ์ํํ์์๋์ ๊ฒฐ๊ณผ๋ก ๊ฐ์ฅ ์ ์ ํ ๊ฒ์? ์ ๋ตํ์ธ๐ผ
[SQLD_33_43]
EMPLOYEE_ID NAME DATE_OF_ENTRY MANAGER_ID
------------------------------------------------
1000 ๊ฐ๋์ 2018-01-01 NULL
1001 ์กฐ์ธ์ฑ 2018-01-01 1000
1002 ์๋น 2019-01-01 1000
1003 ์ ์ฐ์ฑ 2019-01-01 1000
1004 ํ๋น 2019-01-01 NULL
1005 ์ฅํ 2020-01-01 1004
1006 ์ด๋ณํ 2020-01-01 1004
1007 ์์ฑ๊ธฐ 2020-01-01 1004
[SQL]
SELECT EMPLOYEE_ID, NAME, DATE_OF_ENTRY, MANAGER_ID
FROM SQLD_33_43
START WITH MANAGER_ID IS NULL
CONNECT BY PRIOR EMPLOYEE_ID = MANAGER_ID
AND DATE_OF_ENTRY BETWEEN '2019-01-01'
AND '2019-12-31'
ORDER SIBLINGS BY EMPLOYEE_ID;
1)
EMPLOYEE_ID NAME DATE_OF_ENTRY MANAGER_ID
--------------------------------------------
1000 ๊ฐ๋์ 18/01/01 NULL
1002 ์๋น 19/01/01 1000
1003 ์ ์ฐ์ฑ 19/01/01 1000
1004 ํ๋น 19/01/01 NULL
2)
EMPLOYEE_ID NAME DATE_OF_ENTRY MANAGER_ID
--------------------------------------------
1002 ์๋น 19/01/01 1000
1003 ์ ์ฐ์ฑ 19/01/01 1000
1004 ํ๋น 19/01/01 NULL
3)
EMPLOYEE_ID NAME DATE_OF_ENTRY MANAGER_ID
--------------------------------------------
1000 ๊ฐ๋์ 18/01/01 NULL
3)
EMPLOYEE_ID NAME DATE_OF_ENTRY MANAGER_ID
--------------------------------------------
1000 ๊ฐ๋์ 18/01/01 NULL
1004 ํ๋น 19/01/01 NULL
1005 ์ฅํ 20/01/01 1004
1006 ์ด๋ณํ 20/01/01 100
1007 ์์ฑ๊ธฐ 20/01/01 1004
- - - - - - - - ์ฃผ๊ด์ - - - - - - - -
๋ฌธ์ 44. ์๋์ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋๋๋ก ์ฃผ์ด์ง SQL๋ฌธ์ ๋น์นธ์ ์์ฑํ์์ค.์ ๋ตํ์ธ๐ผ
SELECT COL1, COL2, COL3,
LEAD(COL3,( ),( ))
OVER(PARTITION BY COL1 ORDER BY COL3)
AS AFTER_COL3
FROM SQLD_33_44;
[RESULT]
COL1 COL2 COL3 AFTER_COL3
-----------------------------
A ๊ฐ 1 10
A ๊ฐ 5 9
A ๋ค 10 9
B ๊ฐ 20 100
B ๊ฐ 30 9
B ๊ฐ 100 9
C ๊ฐ 50 1000
C ๊ฐ 100 9
C ๊ฐ 1000 9
D ๊ฐ 1200 9
D ๊ฐ 1400 9
โ๏ธ
๋ฌธ์ 45. ์ฃผ์ด์ง ํ ์ด๋ธ์์ ์๋์ SQL๋ฌธ์ ์ํํ์์๋ ๊ฒฐ๊ณผ๊ฐ์ด ์๋์ ๊ฒฐ๊ณผ์ ๊ฐ์๋ ๊ฒฐ๊ณผ์ ( )์ ๋ค์ด๊ฐ ๊ฐ์ ์ ์ผ์์ค.
[SQLD_33_45]
COL1 COL2 COL3
---------------------
A ๊ฐ 1
A ๊ฐ 5
A ๋ค 10
B ๊ฐ 20
B ๋ 30
B ๋ 100
C ๋ค 50
[SQL]
SELECT NTILE_2, COUNT(*) AS CNT
FROM (
SELECT COL1, COL2, COL3, NTILE(3) OVER
(ORDER BY COL3) AS NTILE_2
FROM SQLD_33_45
)
WHERE 1=1
GROUP BY NTILE_2;
[RESULT]
NTILE_2 CNT
----------------
( ) ( )
2 2
3 2
โ๏ธ์ ๋ตํ์ธ๐ผ
๋ฌธ์ 46. ์๋ SQL๋ฌธ์ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ ์ผ์์ค.
[SQL]
SELECT COALESCE(NULLIF(1,1),2,3)
FROM DUAL;
โ๏ธ์ ๋ตํ์ธ๐ผ
๋ฌธ์ 47. ์ฃผ์ด์ง ํ ์ด๋ธ์์ ๋ ์ง ๊ฐ์ 2020, 02๋ก ๋ถ๋ฆฌํ์ฌ ์ถ์ถํ๋๋ก ์๋ SQL๋ฌธ์ ( )์ ์์ฑํ์์ค. ์ ๋ตํ์ธ๐ผ
[SQLD_33_47]
COL1
--------
2020-2-1
[SQL]
SELECT EXTRACT(YEAR FROM SYSDATE),
LPAD(EXTRACT(month from sysdate),( ))
FROM SQLD_33_47;
โ๏ธ
๋ฌธ์ 48. ์๋์ ๋ณด๊ธฐ๋ฅผ ๋ง์กฑํ๋ ์กฐ์ธ ๊ธฐ๋ฒ์ ๋ฌด์์ธ๊ฐ?
- ๋จผ์ ์ ํ ํ
์ด๋ธ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ์ ์ถ์ถํ์ฌ ํํ ํ
์ด๋ธ์ ์ฝ์ผ๋ฉด์ ์กฐ์ธ์ ์ํํ๋ค.
- ๋๋ค ๋ฐฉ์์ผ๋ก ์์ธ์ค ํ๋ค.
- ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ฅํ ๋นจ๋ฆฌ ํ๋ฉด์ ๋ณด์ฌ์ค์ผ ํ๋ ์จ๋ผ์ธ ํ๋ก๊ทธ๋จ์ ์ ๋นํ๋ค.
โ๏ธ์ ๋ตํ์ธ๐ผ
๋ฌธ์ 49. ์ฃผ์ด์ง ํ ์ด๋ธ์์ ์๋์ SQL๋ฌธ์ ์ํํ์์๋์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ผ์์ค.
[SQLD_33_49]
COL1 COL2 COL3
-------------------
A 100 50
A 300 130
A 400 70
B 50 100
C 500 500
[SQL]
SELECT SUM(CASE WHEN COL1 = 'A'
THEN 1 END) AS SUM1,
SUM(CASE WHEN COL2 < 200
THEN 1 END) AS SUM2
FROM SQLD_33_49;
โ๏ธ์ ๋ตํ์ธ๐ผ
๋ฌธ์ 50. ์ฃผ์ด์ง ํ ์ด๋ธ์์ ์๋์ SQL๋ฌธ์ ์ํํ ๊ฒฐ๊ณผ๊ฐ RESULT์ ๊ฐ์๋ SQL๋ฌธ์ ๋น์นธ์ ๊ทธ๋ฃน ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑํ์์ค.
[SQLD_33_50]
COL1 COL2 COL3
------------------
A ๊ฐ 2
A ๊ฐ 4
A ๋ค 3
A ๋ค 3
A ๋ค 1
B ๊ฐ 10
B ๊ฐ 10
B ๋ 50
B ๋ 50
B ๋ 30
C ๋ 50
C ๋ 50
C ๋ค 500
C ๋ค 500
C ๋ค 50
[SQL]
SELECT COL1, COL2, SUM(COL3)
FROM SQLD_33_50
GROUP BY( );
[RESULT]
COL1 COL2 SUM(COL3)
-------------------------
A ๊ฐ 6
A ๋ค 7
A 13
B ๊ฐ 20
B ๋ 130
B 150
C ๋ 100
C ๋ค 1050
C 1150
โ๏ธ์ ๋ตํ์ธ๐ผ
๐SQLD. ์ 33 ํ ๊ธฐ์ถ ๋ฌธ์ (์ด 50) - ์ ๋ต / ํด์ค
1. ์ ๋ต : Range Partition
๐๋ฌธ์ ํ์ธ
ํด์ค : ํํฐ์ ๋ (ํ ์ด๋ธ์ ์ข ๋ ์๊ฒ ๋ถํ ํด์ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฒ)
๋ถํ ๊ธฐ์ค | ์ค๋ช |
๋ฒ์ ๋ถํ (Range Partitioning) |
- ๋ถํ ํค ๊ฐ์ด ๋ฒ์ ๋ด์ ์๋์ง ์ฌ๋ถ๋ก ๊ตฌ๋ถํ๋ค. - ์๋ฅผ ๋ค์ด, ์ฐํธ ๋ฒํธ๋ฅผ ๋ถํ ํค๋ก ์ํ ๋ถํ ํ๋ ๊ฒฝ์ฐ์ด๋ค. |
๋ชฉ๋ก ๋ถํ (List Partitioning) |
- ๊ฐ ๋ชฉ๋ก์ ํํฐ์
์ ํ ๋น ๋ถํ ํค ๊ฐ์ ๊ทธ ๋ชฉ๋ก์ ๋น์ถ์ด ํํฐ์
์ ์ ํํ๋ค. - ์๋ฅผ ๋ค์ด, Country๋ผ๋ ์ปฌ๋ผ์ ๊ฐ์ด Iceland, Norway, Sweden, Finland, Denmark์ค ํ๋์ ์๋ํ์ ๊ฐ์ ธ์ฌ๋ ๋ถ์ ๋ฝ ๊ตญ๊ฐ ํํฐ์ ์ ๊ตฌ์ถ ํ ์ ์๋ค. |
ํด์ ๋ถํ (Hash Partitioning) |
- ํด์ ํจ์์ ๊ฐ์ ๋ฐ๋ผ ํํฐ์
์ ํฌํจํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค. - ๋ฐ์ดํฐ์ ๊ด๋ฆฌ ๋ณด๋ค๋ ์ฑ๋ฅ ํฅ์์ ๋ชฉ์ ์ ๋๋ค. - ์๋ฅผ ๋ค์ด, 4๊ฐ์ ํํฐ์ ์ผ๋ก ๋ถํ ํ๋ ๊ฒฝ์ฐ ํด์ ํจ์๋ 0-3์ ์ ์๋ฅผ ๋๋ ค์ค๋ค. |
ํฉ์ฑ ๋ถํ (Composite Partitioning) |
- ๋ถํ ๊ธฐ์ค์ผ๋ก ์ฌ๋ฌ ๊ธฐ๋ฒ์ ๊ฒฐํฉํด ์ฌ์ฉํ๋ค. |
๋ผ์ด๋ ๋ก๋น (Round Robin) |
- ๋ผ์ด๋๋ก๋น ๋ถํ ์ ํํฐ์
์ ํ์ ๊ณ ๋ฅธ ๋ถํฌ๋ฅผ ์ํ ๋ ์ฌ์ฉํ๋ค. - *ํด์๋ถํ ๊ณผ ๋ฌ๋ฆฌ ๋ถํ ์นผ๋ผ์ ๋ช ์ํ ํ์๊ฐ ์๋ค. - ํ์ ํ๋ฉด์ ์๋ก์ด ํ์ด ํํฐ์ ์ ํ ๋น๋๋ค. - ํ๋์ ์ค์์ฒ๋ฆฌ์ฅ์น๋ฅผ ์์์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ์ฐจ์งํ๋ ๊ฒ์ด ์๋๋ผ, ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค์ด ์ค์์ฒ๋ฆฌ์ฅ์น๋ฅผ ์กฐ๊ธ์ฉ ๋์๊ฐ๋ฉฐ ํ ๋น๋ฐ์ ์คํ๋๋ ๋ฐฉ์์ผ๋ก, ๋ฆฌ๋ ์ค๋ฅผ ํฌํจํ ๋๋ถ๋ถ์ ์์คํ ์์ ์ฌ์ฉํ๋๋ฐฉ์์ด๋ค. ์: ๋ฌด๋์ด ์ฌ๋ฆ, ์ธ ๋ช ์ ์์ด๋ค์ด ํ๋์ ์์ด์คํฌ๋ฆผ์ 1/3์ฉ ๋๋์ด ๋จน์ผ๋ ค ํ๋ค. ๋จผ์ A๊ฐ 1/3์ ๋จน๊ณ , ๊ทธ ๋ค์ B๊ฐ 1/3์ ๋จน๊ณ , ๋ง์ง๋ง์ผ๋ก C๊ฐ ๋๋จธ์ง๋ฅผ ๋จน๋ ๊ฒ๋ณด๋ค๋, ์ธ ๋ช ์ด ์กฐ๊ธ์ฉ ๋์๊ฐ๋ฉฐ ๋จน๋ ํธ์ด ๋ชจ๋ ์์ด๋ค์ ๊ฐ์ฆ์ ๋์์ ํด์ํ ์ ์์ ๊ฒ์ด๋ค. |
2. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ์์ฑ์ ํน์ฑ์ ๋ฐ๋ฅธ ๋ถ๋ฅ ( ๊ธฐ๋ณธ์์ฑ, ์ค๊ณ์์ฑ, ํ์์์ฑ)
๊ตฌ๋ถ | ์ค๋ช |
๊ธฐ๋ณธ ์์ฑ | ์ฌ์์ด๋ฆ, ์ง์ฑ ์ด๋ฆ, ๊ณ ์ฉ์ผ์ ๋ฑ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์์ฑ |
์ค๊ณ ์์ฑ | ์ ๋ฌด์ ํ์ํ ๋ฐ์ดํฐ ์ธ์ ์ ๋ฌด๋ฅผ ๊ท์นํ ํ๊ธฐ ์ํด ์์ฑ์ ์๋ก ๋ง๋ค๊ฑฐ๋ ๋ณํํ์ฌ ์ ์ํ๋ ์์ฑ |
ํ์ ์์ฑ | ๋ค๋ฅธ ์์ฑ์ ์ํฅ์ ๋ฐ์ ๋ฐ์ํ๋ ์์ฑ, ๊ณ์ฐ๋ ๊ฐ๋ค์ด ์ฌ๊ธฐ์ ํด๋น (์: ์ด ๊ฒฐ์ ๊ธ์ก ๋ฑ) |
3. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ์์ฑ์ ์ํฐํฐ ๊ตฌ์ฑ๋ฐฉ์์ ๋ฐ๋ผ ๋ถ๋ฅ ( PK ์์ฑ, FK ์์ฑ, ์ผ๋ฐ์์ฑ )
์์ฑ์ ๋ถ๋ฅ
๊ฐ. ์์ฑ์ ํน์ฑ์ ๋ฐ๋ฅธ ๋ถ๋ฅ
์์ฑ์ ํน์ฑ์ ๋ฐ๋ผ ๋ถ๋ฅํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ถ๋ฅ๋์ด์ง๋ค.
1) ๊ธฐ๋ณธ์์ฑ
์ ๋ฌด๋ถ์์ ํตํด ์ ์ํ ์์ฑ
(์ ํ์ด๋ฆ, ์ ์กฐ๋ ์, ์ ์กฐ์๊ฐ ๋ฑ)
2) ์ค๊ณ์์ฑ
์๋ ์ ๋ฌด์ ์กด์ฌํ์ง๋ ์์ง๋ง ์ค๊ณ๋ฅผ ํ๋ฉด์ ๋์ถํด๋ด๋ ์์ฑ
(001-์ํ์ฉ๊ธฐ, 002-์ฝํ์ฉ๊ธฐ, 003-๊ธฐํ์ฉ๊ธฐ ๋ฑ)
3) ํ์์์ฑ
๋ค๋ฅธ ์์ฑ์ผ๋ก๋ถํฐ ๊ณ์ฐ์ด๋ ๋ณํ์ด ๋์ด ์์ฑ๋๋ ์์ฑ
๋ค๋ฅธ ์์ฑ์ ์ํฅ์ ๋ฐ๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค ์ค๊ณ ์ ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ ์ํด์ผ ํ ์ ์ด ๋ง๋ค.
ํ์์์ฑ์ ๊ทธ ์์ฑ์ด ๊ฐ์ง๊ณ ์๋ ๊ณ์ฐ๋ฐฉ๋ฒ์ ๋ํด์ ๋ฐ๋์ ์ด๋ค ์ํฐํฐ์ ์ด๋ค ์์ฑ์ ์ํด ์ํฅ์ ๋ฐ๋์ง ์ ์๊ฐ ๋์ด์ผ ํ๋ฉฐ, ๊ฐ๊ธ์ ํ์์์ฑ์ ์ ๊ฒ ์ ์ํ๋ ๊ฒ์ด ์ข๋ค.
(์ ์ฒด์ฉ๊ธฐ์(sum(๊ฐ๋ณ์ฉ๊ธฐ), ์ฉ๊ธฐ์ ์ด๊ธ์ก(sum(๋จ๊ฐ) ๋ฑ)
๋. ์ํฐํฐ ๊ตฌ์ฑ๋ฐฉ์์ ๋ฐ๋ฅธ ๋ถ๋ฅ
์์ฑ์ ์ํฐํฐ ๊ตฌ์ฑ๋ฐฉ์์ ๋ฐ๋ผ ๋ถ๋ฅํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ถ๋ฅ๋์ด์ง๋ค.
์ํฐํฐ๋ฅผ ์๋ณํ ์ ์๋ ์์ฑ์ PK(Primary Key)์์ฑ, ๋ค๋ฅธ ์ํฐํฐ์์ ๊ด๊ณ์์ ํฌํจ๋ ์์ฑ์ FK(Foreign Key)์์ฑ, ์ํฐํฐ์ ํฌํจ๋์ด ์๊ณ PK, FK์ ํฌํจ๋์ง ์์ ์์ฑ์ ์ผ๋ฐ์์ฑ์ด๋ผ ํ๋ค.
1) PK(Primary Key) ์์ฑ
์ํฐํฐ๋ฅผ ์๋ณํ ์ ์๋ ์์ฑ
2) FK(Foreign Key) ์์ฑ
๋ค๋ฅธ ์ํฐํฐ์์ ๊ด๊ณ์์ ํฌํจ๋ ์์ฑ
3) ์ผ๋ฐ์์ฑ
PK, FK์ ํฌํจ๋์ง ์์ ์์ฑ
๋ํ ์์ฑ์ ์ธ๋ถ ์๋ฏธ๋ฅผ ๋ ์ชผ๊ฐค ์ ์๋์ง์ ์ฌ๋ถ์ ๋ฐ๋ผ ๋ถ๋ฅํ ์ ์๋ค.
1) ๋จ์ ์์ฑ(Simple Attribute)
๋ ์ด์ ๋ค๋ฅธ ์์ฑ๋ค๋ก ์ชผ๊ฐค ์ ์๋ ๋จ์ํ ์์ฑ
(๋์ด, ์ฑ๋ณ)
2) ๋ณตํฉ ์์ฑ(Composite Attribute)
์ฌ๋ฌ ์ธ๋ถ ์์ฑ๋ค๋ก ์ชผ๊ฐค ์ ์๋ ์์ฑ
(์ฃผ์ - ์, ๊ตฌ, ๋, ๋ฒ์ง ๋ฑ์ผ๋ก ์ชผ๊ฐ์ง ์ ์๋ค)
ํ๋์ ์์ฑ ์์ ๋์ผํ ์ฑ์ง์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ด ์กด์ฌ ํ ์ ์๋๊ฐ์ ์ฌ๋ถ์ ๋ฐ๋ผ ๋ถ๋ฅ ํ ์๋ ์๋ค.
(๊ฐ์ง ์ ์๋ ์์ฑ์ด 1:1๋ก ํ๋๋ฟ์ด๋, 1:N์ผ๋ก ์ฌ๋ฌ๊ฐ๊ฐ ์กด์ฌ ํ ์ ์๋๋์ ์ฌ๋ถ)
1) ๋จ์ผ๊ฐ ์์ฑ(Single-Valued Attribute)
์์ฑ ํ๋์ ํ ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ ๊ฒฝ์ฐ
(๋ชจ๊ตญ, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ)
2) ๋ค์ค๊ฐ ์์ฑ(Multi-Valued Attribute)
์์ฑ ํ๋์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ ๊ฒฝ์ฐ
(์ ํ๋ฒํธ, ์ปดํจํฐ๊ณตํ๊ณผ ๊ต์๋ช )
๋ค์ค๊ฐ ์์ฑ์ ๊ฒฝ์ฐ ํ๋์ ์ํฐํฐ์ ํฌํจ๋ ์ ์์ผ๋ฏ๋ก 1์ฐจ ์ ๊ทํ๋ฅผ ํ๊ฑฐ๋, ์๋๋ฉด ๋ณ๋์ ์ํฐํฐ๋ฅผ ๋ง๋ค์ด ๊ด๊ณ๋ก ์ฐ๊ฒฐํด์ผ ํ๋ค.
4. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : I/E ํ๊ธฐ๋ฒ (Information Engineering Notation)
5. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
์๋ณ์ ๊ด๊ณ | ๋น์๋ณ์ ๊ด๊ณ |
๋ถ๋ชจ ์ํฐํฐ๋ก๋ถํฐ ์์ฑ์ ๋ฐ์ ์์์ํฐํฐ์ ์ฃผ์๋ณ์๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ | ๋ถ๋ชจ ์ํฐํฐ๋ก๋ถํฐ ์์ฑ์ ๋ฐ์์ง๋ง ์์์ํฐํฐ์ ์ฃผ์๋ณ์๋ก ์ฌ์ฉํ์ง ์๊ณ , ์ผ๋ฐ์ ์ธ ์์ฑ(์ฆ, ์ผ๋ฐ ์์ฑ ์ธ๋ถ์๋ณ์)์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ |
์๋ณ์ ๊ด๊ณ์์ Null๊ฐ์ด ์ค๋ฉด ์๋๋ฏ๋ก ๋ฐ๋์ ๋ถ๋ชจ์ํฐํฐ๊ฐ ์์ฑ๋์ด์ผ ์๊ธฐ ์์ ์ ์ํฐํฐ๊ฐ ์์ฑ๋จ | ์ฝํ ์ข ์ ๊ด๊ณ๋ก ์์ ์ฃผ์๋ณ์ ๊ตฌ์ฑ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ์ฑ |
๋ถ๋ชจ๋ก๋ถํฐ ๋ฐ์ ์์ฑ์ ์์์ํฐํฐ๊ฐ ๋ชจ๋ ์ฌ์ฉํ๊ณ ๊ทธ๊ฒ๋ง์ ์ฃผ์๋ณ์๋ก ์ฌ์ฉํ๋ค๋ฉด ๋ถ๋ชจ์ํฐํฐ์ ์์์ํฐํฐ์ 1:1 ๊ด๊ณ | ์์๋ฐ์ ์ฃผ์๋ณ์์์ฑ์ ํ ์ํฐํฐ์ ์ฐจ๋จ ํ์ |
๋ถ๋ชจ๋ก๋ถํฐ ๋ฐ์ ์์ฑ ์ด์ธ์, ๋ค๋ฅธ ๋ถ๋ชจ๋ก ๋ถํฐ ๋ฐ์ ์์ฑ์ ํฌํจํ๊ฑฐ๋ ์ค์ค๋ก ๊ฐ์ง๊ณ ์๋ ์์ฑ๊ณผ ํจ๊ป ์ฃผ์๋ณ์๋ก ๊ตฌ์ฑ๋๋ ๊ฒฝ์ฐ๋ 1:M ๊ด๊ณ | ๋ถ๋ชจ์ชฝ์ ๊ด๊ณ์ฐธ์ฌ๊ฐ ์ ํ๊ด๊ณ |
์๋ณ์ ๊ด๊ณ๋ก๋ง ๊ด๊ณ๋ฅผ ๊ตฌ์ฑํ๋ฉด ์กฐ์ธ์กฐ๊ฑด์ ๊ฐ์๊ฐ ๋ง์์ง๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์ ๋ณต์ก์ฑ๊ณผ ์ค๋ฅ๊ฐ๋ฅ์ฑ์ ์ ๋ฐ์ํฌ์ ์๋ ์์ธ์ด ๋ ์ ์๋ค. | ๋น์๋ณ์ ๊ด๊ณ๋ก๋ง ๊ด๊ณ๋ฅผ ๊ตฌ์ฑํ๋ฉด ๋ง์ ์กฐ์ธ์ด ๊ฑธ๋ฆฌ๊ฒ ๋๊ณ , ๊ทธ์ ๋ฐ๋ผ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ๊ณ ์ฑ๋ฅ์ด ์ ํ๋๋ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค. |
์ค์ ์ผ๋ก ํํ | ์ ์ ์ผ๋ก ํํ |
6. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : 3์ฐจ ์ ๊ทํ โ ํ ์ํฐํฐ ์์ ๋ชจ๋ ์ฃผ์๋ณ์๊ฐ ์๋ ์์ฑ๋ค์ ์ฃผ์๋ณ์์ ์์กดํด์ผ ํ๋ค. ์์ฑ์ ์ข
์์ ์ธ(์ด์ ์ข
์) ์์ฑ์ด ์๋ค๋ฉด ๋ถ๋ฆฌํด์ผ ํ๋ค.
7. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : ๊ณ์ฝ์ ๊ณ์ฝ ๊ทธ๋ฃน์ ์ํ๊ฑฐ๋ or ์ํ์ง ์์์ ์๋ค.
O = or (์์์๋ ์๊ณ or ์์์๋ ์๋ค.)
8. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : Range ํํฐ์ ์ ์ฃผ๋ก ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๊ท ๋ฑํ๊ฒ ๋๋์ด์ ธ์ ๋น์ทํ ์ฑ๋ฅ ๊ฐ์ ์ ๋ณด์ฅํ๋ค. ๋ํ ๋ณด๊ด ์ฃผ๊ธฐ์ ๋ฐ๋ผ์ ํ์์น ์๋ ๋ฐ์ดํฐ๋ ์ฝ๊ฒ ์ง์ฐ๊ณ ๊ด๋ฆฌํ ์ ์๋ค.
9. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ํผ/์๋ธํ์ ๋ฐ์ดํฐ์ ํน์ง์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์ ๊ณ ๋ คํ์ฌ ํจ๊ณผ์ ์ผ๋ก ํํํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์ฆ, ๊ณตํต์ ๋ถ๋ถ์ ์ํผํ์ ์ผ๋ก ๋ชจ๋ธ๋งํ๊ณ ๊ณตํต์ผ๋ก๋ถํฐ ์์๋ฐ์ ๋ค๋ฅธ ์ํฐํฐ์ ์ฐจ์ด๊ฐ ์๋ ์์ฑ์ ๋ํด์๋ ๋ณ๋์ ์๋ธ์ํฐํฐ๋ก ๊ตฌ๋ถํ์ฌ ์ ๋ฌด์ ๋ชจ์ต์ ์ ํํ๊ฒ ํํํ๋ฉด์ ๋ฌผ๋ฆฌ์ ์ธ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ก ๋ณํ์ ํ ๋ ์ ํ์ ํญ์ ๋ํ ์ ์๋ ์ฅ์ ์ด ์๋ค.
์ํผ/์๋ธ ํ์ ๊ด๊ณ์ ๋ณํ
๋ฐ์ดํฐ๋์ด ์๋์ผ ๊ฒฝ์ฐ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ฒ๋ฆฌ์ ์ ์ฐ์ฑ์ ๊ณ ๋ คํ์ฌ 1:1 ๊ด๊ณ๋ฅผ ์ ์งํ๋ค.
๊ทธ๋ฌ๋ ๋ฐ์ดํฐ์ฉ๋์ด ๋ง์์ง๋ ๊ฒฝ์ฐ ๊ทธ๋ฆฌ๊ณ ํด๋น ์ ๋ฌด์ ์ธ ํน์ง์ด ์ฑ๋ฅ์ ๋ฏผ๊ฐํ ๊ฒฝ์ฐ๋ ํธ๋์ญ์ ์ด ํด๋น ํ ์ด๋ธ์ ์ด๋ป๊ฒ ๋ฐ์๋๋์ง์ ๋ฐ๋ผ 3๊ฐ์ง ๋ณํ๋ฐฉ๋ฒ์ ์ฐธ์กฐํ์ฌ ์ํฉ์ ๋ง๊ฒ ๋ณํํ๋๋ก ํด์ผ ํ๋ค.
10. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : ๋ฐ์ ๊ทํ๋? (DB์ ์ฑ๋ฅ ํฅ์์ ์ํด ๋ฐ์ดํฐ ์ค๋ณต์ ํ์ฉํ๊ณ ์กฐ์ธ์ ์ค์ด๋ ๊ฒ์ผ๋ก, ๋ฐ์ ๊ทํ๋ฅผ ํตํด ์กฐํ ์ฑ๋ฅ์ ์ข์์ง์ง๋ง ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ ์ฐ์ฑ์ ๋ฎ์์ง๋ฉฐ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง ์ํ์ด ์๋ค.)
๋ฐ์ ๊ทํ์ ๊ธฐ๋ฒ
- ํ ์ด๋ธ ๋ฐ์ ๊ทํ: ํ ์ด๋ธ ๋ณํฉ/๋ถํ /์ถ๊ฐ
- ์นผ๋ผ ๋ฐ์ ๊ทํ: ์ค๋ณต์นผ๋ผ ์ถ๊ฐ/ํ์์นผ๋ผ ์ถ๊ฐ/์ด๋ ฅํ ์ด๋ธ ์นผ๋ผ์ถ๊ฐ/PK์ ์ํ ์นผ๋ผ ์ถ๊ฐ ๋ฑ
- ๊ด๊ณ ๋ฐ์ ๊ทํ: ์ค๋ณต๊ด๊ณ ์ถ๊ฐ
*ํ ์ด๋ธ๊ณผ ์นผ๋ผ์ ๋ฐ์ ๊ทํ๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ํฅ์ ๋ฏธ์น์ง๋ง ๊ด๊ณ์ ๋ฐ์ ๊ทํ๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๊นจ๋จ๋ฆด ์ํ์์ด ๋ฐ์ดํฐ์ฒ๋ฆฌ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค.
11. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :ํด์ค :
์๋ธ์ฟผ๋ฆฌ๋ ํ๋์ SQL๋ฌธ ์์ ํฌํจ๋์ด ์๋ ๋ ๋ค๋ฅธ SQL๋ฌธ์ ๋งํ๋ค.
์๋ธ์ฟผ๋ฆฌ๋ ๋ฉ์ธ์ฟผ๋ฆฌ์ ์ปฌ๋ผ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ง๋ง, ๋ฉ์ธ์ฟผ๋ฆฌ๋ ์๋ธ์ฟผ๋ฆฌ์ ์ปฌ๋ผ์ ์ฌ์ฉํ ์ ์๋ค.
์ง์ ๊ฒฐ๊ณผ์ ์๋ธ์ฟผ๋ฆฌ ์ปฌ๋ผ์ ํ์ํด์ผ ํ๋ค๋ฉด ์กฐ์ธ ๋ฐฉ์์ผ๋ก ๋ณํํ๊ฑฐ๋ ํจ์, ์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ ๋ฑ์ ์ฌ์ฉํด์ผ ํ๋ค.
์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉ์ ์ฃผ์์ฌํญ1. ์๋ธ์ฟผ๋ฆฌ๋ฅผ ๊ดํธ๋ก ๊ฐ์ธ์ ์ฌ์ฉํ๋ค.2. ์๋ธ์ฟผ๋ฆฌ๋ ๋จ์ผํ(Single row) ๋๋ ๋ณต์ํ (Multiple row)๋น๊ต ์ฐ์ฐ์์ ํจ๊ป ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. ๋จ์ผํ ๋น๊ต ์ฐ์ฐ์๋ ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋์ 1๊ฑด ์ดํ์ฌ์ผ ํ๊ณ ๋ณต์ํ ๋น๊ต ์ฐ์ฐ์๋ ์๋ธ์ปค๋ฆฌ์ ๊ฒฐ๊ณผ ๊ฑด์์ ์๊ด์๋ค.
12. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค :
13. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค :
14. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค :
15. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค :
16. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :
17. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค :
18. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
19. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
20. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :
21. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
22. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
23. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : 1 PRECEDING / 1 FOLLOWING - ํ์ฌํ์ ๊ธฐ์ค์ผ๋ก ์ด์ ํ+ํ์ฌ+๋ค์ํ ํฉ๊ณ๋ฅผ ํ์
- ROWS : ๋ฌผ๋ฆฌ์ ์ธ ROW ๋จ์๋ก ํ ์งํฉ์ ์ง์ ํ๋ค.(ํ์ฌ ํ์ ์ ๋ค ๊ฑด์)
- RANGE : ํ์ฌ ํ์ ๋ฐ์ดํฐ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ค ๋ฐ์ดํฐ ๊ฐ์ ๋ฒ์๋ฅผ ํ์ํ๋ค.
- BETWEEN ~ AND ์ : ์๋์ฐ์ ์์๊ณผ ๋ ์์น๋ฅผ ์ง์ ํ๋ค.
- UNBOUNDED PRECEDING : PARTITION์ ์ฒซ ๋ฒ์งธ ๋ก์ฐ์์ ์๋์ฐ๊ฐ ์์ํ๋ค.
- UNBOUNDED FOLLOWING : PARTITION์ ๋ง์ง๋ง ๋ก์ฐ์์ ์๋์ฐ๊ฐ ์์ํ๋ค.
- CURRENT ROW : ์๋์ฐ์ ์์์ด๋ ๋ ์์น๊ฐ ํ์ฌ ๋ก์ฐ ์ด๋ค.
๐ฉ๐ปโ๐ป์๋์ฐ ํจ์(WINDOW FUNCTION) ๋?
- ํ๊ณผ ํ๊ฐ์ ๊ด๊ณ๋ฅผ ์ฝ๊ฒ ์ ์ํ๊ธฐ ์ํด ๋ง๋ ํจ์
- ์๋์ฐ์ ์ ์ฌ์ฉํ๋ฉด PARTITION BY ์ ์ ๋ช ์๋ ๊ทธ๋ฃน์ ์ข ๋ ์ธ๋ถ์ ์ผ๋ก ๊ทธ๋ฃนํ ํ ์์๋ค.
[ ์์ฑ๋ฒ ์์ ]
SELECT SUM(SAL)
OVER -- ํ์ ํค์๋
([PARTITION BY ์นผ๋ผ] -- ๊ทธ๋ฃน ์ปฌ๋ผ๋ช
[ORDER BY ์ ] -- ์ ๋ ฌ ์ปฌ๋ผ๋ช
[WINDOWING ์ ])FROM ํ
์ด๋ธ ๋ช
;
- WINDOW_FUNCTION
๊ธฐ์กด์ ์ฌ์ฉํ๋ ํจ์๋ ์๊ณ , ๋ถ์ํจ์์ค์์ ์ผ๋ถ(AVG, COUNT, SUM, MAX, MIN)๋ง ์ฌ์ฉ ํ ์ ์๋ค.
- ARGUMENTS (์ธ์)
๊ธฐ์กด์ ์ฌ์ฉํ๋ ํจ์๋ ์๊ณ ,
- PARTITION BY ์
์ ์ฒด ์งํฉ์ ๊ธฐ์ค์ ์ํด ์๊ทธ๋ฃน์ผ๋ก ๋๋ ์ ์๋ค.(์ธ๋ถ์ ์ผ๋ก ๊ทธ๋ฃนํ)
- ORDER BY ์
์ด๋ค ํญ๋ชฉ์ ๋ํด ์์๋ฅผ ์ง์ ํ ์ง์ ๋ํด ๊ธฐ์ ํ๋ค.
- WINDOWING ์
ํจ์์ ๋์์ด ๋๋ ํ ๊ธฐ์ค์ ๋ฒ์๋ฅผ ๊ฐ๋ ฅํ๊ฒ ์ง์ ํ๋ค. ( ์ค๋ผํด ์ง์ )
ROWS โ ํ์ฌ ํ์ ์ ๋ค ๊ฑด์๋ฅผ ์๋ฏธ (๋ฌผ๋ฆฌ์ )
RANGE โ ํ์ฌ ํ์ ๋ฐ์ดํฐ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ค ๋ฐ์ดํฐ ๊ฐ์ ๋ฒ์๋ฅผ ํ์ (๋ ผ๋ฆฌ์ )
ROWS, RANGE ์ค ํ๋๋ฅผ ์ ํํ์ฌ ์ฌ์ฉํ๋ค.
--[BETWEEN TYPE]
ROWS | RANGE BETWEEN
UNBOUNDED PRECEDING |
CURRENT ROW | VALUE_EXPR PRECEDING/FOLLOWING
AND
UNBOUNDED FOLLOWING |
CURRENT ROW | VALUE_EXPR PRECEDING/FOLLOWING
--[NOT BETWEEN]
ROWS | RANGE
UNBOUNDED PRECEDING |
CURRENT ROW | VALUE_EXPR PRECEDING
--[DEFAULT]
RANGE BETWEEN UNBOUNDED PRECEDING
AND
CURRENT ROW
-- UNBOUNDED : ํ๊ณ๋ฅผ ๋์ง ์๊ณ , ํด๋น ํํฐ์
์ ๋๊น์ง๋ฅผ ์๋ฏธ
-- PRECEDING : ํ์ฌํ์์ ์ด์ ํ์ ๋ํ๋ธ๋ค.
-- FOLLOWING : ํ์ฌํ์์ ๋ค์ ํ์ ๋ํ๋ธ๋ค. (BETWEEN ~ AND ~ ํ์์ผ๋ก ์์ฑํจ)
[RANGE, ROWS์์ ์ฌ์ฉํ๋ UNBOUNDED PRECEDING, CURRENT ROW, UNBOUNDED FOLLOWING ]
1. UNBOUNDED PRECEDING / UNBOUNDED FOLLOWING
- ์ฒ์ํ๋ถํฐ ๋ง์ง๋งํ ๊ฒฐ๊ณผ๊น์ง ๊ณ์ฐํ ํฉ๊ณ๋ฅผ ํ์ํด์ค๋๋ค
2. UNBOUNDED PRECEDING / CURRENT ROW
- ์ฒ์ํ๋ถํฐ ํ์ฌํ ๊ฒฐ๊ณผ๊น์ง ๊ณ์ฐํ ํฉ๊ณ๋ฅผ ํ์ํด์ค๋๋ค
3. CURRENT ROW / UNBOUNDED FOLLOWING
- ํ์ฌํ๋ถํฐ ๋ง์ง๋งํ ๊ฒฐ๊ณผ๊น์ง ๊ณ์ฐํ ํฉ๊ณ๋ฅผ ํ์ํด์ค๋๋ค
4. 1 PRECEDING / 1 FOLLOWING
- ํ์ฌํ์ ์ด์ ํ+๋ณธ์ธ+๋ค์ํ ํฉ๊ณ๋ฅผ ํ์ํด์ค๋๋ค
๐ก์์๋๊ธฐ
๊ทธ๋ฃน ๋ด ํ ์์ ํจ์
FIRST_VALUE - ๊ฐ์ฅ ๋จผ์ ๋์จ ๊ฐ, MIN ํจ์์ ๊ฐ๋ค
LAST_VALUE - ๊ฐ์ฅ ๋์ค์ ๋์จ ๊ฐ, MAX ํจ์์ ๊ฐ๋ค
LAG : ์ด์ ๊ฐ
- LAG(SAL, 2, 0)
์ฒซ๋ฒ์งธ : ๋์ ์ปฌ๋ผ๋ช
๋๋ฒ์งธ : ๋ช ๋ฒ์งธ ์ด์ ํ์ ๊ฐ์ ธ์ฌ ๊ฑด์ง ๊ฒฐ์ (DEFAULT๋ 1)
์ธ๋ฒ์งธ : NULL์ ๊ฒฝ์ฐ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ฐ๊ฟ์ค๋ค(NVL, ISNULL๊ณผ ๊ฐ์)
LEAD : ๋ค์ ๊ฐ
- LEAD(SAL, 2, 0)
์ฒซ๋ฒ์งธ : ๋์ ์ปฌ๋ผ๋ช
๋๋ฒ์งธ : ๋ช ๋ฒ์งธ ๋ค์ ํ์ ๊ฐ์ ธ์ฌ ๊ฑด์ง ๊ฒฐ์ (DEFAULT๋ 1)
์ธ๋ฒ์งธ : NULL์ ๊ฒฝ์ฐ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ฐ๊ฟ์ค๋ค(NVL, ISNULL๊ณผ ๊ฐ์)
RATIO_TO_REPORT - ํํฐ์ ๋ด ์ ์ฒด SUM()๊ฐ์ ๋ํ ํ๋ณ ์นผ๋ผ ๊ฐ์ ๋ฐฑ๋ถ์จ์ ์์์ ์ผ๋ก ๊ตฌํ๋ค.
PERCENT_RANK - ๋จผ์ ๋์ค๋๊ฒ์ 0, ๊ฐ์ฅ ๋์ค์ ๋์ค๋ ๊ฒ์ 1๋ก ํ์ฌ ๊ฐ์ด ์๋ ํ์ ์์๋ณ ๋ฐฑ๋ถ์จ์ ๊ตฌํ๋ค.
CUME_DIST - ํํฐ์ ๋ณ ์๋์ฐ์ ์ ์ฒด๊ฑด์์์ ํ์ฌ ํ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฑด์์ ๋ํ ๋์ ๋ฐฑ๋ถ์จ์ ๊ตฌํ๋ค.
NTILE - ํํฐ์ ๋ณ ์ ์ฒด ๊ฑด์๋ฅผ ARGUMENT ๊ฐ์ผ๋ก N๋ฑ๋ถํ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ๋ค.(์: ์๋ฅ๋ฑ๊ธ)
24. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
25. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค :
26. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :
27. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค :
๋กค(Role)
- ์ฌ์ฉ์์๊ฒ ํ๊ฐํ ์ ์๋ ๊ถํ๋ค์ ์งํฉ
- ๋กค์ ์ด์ฉํ๋ฉด ๊ถํ ๋ถ์ฌ์ ํ์๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ค.
- ๋กค์ CREATE ROLE ๊ถํ์ ๊ฐ์ง USER ์ ์ํด์ ์์ฑ๋๋ค.
- ํ ์ฌ์ฉ์๊ฐ ์ฌ๋ฌ๊ฐ์ ROLE์ ACCESS ํ ์ ์๊ณ , ์ฌ๋ฌ ์ฌ์ฉ์์๊ฒ ๊ฐ์ ROLE ์ ๋ถ์ฌํ ์ ์๋ค.
- ์์คํ ๊ถํ์ ๋ถ์ฌ & ์ทจ์ํ ๋์ ๋์ผํ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ถ์ฌํ๊ณ ์ทจ์ํ๋ค.
- ์ฌ์ฉ์๋ ROLE์ ROLE์ ๋ถ์ฌํ ์ ์๋ค.
- Oracle DB๋ฅผ ์ค์นํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก CONNECT, RESOURCE, DBA ROLE์ด ์ ๊ณต๋๋ค.
-- 1. ROLE ์์ฑํ๊ธฐ
SQL> CREATE ROLE manager;
-- 2. ROLE์ ๊ถํ ๋ถ์ฌํ๊ธฐ
SQL> GRANT CREATE SESSION, CREATE TABLE TO manager;
-- 3. ๊ถํ์ด ๋ถ์ฌ๋ ROLE์ USER ๋ ROLE ์ ๋ถ์ฌํ๊ธฐ
SQL> GRANT manager TO scott, test; // ์ฌ๊ธฐ์๋ scott, test ๋ผ๋ ์ ์ ์ ๋ถ์ฌํจ.
28. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค : ๋น์ ์ฐจ์ ๋ฐ์ดํฐ ์กฐ์์ด(DML)๋ ์ฌ์ฉ์๊ฐ ๋ฌด์จ ๋ฐ์ดํฐ๋ฅผ ์ํ๋์ง๋ง ๋ช ์ธํ๋ค.
๋ฐ์ดํฐ ์กฐ์์ด
- ์ ์ฐจ์ ๋ฐ์ดํฐ ์กฐ์์ด(procedural DML) : ์ฌ์ฉ์๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ํ๊ณ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ป์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋์ง ๋ช
์ธํจ
- ๋น์ ์ฐจ์ ๋ฐ์ดํฐ ์กฐ์์ด(nonprocedural DML) : ์ฌ์ฉ์๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ํ๋์ง๋ง ๋ช
์ธํจ- ํธ์คํธ ํ๋ก๊ทธ๋จ ์์ ์ฝ์
๋์ด ์ฌ์ฉ๋๋ DML๋ช
๋ น์ด๋ค์ ๋ฐ์ดํฐ ๋ถ์์ด(Data Sub Language)๋ผ๊ณ ํ๋ค.
๋ช ๋ น์ด์ ์ข ๋ฅ | ๋ช ๋ น์ด | ์ค๋ช |
๋ฐ์ดํฐ ์กฐ์์ด (DML : Data Manipulation Language) |
SELECT | ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ๊ฒ์ํ๊ธฐ ์ํ ๋ช ๋ น์ด๋ฅผ ๋งํ๋ ๊ฒ์ผ๋ก RETRIEVE ๋ผ๊ณ ๋ ํ๋ค. |
INSERT UPDATE DELETE |
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๋ค์ด ์๋ ๋ฐ์ดํฐ์ ๋ณํ์ ๊ฐํ๋ ์ข ๋ฅ์ ๋ช ๋ น์ด๋ค์ ๋งํ๋ค. ์๋ฅผ ๋ค์ด ํ ์ด๋ธ์ ์๋ก์ด ํ์ ์ง์ด๋ฃ๊ฑฐ๋, ์ํ์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์์ ํ๋ ๊ฒ๋ค์ ๋ช ๋ น์ด๋ค์ DML์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. | |
๋ฐ์ดํฐ ์ ์์ด (DDL : Data Definition Language) |
CREATE ALTER DROP RENAME |
ํ ์ด๋ธ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ๋ช ๋ น์ด๋ค๋ก ๊ตฌ์กฐ๋ฅผ ์์ฑ, ๋ณ๊ฒฝ, ์ญ์ ๋ฐ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๊ด๋ จ๋ ๋ช ๋ น์ด๋ค์ DDL์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. |
๋ฐ์ดํฐ ์ ์ด์ด (DCL : Data Control |
GRANT REVOKE |
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ณ ๊ฐ์ฒด๋ค์ ์ฌ์ฉํ๋๋ก ๊ถํ์ ์ฃผ๊ณ ํ์ํ๋ ๋ช ๋ น์ด๋ฅผ DCL์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. |
ํธ๋์ญ์
์ ์ด์ด (TCL : Transaction Control Language |
COMMIT ROLLBACK |
๋ ผ๋ฆฌ์ ์ธ ์์ ์ ๋จ์๋ฅผ ๋ฌถ์ด์ DML์ ์ํด ์กฐ์๋ ๊ฒฐ๊ณผ๋ฅผ ์์ ๋จ์(ํธ๋์ญ์ ) ๋ณ๋ก ์ ์ดํ๋ ๋ช ๋ น์ด๋ฅผ ๋งํ๋ค. |
29. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
30. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค :
31. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :
32. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค :
33. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค :
34. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :
35. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :
SQL> SELECT B. *FROM EMP_A A, EMP_B B WHERE A.ENO = B.ENO AND B.SALARY >= ANY A.SALARY;
ENO MNO SALARY
------------------------
B1 C1 2000
B3 C3 10000
B5 C5 6000
36. ์ ๋ต : 1, 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
37. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
38. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค :
39. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :
40. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
41. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : CUBE ํจ์๋ ๊ณ์ฐ ๊ฐ๋ฅํ ๋ชจ๋ ์๊ณ์ ํฉ๊ณ๋ฅผ ๋ฐํํ๋ค.
SQL> SELECT DNAME, JOB, COUNT(*) "TOTAL EMP", SUM(SAL) "TOTAL SAL" FROM SQLD_41_1 A, SQLD_41_2 B WHERE A.DEPTNO = B.DEPTNO GROUP BY CUBE(DNAME, JOB);
DNAME JOB TOTAL EMP TOTAL SAL
---------- ---------- ---------- ----------
14 29026
clerk 4 4150
analyst 2 6000
manager 3 8276
salesman 4 5600
president 1 5000
sales 6 9400
sales clerk 1 950
sales manager 1 2850
sales salesman 4 5600
research 5 10876
research clerk 2 1900
research analyst 2 6000
research manager 1 2976
accounting 3 8750
accounting clerk 1 1300
accounting manager 1 2450
accounting president 1 5000
18 rows selected.
42. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค :
43. ์ ๋ต : 1
๐๋ฌธ์ ํ์ธ
ํด์ค :
- - - - - - - - ์ฃผ๊ด์ - - - - - - - -
44. ์ ๋ต : 2, 9
๐๋ฌธ์ ํ์ธ
ํด์ค :
45. ์ ๋ต : 1, 3
๐๋ฌธ์ ํ์ธ
ํด์ค :
NTILE ํจ์๋? ํ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃน๋ณ๋ก ๋๋์ด ์ฐจ๋ก๋๋ก ํ ๋ฒํธ๋ฅผ ๋ถ์ฌํ๋ ๋ถ์ ํจ์์ ๋๋ค.
[๊ตฌ๋ฌธ ํ์]
SELECT NTILE([๊ทธ๋ฃน์ผ๋ก ๋๋ ์ ์]) OVER (PARTITION BY [์ปฌ๋ผ1] ORDER BY [์ปฌ๋ผ2])
[ํน์ง]
1.์ ์ฒด ํ ๋ฐ์ดํฐ ์๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋๋์์ ๋ ๋๋จธ์ง๊ฐ ์กด์ฌํ๋ฉด ์ฒซ ๋ฒ์งธ ๊ทธ๋ฃน๋ถํฐ ๋๋จธ์ง๊ฐ ์๋จ์ ๋๊น์ง 1์ฉ ๋ถ์ฌํฉ๋๋ค.
(์ : ์ ์ฒดํ์ด 12๊ฐ๊ณ ๊ทธ๋ฃน์ด 5์ผ ๋ 12๋ฅผ 5๋ก ๋๋ ๋๋จธ์ง๊ฐ 2์ด๋ฏ๋ก 1~5๋ฒ ๊ทธ๋ฃน์ 2ํ์ ๋ถ์ฌํ๊ณ 1,2๋ฒ ๊ทธ๋ฃน์ 1ํ์ฉ ์ถ๊ฐ ๋ถ์ฌํจ.)
2.PARTITION BY๋ฅผ ์๋ตํ๋ฉด ์ ์ฒด ํ์ ๋ํด์ ๊ทธ๋ฃนํ๊ฐ ์ํ๋ฉ๋๋ค. ๋ฐ๋๋ก PARTITION BY๋ฅผ ์ง์ ํ๋ฉด ํด๋น ํํฐ์ ๋ด์์ ๊ทธ๋ฃนํ๋ฅผ ์งํํ์ฌ ํ ๋ฒํธ๋ฅผ ๋ถ์ฌํฉ๋๋ค.
46. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค :
47. ์ ๋ต : 2, '0'
๐๋ฌธ์ ํ์ธ
ํด์ค :
48. ์ ๋ต : Nested Loop Join
๐๋ฌธ์ ํ์ธ
ํด์ค :
49. ์ ๋ต : 3, 2
๐๋ฌธ์ ํ์ธ
ํด์ค :
50. ์ ๋ต : GROUPING SETS(COL1, (COL1, COL2))
๐๋ฌธ์ ํ์ธ
ํด์ค :
'IT์๊ฒฉ์ฆ ๊ณต๋ถ > SQLD ๊ธฐ์ถ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] 45ํ ๊ธฐ์ถ๋ฌธ์ 1๊ณผ๋ชฉ ( 10๋ฌธ์ / ์ ๋ต, ํด์ค ) (11) | 2022.12.10 |
---|---|
[SQLD] 37ํ ๊ธฐ์ถ๋ฌธ์ ( 50๋ฌธ์ / ์ ๋ต, ํด์คํฌํจ ) (47) | 2022.09.05 |
[SQLD] 33ํ ๊ธฐ์ถ 23๋ฒ ๋ฌธ์ - ์๋์ฐ ํจ์ (4) | 2022.05.27 |
[SQLD] 38ํ ๊ธฐ์ถ ๋ฌธ์ ( 50๋ฌธ์ / ์ ๋ต ) + ํด์ค์ถ๊ฐ (24) | 2022.05.25 |
[SQLD] 39ํ ๊ธฐ์ถ ๋ฌธ์ ( 50๋ฌธ์ / ์ ๋ต,ํด์คํฌํจ ) (62) | 2022.05.19 |