์๋ ํ์ธ์ yunamom ์ ๋๋ค :D
2024๋ 11์ 17์ผ ์ผ์์ผ์ ์น๋ค์ง ์ 55ํ SQLD ์ํ 1๊ณผ๋ชฉ, 2๊ณผ๋ชฉ ์ ๋ต์ ํฌ์คํ ํ๊ฒ ์ต๋๋ค. ๐ฉ๐ป๐ป
*๋ฌธ์ ์์๋ ๋ค๋ฅผ ์ ์์ผ๋ฉฐ ๋ต ์์ฒด๋ฅผ ์ ์ด๋๊ฑฐ๋ ๋ฌธ์ ๋ง ์ ์ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
SQLD 55ํ 1๊ณผ๋ชฉ
โ ๋ฌธ์ 1. ๋ด๋ถ ์คํค๋ง์ ๋ํ ์ค๋ช
์ผ๋ก ์ ์ ํ ๊ฒ์? (๋ชจ๋ ๊ณ ๋ฅด๊ธฐ )
- (๋) (๋ฌผ๋ฆฌ์ ...)
- (๋ผ) ์ง๋ฌธ์ด ์๊ฐ์ด ์๋๋๋ฐ..์ฌ๊ธฐ๋ ๋ด๋ถ ์คํค๋ง ๋ด์ฉ ๊ฐ๊ธด ํ๋ค์.
-> ๋ผ๋ ๊ฐ๋
์ชฝ์ผ๋ก ๋๊ธ์ ์๊ฒฌ ๋ฐ์!
โ
<์ค๋ช
> ๊ฐ์ด๋์ฑ
P.24
์ธ๋ถ - ๊ฐ๋
- ๋ด๋ถ
๋ด๋ถ ์คํค๋ง (๋ฌผ๋ฆฌ์ ์ ์ฅ๊ตฌ์กฐ)
-> ๋ด๋ถ ๋จ๊ณ์ ๋ด๋ถ ์คํค๋ง๋ก ๊ตฌ์ฑ๋จ. DB๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ์ฅ๋ ํ์
-> ๋ฌผ๋ฆฌ์ ์ฅ์น์์ ๋ฐ์ดํฐ๊ฐ ์ค์ ์ ์ผ๋ก ์ ์ฅ๋๋ ๋ฐฉ๋ฒ์ ํํํ๋ ์คํค๋ง
โ ๋ฌธ์ 2. ์ํฐํฐ๋ช
์ ๋ํ ์ค๋ช
์ผ๋ก ์ ์ ํ์ง ์์ ๊ฒ์?
- ์ฝ์ด๋ก ์ฌ์ฉํ๋ค.
โ
<์ค๋ช
> ๊ฐ์ด๋์ฑ
P.45
์ํฐํฐ๋ฅผ ๋ช
๋ช
ํ๋ ์ผ๋ฐ์ ์ธ ๊ธฐ์ค์, ์ฉ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ํ๊ธฐ๋ฒ์ด ๋ค ๊ทธ๋ ๋ฏ์ด ์ฒซ ๋ฒ์งธ๋ ๊ฐ๋ฅํ๋ฉด ํ์
์
๋ฌด์์ ์ฌ์ฉํ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๋ค. ๋ ๋ฒ์งธ๋ ๊ฐ๋ฅํ๋ฉด ์ฝ์ด๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค. ์ธ ๋ฒ์งธ๋ ๋จ์ ๋ช
์ฌ๋ฅผ ์ฌ์ฉํ๋ค.
๋ค ๋ฒ์งธ๋ ๋ชจ๋ ์ํฐํฐ์์ ์ ์ผํ๊ฒ ์ด๋ฆ์ด ๋ถ์ฌ๋์ด์ผ ํ๋ค. ๋ค์ฏ ๋ฒ์งธ๋ ์ํฐํฐ ์์ฑ ์๋ฏธ๋๋ก ์ด๋ฆ์ ๋ถ์ฌํ๋ค.
โ ๋ฌธ์ 3. ๊ธฐ๋ณธ ์ํฐํฐ์ ๋ํ ์ค๋ช
์ผ๋ก ์ ์ ํ์ง ์์ ๊ฒ์?
- ๋ค๋ฅธ ์ํฐํฐ๋ก๋ถํฐ ์ฃผ์๋ณ์๋ฅผ ์์๋ฐ๋๋ค.
<์ค๋ช
> ๊ฐ์ด๋์ฑ
P.44
๊ธฐ๋ณธ์ํฐํฐ๋ ๊ทธ ์
๋ฌด์ ์๋ ์กด์ฌํ๋ ์ ๋ณด๋ก์ ๋ค๋ฅธ ์ํฐํฐ์ ๊ด๊ณ์ ์ํด ์์ฑ๋์ง ์๊ณ ๋
๋ฆฝ์ ์ผ๋ก ์์ฑ์ด ๊ฐ๋ฅํ๊ณ
์์ ์ ํ ์ํฐํฐ์ ๋ถ๋ชจ ์ญํ ์ ํ๊ฒ ๋๋ค. ๋ค๋ฅธ ์ํฐํฐ๋ก๋ถํฐ ์ฃผ์๋ณ์๋ฅผ ์์๋ฐ์ง ์๊ณ ์์ ์ ๊ณ ์ ํ ์ฃผ์๋ณ์๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
โ ๋ฌธ์ 4. ์๋์ ์ ๊ทํ๋ก ์ ์ ํ ๊ฒ์?
- 2์ฐจ ์ ๊ทํ
โ
<๋ณด๊ธฐ>
์ฃผ์๋ณ์์ ์ปฌ๋ผ๋๊ฐ๋ฅผ ํ๋์ฉ ๋๋์ด ์ ๊ทํ๋ ํํ๋ก ํ
์ด๋ธ ๋ถ๋ฆฌ
-> ์ผ๋ฐ์์ฑ์ด ์ฃผ์๋ณ์์ ๋ถ๋ถ์ ์ผ๋ก ์ข
์๋๋ ํ์์ ํด๊ฒฐ
โ ๋ฌธ์ 5. 1์ฐจ ์ ๊ทํ์ ๋ํ ์ค๋ช
์ผ๋ก ์ ์ ํ์ง ์์ ๊ฒ์?
- ์ผ๋ฐ์์ฑ์ ์ฃผ์๋ณ์ ์ ์ฒด์ ์ข
์์ ์ด๋ค.
โ ๋ฌธ์ 6. ์๋ณ์ ๊ด๊ณ์ ๋ํ ์ค๋ช
์ผ๋ก ์ ์ ํ์ง ์์ ๊ฒ์?
- ๋ถ๋ชจ ์ํฐํฐ์ ์์ ์ํฐํฐ์ ๊ด๊ณ๋ ํญ์ 1:1์ ๊ด๊ณ์ด๋ค
<์ค๋ช
> P.68
๋ถ๋ชจ๋ก๋ถํฐ ๋ฐ์ ์์ฑ์ ์์์ํฐํฐ๊ฐ ๋ชจ๋ ์ฌ์ฉํ๊ณ ๊ทธ๊ฒ๋ง์ผ๋ก ์ฃผ์๋ณ์๋ก ์ฌ์ฉํ๋ค๋ฉด, ๋ถ๋ชจ์ํฐํฐ์ ์์์ํฐํฐ์ ๊ด๊ณ๋ 1:1์ ๊ด๊ณ๊ฐ ๋ ๊ฒ์ด๋ค.
๋ง์ฝ ๋ถ๋ชจ๋ก๋ถํฐ ๋ฐ์ ์์ฑ์ ํฌํจํ์ฌ ๋ค๋ฅธ ๋ถ๋ชจ์ํฐํฐ์์ ๋น์ ์์ฑ์ ํฌํจํ๊ฑฐ๋ ์ค์ค๋ก ๊ฐ์ง๊ณ ์๋ ์์ฑ๊ณผ ํจ๊ป ์ฃผ์๋ณ์๋ก ๊ตฌ์ฑ๋๋ ๊ฒฝ์ฐ๋ 1:M ๊ด๊ณ๊ฐ ๋๋ค.
โโ ๋ฌธ์ 7. ๋ชจ๋ ์ํ๋๊ฑฐ๋ ๋ชจ๋ ์ํ๋์ง ์์์ผ ํ๋ค๋ ํธ๋์ญ์
์ ํน์ง์?
- ์์์ฑ
โ ๋ฌธ์ 8. ๊ณ์ธตํ ๋ชจ๋ธ์ ๋ํ ์ค๋ช
์ผ๋ก ์ ์ ํ์ง ์์ ๊ฒ์?
- ๊ฐ์ฒด๊ฐ์ ๊ด๊ณ๋ 1:1 ์ด๋ค.
<์ฐธ๊ณ ์๋ฃ>
https://subsay.tistory.com/25
โ ๋ฌธ์ 9. ์๋์ ๋น์นธ์ ์๋ง์ ๊ฒ์?
<๊ทธ๋ฆผ> ๊ฐ์ด๋ P.47
- ์ํฐํฐ - ์ธ์คํด์ค - ์์ฑ - ์์ฑ๊ฐ
โ ๋ฌธ์ 10. ์๋์ ์ค๋ช
์ ์ ์ ํ ๊ฒ์? (๊ด๊ณ์ฐจ์ ์ค๋ช
)
- ๊ด๊ณ ์ฐจ์
<๋ณด๊ธฐ>
-> ๋ ๊ฐ์ ์ํฐํฐ๊ฐ ๊ด๊ณ์์ ์ฐธ์ฌ์์ ์๋ฅผ ํํํ๋ ๊ฒ
-> ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ด๊ณ์ฐจ์ ํํ๋ฐฉ๋ฒ์ 1:M, 1:1, M:N์ด๋ค.
โ
SQLD 55ํ 2๊ณผ๋ชฉโ
โ ๋ฌธ์ 11. ์๋ธ์ฟผ๋ฆฌ์ ๋ํ ์ค๋ช
์ผ๋ก ์ ์ ํ์ง ์์ ๊ฒ์?
- in ์ ์ ๋จ์ผํ ์๋ธ์ฟผ๋ฆฌ๋ง ์ฌ์ฉํ ์ ์๋ค
โ ๋ฌธ์ 12. DML ๋ก ์ ์ ํ ๊ฒ์?
- insert, update, delete
โ ๋ฌธ์ 13. ์๋์ SQL ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์? (dense_rank ๋ฌธ์ )
<SQL>
select ..
from ( select dense_rank() over(partition by ... desc .. )
โ
- dense_rank ๋ฌธ์ ๋ก ๋์ผ ๋ฑ์ ํ์๋ ์์ฐจ์ ๋ฑ์๋ฅผ ๋ํ๋( 1,2,2,3,4 ... )
- 1,2,2,1 ๊ฐ์ ํํ ๋ต
โ ๋ฌธ์ 14. ์๋์ SQL ์ ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์? ( Rollup + ์ผ๋ฐ์ปฌ๋ผ ๋ฌธ์ )
<SQL>
INSERT INTO TAB1 VALUES('A',100);
INSERT INTO TAB1 VALUES('B',200);
INSERT INTO TAB1 VALUES('C',300);
INSERT INTO TAB1 VALUES('C',400);
โ
select count(*)
from (
select col1,sum(col2)
from TAB1
group by rollup(col1), col1
)
where 1=1;
โ
- group by rollup(col1),col1 => group by col1,col1 union all group by (),col1
- group by col1 union all group by col1 ๊ณผ ๋์ผํจ
- a,b,c ๋ก ๊ตฌ๋ถ๋๊ณ ๊ฐ๊ฐ 3๊ฑด์ฉ ๋์ด 6๊ฑด
โ ๋ฌธ์ 15. ์๋์ SQL ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ณณ์ผ๋ก ์ ์ ํ ๊ฒ์?
<SQL>
CREATE TABLE 1234_... (1)
- (1) ํ
์ด๋ธ๋ช
์ ์ซ์๋ก ์์ํ ์ ์๋ค.
โ ๋ฌธ์ 16. ์๋์ SQL ์ค ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅธ ๊ฒ์? ( ROLLUP ๊ณผ GROUPING SETS, GROUP BY )
- rollup(a,b) ... --> ์ ์ฒด ์งํฉ์ด ๋์ค๊ณ ๋๋จธ์ง๋ ์ ์ฒด์งํฉ์ด ์์
โ ๋ฌธ์ 17. ์๋์ SQL ๊ณผ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ ๊ฒ์? ( ROLLUP ๊ณผ GROUPING SETS ์ ๋ณํ)
<SQL>
SELECT ..
FROM ..
GROUP BY grouping sets( rollup(a), b )
โ
- grouping sets (a,b, () )
โ ๋ฌธ์ 18. ์๋์ SQL ์ ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์? (NULL ์ฐ์ฐ ๋ฌธ์ )
<SQL>
SELECT COL1*2 + COL2*2
FROM ...
<Data>
tab1 tab2
null 10
10 10
10 null
โ
- NULL*2 = NULL, NULL ์ด ๋๊ฐ ์ปฌ๋ผ์์ ๊ฐ๊ฐ ๋์ค๋ ํํ์ ๋ต
- null, 40 , null
โ ๋ฌธ์ 19. ์๋์ SQL ์ ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์? (NULL ๊ณผ ์ง๊ณ์ฐ์ฐ ๋ฌธ์ )
<SQL>
SELECT nvl( sum(c1) + sum(c2),0)
FROM ...
โ
- SUM(C1) ์์ C1 ์ NULL ๊ฐ์ ์ ๊ฑฐ๋๊ณ SUM ์ด ๋จ.
- ๊ฐ ์ปฌ๋ผ์ SUM ์ ํ๊ณ ๋์ ๋ํ ๊ฐ์ด ๋จ
โโ ๋ฌธ์ 20. ์๋์ SQL ์ ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์? (left , full, right ๊ฒฐ๊ณผ๊ฐ)
<SQL>
T1 , T2 ํ
์ด๋ธ์ ๋ํ T1 LEFT T2, T1 FULL T2 , T1 RIGHT T2 ๊ฒฐ๊ณผ
- 3,5,3 ( FULL = LEFT OUTER JOIN UNION RIGHT OUTER JOIN )
โ ๋ฌธ์ 21. ์๋์ SQL ์ ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์? (LEFT - LEFT - INNER JOIN )
<SQL>
SELECT COUNT(*)
FROM T1
LEFT OUTER T2
LEFT OUTER T3
INNER JOIN T4
โ
- 1๊ฑด
-> T1, T2 ์ LEFT OUTER JOIN ๊ฒฐ๊ณผ๋ฅผ T3 ์ LEFT OUTER JOIN (T2 ์ปฌ๋ผ๊ณผ). ์ดํ INNER JOIN (T4)
โ ๋ฌธ์ 22. ์๋์ SQL ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์?
<SQL> SELECT REGEXP_INSTR('12345678', '(123)(4(56)(78))',1, 1, 0, 'i', 2) FROM DUAL;
โ
- 4 (์์ ๊ฒฐ๊ณผ์. ์ค์ ๋ฌธ์ ์ ๋ค๋ฅผ ์ ์์)
โ ๋ฌธ์ 23. ์๋์ SQL ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์?
<SQL>
SELECT REGEXP_SUBSTR('abcd', 'b\*c') AS COL1, REGEXP_SUBSTR('abcd', 'b*c') AS COL2 FROM dual
โ
- NULL, bc (์์ ๊ฒฐ๊ณผ์. ์ค์ ๋ฌธ์ ์ ๋ค๋ฅผ ์ ์์)
โ ๋ฌธ์ 24. ์๋์ ๊ณ์ธตํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ SQL ๋ก ์ ์ ํ ๊ฒ์ ๊ณ ๋ฅด์์ค
<SQL - ๊ณ์ธตํ ์์>
SELECT …
FROM …
START WITH ๊ด๋ฆฌ์๋ฒํธ IS NULL
CONNECT BY PRIOR ( ) = ( )
โ
<๊ฒฐ๊ณผ>
์๋ฐฉํฅ์ผ๋ก ์ฌ์๋ฒํธ-๊ด๋ฆฌ์๋ฒํธ๊ฐ ๋์ค๋ ํํ
โ
- ์๋ฐฉํฅ์ด๋ฏ๋ก PRIOR (์ฌ์๋ฒํธ) = (๊ด๋ฆฌ์๋ฒํธ)
โ ๋ฌธ์ 25. ์๋์ SQL ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์? (ROW_NUMBER + ORDER BY)
<SQL>
SELECT *
FROM (SELECT ROW_NUMBER() OVER(... DESC ) RN .... )
WHERE ..
ORDER BY RN DESC ;
โ
- DESC ๋ก ๋ ๋ฒํธ๋ฅผ ์ญ์์ผ๋ก ์ถ๋ ฅ
- 2, 150
1, 40 ... (์ด๋ฐ ํํ)
โ ๋ฌธ์ 26. ์๋์ ์ค๋ช ์ผ๋ก ์ ์ ํ์ง ์์ ๊ฒ์?
<์ง๋ฌธ> ๋ก๊ทธ์ธ ๊ด๋ จ ์ฟผ๋ฆฌ์ ๋ํ ์ค๋ช
<๋ณด๊ธฐ>
1) 5์ผ๊ฐ ํ๋ฃจ 3ํ ๋ก๊ทธ์ธ์ ํ๊ฒฝ์ฐ ์ฟผ๋ฆฌ๊ฒฐ๊ณผ๋ 15ํ์ด๋ค
2) ORDER BY ALIAS1, ALIAS2 SQL ์ ์ ์ ์๋ํ๋ค.
-> ์ค๋ผํด์์ ALIAS ๋ก ORDER BY ๊ฐ๋ฅ
- ๋ฑ์ ๋ณด๊ธฐ๊ฐ ์๋ ๋ฌธ์ . ๋ต ๋ณด๊ธฐ๊ฐ ์๊ฐ๋์ง ์์ ๋ฏธ์์ฑ
โ ๋ฌธ์ 27. ALIAS ์ ๋ํ ์ค๋ช ์ผ๋ก ์ ์ ํ์ง ์์ ๊ฒ์?
- ์ปฌ๋ผ ์๋ค๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. (์ปฌ๋ผ ์์ ์ฌ์ฉ ๋ถ๊ฐ๋ฅ)
โ ๋ฌธ์ 28. ์๋์ SQL ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์? ( OR ์ ์ ํด์ )
<SQL>
SELECT ..
WHERE ๊ณ ๊ฐ๋ฒํธ = XX OR ๊ณ ๊ฐ๋ฒํธ = YY
AND ..
AND ..
- 5๊ฐ ๋ก์ฐ ( WHERE ๊ณ ๊ฐ๋ฒํธ= XX ์ธ ๊ฑด์ + OR ๋ค ์กฐ๊ฑด๋ค ๋ง์กฑํ๋ ๊ฑด์ )
โ ๋ฌธ์ 29. ์๋์ ๊ฒฐ๊ณผ์ฒ๋ผ 'ํ๊ธธ๋' ์ ์์์ ์์ ๋
ธ๋๋ฅผ ์กฐํํ๋ ์ฟผ๋ฆฌ๋ก ์๋ง์ ๊ฒ์?
(๊ณ์ธตํ ์ฟผ๋ฆฌ๋ฅผ ์
ํ ์กฐ์ธ์ผ๋ก ๋ง๋๋ ํํ )
- SELECT C.EMPNO, C.ENAME, C.MGR
FROM EMP A, EMP B, EMP C
WHERE A.ENAME = 'ํ๊ธธ๋'
AND B.MGR = A.EMPNO
AND C.MGR = B.EMPNO๏ผ
โ
-> ๋ง์ฝ ์์ ๋
ธ๋๋ฅผ ์กฐํํ๋ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ๋ค
- SELECT B.EMPNO, B.ENAME, B.MGR
FROM EMP A, EMP B
WHERE A.ENAME = 'ํ๊ธธ๋’
AND B.MGR = A.EMPNO๏ผ
โ ๋ฌธ์ 30. ์๋์ SQL ์ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅธ ๊ฒ์? ( ON, USING, NATURAL JOIN ์ ๋ํ ๋ฌธ์ )
- SELECT .. FROM A INNER JOIN B ON (DEPT_NO)
-> ON ์ ์ ํน์ ์ปฌ๋ผ๋ช
์ด ์์ผ ํจ (์ค๋ฅ ๊ตฌ๋ฌธ์)
โ
<์ฐธ๊ณ > 1๋ฒ์ ์๋ฌ ๋ฐ์
1) SELECT * FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B ON (DEPARTMENT_ID)
WHERE A.DEPARTMENT_ID = 90;
โ
2) SELECT * FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B ON A.DEPARTMENT_ID = B.DEPARTMENT_ID
WHERE A.DEPARTMENT_ID = 90;
โ
3) SELECT *FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B USING (DEPARTMENT_ID)
WHERE DEPARTMENT_ID = 90;
โ
4) SELECT * FROM HR.EMPLOYEES A NATURAL JOIN HR.DEPARTMENTS B
WHERE DEPARTMENT_ID = 90
โ ๋ฌธ์ 31. ๊ณ์ฝ์ด ์๋ ๊ณ ๊ฐ์ ์ฐพ๋ SQL ๋ก ์ ์ ํ ๊ฒ์? (EXIST ๊ตฌ๋ฌธ ๋ฌธ์ )
- SELECT
FROM ...
WHERE NOT EXIST (SELECT 1 ... )
โ ๋ฌธ์ 32. ์๋์ ๊ฐ์ ERD ์์ ์ค๋ช ์ผ๋ก ์ ์ ํ ๊ฒ์?
<ERD>
๊ณ์ฝ, ๊ณ ๊ฐ , ์์ธ๋ด์ฉ
- SELECT COUNT(*) ... ๊ณ ๊ฐ/์์ธ๋ด์ฉ ์กฐ์ธ์ ์์ธ๋ด์ฉ์ ๊ฑด์์ ๊ฐ๋ค.
โ ๋ฌธ์ 33. ์๋์ SQL ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์? ( UNION ALL + ALIAS ์ ํ ๊ธฐ์ค)
<SQL>
SELECT COL1 AS AAB, COL2 AS BBA
FROM ..
UNIN ALL
SELECT COL1 AS BBA, COL2 AS AAB
FROM ..
โ
- ์ปฌ๋ผ๋ช
AAB,BBA ๋ก ์์๋๋ ROW
โ ๋ฌธ์ 34. 3ํ ์ด์ ์ฃผ๋ฌธํ ๊ณ ๊ฐ์ ์ฐพ๋ SQL ๋ก ์ ์ ํ ๊ฒ์? (์๊ฒฉ๊ฒ์ 40๋ฒ ๋ฌธ์ ์ ๊ฑฐ์ ๋์ผ)
- HAVING COUNT(๊ตฌ๋งค๋ฒํธ) >= 3
โ ๋ฌธ์ 35. ์๋์ SQL ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๋ถ๋ถ์?
<SQL>
CREATE TABLE SQLD_55_34_01
(
COL1 VARCHAR2(50),
COL2 NUMBER,
COL3 VARCHAR2(50),
CONSTRAINT PK_01 PRIMARY KEY (COL1)
);
โ
CREATE TABLE SQLD_55_34_02
(
COL4 VARCHAR2(50),
COL5 NUMBER,
COL1 VARCHAR2(50),
CONSTRAINT PK_02 PRIMARY KEY (COL4),
CONSTRAINT FK_02_01 FOREIGN KEY (COL1) REFERENCES SQLD_55_34_01(COL1)
);
1)INSERT INTO SQLD_55_34_01 VALUES ('A',100,'๊ฐ');
2)INSERT INTO SQLD_55_34_02 VALUES ('02_A',100,NULL);
3)INSERT INTO SQLD_55_34_02 VALUES ('02_B',200,'A');
4)UPDATE SQLD_55_34_02 SET COL1 = 'B' WHERE COL4 = '02_A';
โ
- 4๋ฒ ์๋ฌ
-> ORA-02291: integrity constraint (SQL_QQYONNQTOWOSMXTURQWJCUGZU.FK_02_01) violated - parent key not found ORA-06512: at "SYS.DBMS_SQL", line 1721
โ
โ ๋ฌธ์ 36. ์๋์ SQL ๊ฒฐ๊ณผ๋ก ์ถ๋ ฅ๋๋ ๋ถ๋ถ์ ์๋ง๊ฒ ๊ณ ๋ฅธ ๊ฒ์? (SAVEPOINT ์ ROLLBACK)
<SQL>
(๊ฐ) SQL1...
SAVEPOINT A;
(๋) SQL2...
SAVEPOINT B;
(๋ค) SQL3...
ROLLBACK SAVEPOINT A;
(๋ผ) SQL4...
(๋ง) SQL5...
โ
- ๊ฐ, ๋ผ, ๋ง
โ ๋ฌธ์ 37. ์๋์ SQL ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์? ( ์ค๋ผํด์ null ์ด ํฌํจ๋ ORDER BY ๊ฒฐ๊ณผ)
- order by.. desc ์ null ๊ธฐ๋ณธ ์ต์
์ first ๋ก ๋งจ ์๋ก ํ์๋จ
-> order by : default - asc nulls last / desc nulls first
โ ๋ฌธ์ 38. ROW LIMITING ์ ๋ํ ์ค๋ช ์ผ๋ก ์ ์ ํ์ง ์์ ๊ฒ์?
<๋ณด๊ธฐ>
...
<์ณ์ ์ค๋ช
>
1) OFFSET offset : ๊ฑด๋๋ธ ํ์ ๊ฐ์๋ฅผ ์ง์ ํ๋ค.
2) FETCH : ๋ฐํํ ํ์ ๊ฐ์๋ ๋ฐฑ๋ถ์จ์ ์ง์ ํ๋ค.
3) ONLY : ์ง์ ๋ ํ์ ๊ฐ์๋ ๋ฐฑ๋ถ์จ๋งํผ ํ์ ๋ฐํํ๋ค.
4) WITH TIES : ๋ง์ง๋ง ํ์ ๋ํ ๋์์๋ฅผ ํฌํจํด์ ๋ฐํํ๋ค.
โ
- WITH TIES (์์ ๋ณด๊ธฐ๋ ๋ง๋ ์ค๋ช
๋ง ์๋ ์์ )
-> ์ฒซ๋ฒ์งธ ํ์ ๋ํ ๋์์๋ผ๊ณ ๋ณด๊ธฐ์ ๋์๋ค๊ณ ํจ. ONLY ์๊ฒฌ๋ ๋ค์ ์์
โ ๋ฌธ์ 39. ์ง๊ณ ํจ์์ ๋ํ ์ค๋ช ์ผ๋ก ์ ์ ํ์ง ์์ ๊ฒ์?
- COUNT(expr) : Null ์ ํฌํจํ์ฌ count ๊ฐ ๋จ ( * ๋ฅผ ์ ์ธํ ํํ์์ผ ๊ฒฝ์ฐ null ์ ์ ์ธ๋จ)
โ ๋ฌธ์ 40. ์๋์ ๋ฐ์ดํฐ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ๋ SQL ๋ก ์ ์ ํ ๊ฒ์? (Window Function ๊ตฌํ ๋ฌธ์ )
<๋ฐ์ดํฐ ๊ฒฐ๊ณผ>
๋ฐ์ดํฐ ... ์ ์ฒด ํฉ๊ณ ... ๋ถ์ ํฉ๊ณ
โ
- SELECT .... SUM(...) OVER(), SUM(...) OVER(PARTITION BY DEPT... )
โ ๋ฌธ์ 41. SQL Set operator ์ Union all ๊ณผ ๊ฐ์ ๊ฒ์?
- UNION + INTERSECT
โ ๋ฌธ์ 42. ์๋์ SQL ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์? ( NULL ๋ฐ 0 ์ผ๋ก ๋๋๊ธฐ)
<SQL>
1) SELECT COL1/COL2 FROM TAB WHERE ... ( COL1 = 0 , COL2 = 300)
2) SELECT COL1/COL2 FROM TAB WHERE ... ( COL1 = 300 , COL2 = 0)
3) SELECT COL1/COL2 FROM TAB WHERE ... ( COL1 = 100 , COL2 = NULL)
โ
- 0, ERROR, NULL
-> 0, ERROR( ORA-01476: divisor is equal to zero ) , NULL
โ ๋ฌธ์ 43. ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ์ ์งํ์ฒด ๋ก์ฐ๋ง ์ญ์ ํ๋ ๋ช ๋ น์ด๋?
- DELETE, TRUNCATE
โ ๋ฌธ์ 44. ์๋์ SQL ์ ๊ฒฐ๊ณผ๋ก ์ ์ ํ ๊ฒ์? ( LIKE ์ ๋ํ ๋ฌธ์ )
<ํ
์ด๋ธ>
... ๋ฌผ๋ฆฌํ ..
... ...ํ ..
<SQL>
SELECT ..
FROM ..
WHERE ๊ณผ๋ชฉ LIKE '%ํ'
โ
- 2๊ฐ (ํ์ผ๋ก ๋๋๋ ๋๊ฐ ๊ณผ๋ชฉ ๋์ด)
โ ๋ฌธ์ 45. NULL ์ด ์๋ ๊ฒ์ ์ฐพ๋ SQL ๋ก ์ ์ ํ ๊ฒ์?
- IS NOT NULL
โ ๋ฌธ์ 46. ์๋์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ํ ์ด๋ธ์ ์ง์ฅ์ฐํธ๋ฒํธ ์ ๋ณด๋ฅผ ์ถ๊ฐํ ๋ ค๊ณ ํ ๋ ์ ์ ํ ๋ช ๋ น์ด๋?
- ALTER TABLE xxxx ADD (OFFI_POST_NUMBER VARCHAR2(80) )๏ผ
-> ์ปฌ๋ผ์ ์ถ๊ฐํ๋ ๋ช
๋ น์ด
โ ๋ฌธ์ 47. ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ๊ตฌํํด์ฃผ๋ ํค๋ก ์ ์ ํ ๊ฒ์?
- ์ธ๋ํค
-> ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ (PK), ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ (FK), ๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ (Check)
โ ๋ฌธ์ 48. ๋ฌด๊ฒฐ์ฑ์ ๋ํ ์ค๋ช ์ผ๋ก ์ ์ ํ์ง ์์ ๊ฒ์?
- ๋์๊ด ํ
์ด๋ธ์ (2,'...') ์ฝ์
: ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์๋ฐฐ. ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ ์๋ฐฐ (PK)
-> ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ (PK), ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ (FK), ๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ (Check)
โ ๋ฌธ์ 49. ์๋์ SQL ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅธ ๊ฒ์ผ๋ก ์ ์ ํ ๊ฒ์? (between ์กฐ๊ฑด์ ๋ฌธ์ )
<SQL>
SELECT..
FROM..
WHERE COL1 BETWEEN ๋ ์ง(XXXX) AND ๋ ์ง(YYYY)
โ
- COL1 > ๋ ์ง(XXXX) AND COL1 < ๋ ์ง(YYYY)
โ ๋ฌธ์ 50. ์๋์ SQL ์ ๋ํ ์ค๋ช ์ผ๋ก ์ ์ ํ์ง ์์ ๊ฒ์? ( IN ์ ์ค๋ช )
<SQL>
SELECT ...
FROM ..
WHERE DEPT IN (SELECT DEPT
FROM ..
WHERE EMPNM IN (JOHN, SMITH) )
- JOHN ์ด ๋๋ช
์ผ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค .. ๋ผ๋ ๋น์ทํ??๋๋์.. (IN ์ ์ DISTINCT ๋ก ๊ฐ์ ์ ๋ฆฌํ์ฌ ๋น๊ตํจ)
์ถ์ฒ: ๋ฐ์ดํฐ ์ ๋ฌธ๊ฐ ํฌ๋ผ
'IT์๊ฒฉ์ฆ ๊ณต๋ถ > SQLD ์์๋ณต์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] 2024๋ SQLD 54ํ ๊ธฐ์ถ๋ณต์ (3) | 2024.08.25 |
---|---|
[SQLD] 2024๋ SQLD 53ํ ์์๋ณต์ (2) | 2024.05.28 |
[SQLD] 2024๋ SQLD 52ํ ๊ธฐ์ถ๋ณต์ (4) | 2024.03.10 |
[SQLD] 2023๋ SQLD 51ํ ๊ธฐ์ถ๋ณต์ (1๊ณผ๋ชฉ/2๊ณผ๋ชฉ) (10) | 2023.11.18 |
[SQLD] 2023๋ SQLD 50ํ ๊ธฐ์ถ๋ณต์ (1๊ณผ๋ชฉ/2๊ณผ๋ชฉ) (7) | 2023.09.09 |