0. ๋ฉด์ ์ง๋ฌธ
- SQL์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์. C์ธ์ด์ ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ด๋ค์ฐจ์ด๊ฐ ์๋์?
- ๊ฐ๋ฐ์๊ฐ ์์ฑํ SQL์ด ์ด๋ค ๊ณผ์ ์ ํตํด ์คํ ๋๋์ง ์ค๋ช ํด์ฃผ์ธ์.
- DML์ ๋ฌด์์ธ๊ฐ์? ์ด๋ค ๊ตฌ๋ฌธ์ด ์๋์ง๋ ์ค๋ช ํด์ฃผ์ธ์.
- DDL์ ๋ฌด์์ธ๊ฐ์? ์ด๋ค ๊ตฌ๋ฌธ์ด ์๋์ง๋ ์ค๋ช ํด์ฃผ์ธ์.
- DCL์ ๋ฌด์์ธ๊ฐ์? ์ด๋ค ๊ตฌ๋ฌธ์ด ์๋์ง๋ ์ค๋ช ํด์ฃผ์ธ์.
- ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- CASCADE ์ค์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- VIEW์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- SELECT ์ ์ ์ฒ๋ฆฌ์์์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- SELECT ~ FOR UPDATE ๊ตฌ๋ฌธ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- GROUP BY์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ORDER BY์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- INNER JOIN๊ณผ OUTER JOIN์ ์ฐจ์ด์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- LEFT OUTER JOIN, RIGHT OUTER JOIN์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- CROSS JOIN์ ๋ํด์๋ ์ค๋ช ํด์ฃผ์ธ์.
- ์๋ธ์ฟผ๋ฆฌ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- DROP, TRUNCATE, DELETE์ ๊ฐ๊ฐ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์. ์ด๋ค์ฐจ์ด๊ฐ ์๋์?
- DISTINCT์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์. ์ฌ์ฉํด๋ณธ ๊ฒฝํ๋ ์ค๋ช ํด์ฃผ์ธ์.
- SQL Injection ๊ณต๊ฒฉ์ด ๋ฌด์์ธ์ง ์ด๋ป๊ฒ ๊ณต๊ฒฉ์ ์๋ฐฉํ ์ ์๋์ง ์ค๋ช ํด์ฃผ์ธ์.
- ์๊ณ ์๋ SQL ์ํฐํจํด์ด ์๋ค๋ฉด ์ค๋ช ํด์ฃผ์ธ์.
- ํ์ด์ง๋ค์ด์ ์ ๊ตฌํํ๋ค๊ณ ํ์๋ ์ฟผ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์์ฑํด์ผํ ๊น์?
1. SQL์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์. C์ธ์ด์ ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ด๋ค์ฐจ์ด๊ฐ ์๋์?
์ธ์ด | SQL | ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด |
๋ชฉ์ | ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ | ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํจ |
์คํ ์ฃผ์ฒด | DBMS | ์ปดํ์ผ๋ฌ |
์ฒ๋ฆฌ์ ์ฐจ ์ง์ ์ฌ๋ถ | ๋น์ ์ฐจ์ ์ธ์ด | ์ ์ฐจ์ ์ธ์ด |
- SQL: DBMS์ ์ํด ์คํ๋๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฟผ๋ฆฌ or ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, DBMS๊ฐ ์ด๋ฅผ ํด์ํ๊ณ , ์คํ ๊ณํ์ ์ธ์ฐ๊ณ , ์์ ์ ์ํํ๋ค.
- C์ธ์ด: ์ปดํ์ผ๋ฌ์ ์ํด ์ปดํ์ผ๋๋ฉฐ, ์ปดํ์ผ๋ฌ๋ C์์ค ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ์ฌ ์คํ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ง๋ ๋ค. ์ด ํ๋ก๊ทธ๋จ์ด CPU์ ์ํด ์คํ๋์ด ์์ ์ ์ํํ๋ค.
์ถ๊ฐ
- ์ ์ฐจ์ ๋ฐ์ดํฐ ์กฐ์์ด: ์ฌ์ฉ์๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ํ๊ณ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ป์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋์ง๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช
- ๋น์ ์ฐจ์ ๋ฐ์ดํฐ ์กฐ์์ด: ์ฌ์ฉ์๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ํ๋์ง๋ง ์ค๋ช
- what์ ๋ํ ์ง๋ฌธ O how์ ๋ํ ์ง๋ฌธ X
2. ๊ฐ๋ฐ์๊ฐ ์์ฑํ SQL์ด ์ด๋ค ๊ณผ์ ์ ํตํด ์คํ ๋๋์ง ์ค๋ช ํด์ฃผ์ธ์.
- ํ์ฑ: DBMS๊ฐ SQL๋ฌธ์ ํ์ฑํ์ฌ ๊ตฌ๋ฌธ ๋ถ์ ํ, ์ด๋ฅผ ์คํ ๊ณํ์ผ๋ก ๋ณํํ๋ค.
- ์ต์ ํ: ํ์ฑ์ด ์๋ฃ๋๋ฉด, ์ฟผ๋ฆฌ๋ฅผ ์ต์ ํํ์ฌ ๊ฐ์ฅ ํจ์จ์ ์ธ ์คํ ๊ณํ์ ์ธ์ด๋ค.
- ๊ณ ๋ ค์์
- ์ธ๋ฑ์ค ์ฌ์ฉ ๊ฒฐ์ , ํ ์ด๋ธ ์กฐ์ธ ์์ ๊ฒฐ์ , ๋ ์ฝ๋ ํํฐ๋ง ๊ฒฐ์ ๋ฑ์ ์ต์ ํํ์ฌ ์ฑ๋ฅ์ ํฅ์
- ๊ณ ๋ ค์์
- ์คํ: ์ต์ ํ๋ ์คํ ๊ณํ์ ๋ฐ๋ผ DBMS๋ ์ฟผ๋ฆฌ๋ฅผ ์ค์ ๋ก ์คํํ๋ค.
- ๊ฒฐ๊ณผ ๋ฐํ: ์คํ๋ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํ๋๋ค.
3. ๋ฐ์ดํฐ ์ธ์ด
๊ฐ์
- ์ ์: ์ฌ์ฉ์๋ฅผ ๋์ ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ณ ํ์ฉ, ๊ด๋ฆฌํ๋ ์ธ์ด
- ์ข ๋ฅ: DDL, DML, DCL
DDL์ ๋ฌด์์ธ๊ฐ์? ์ด๋ค ๊ตฌ๋ฌธ์ด ์๋์ง๋ ์ค๋ช ํด์ฃผ์ธ์.
- ์ ์: ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด ์คํค๋ง๋ฅผ ์ ์ํ๊ฑฐ๋ ๊ธฐ์กด ์คํค๋ง์ ์ ์๋ฅผ ์ญ์ , ์์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ์ธ์ด
- ์ข
๋ฅ
- CREATE: ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ฒด์ธ ํ ์ด๋ธ, ์ธ๋ฑ์ค, ๋ทฐ๋ฑ์ ์์ฑ
- ALTER: ๊ธฐ์กด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝ
- DROP: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์ญ์
- TRUNCATE: ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ์ง๋ง, ํ ์ด๋ธ ๊ตฌ์กฐ๋ ์ ์ง
DML์ ๋ฌด์์ธ๊ฐ์? ์ด๋ค ๊ตฌ๋ฌธ์ด ์๋์ง๋ ์ค๋ช ํด์ฃผ์ธ์.
- ์ ์: ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ์ CRUD ์ฒ๋ฆฌ๋ฅผ DBMS์ ์๊ตฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ์ธ์ด
- ์ข
๋ฅ
- SELECT: ๋ฐ์ดํฐ ์กฐํ
- INSERT: ๋ฐ์ดํฐ ์ฝ์
- UPDATE: ๋ฐ์ดํฐ ์์
- DELETE: ๋ฐ์ดํฐ ์ญ์
DCL์ ๋ฌด์์ธ๊ฐ์? ์ด๋ค ๊ตฌ๋ฌธ์ด ์๋์ง๋ ์ค๋ช ํด์ฃผ์ธ์.
- ์ ์: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋ฌด๊ฒฐ์ฑ๊ณผ ์ผ๊ด์ฑ์ ์ ์งํ๋ฉฐ ๋ฌธ์ ์์ด ๊ณต์ ํ ์ ์๋๋ก, ๋ด๋ถ์ ์ผ๋ก ํ์ํ ๊ท์น์ด๋ ๊ธฐ๋ฒ์ ์ ์ํ๋๋ฐ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ์ธ์ด
- ํจ๊ณผ: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ง์ธ (๋ฌด๊ฒฐ์ฑ, ๋ณด์, ํ๋ณต, ๋์์ฑ) ๋ณด์ฅ
- ์ข
๋ฅ
- GRANT: ์ฌ์ฉ์์๊ฒ ํน์ ํ ๊ถํ ๋ถ์ฌ
- REVOKE: ์ฌ์ฉ์์๊ฒ ๋ถ์ฌ๋ ๊ถํ ํ์
TCL์ ๋ฌด์์ธ๊ฐ์? ์ด๋ค ๊ตฌ๋ฌธ์ด ์๋์ง๋ ์ค๋ช ํด์ฃผ์ธ์.
- ์ ์: ํธ๋์ญ์ ์ ์ฒ๋ฆฌ ๋ฐ ์ ์ด๋ฅผ ๋ด๋นํ๋ ๋ฐ์ดํฐ ์ธ์ด๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ๋ฌ ์์ ์ ํ๋์ ๋จ์๋ก ๋ฌถ์ด ์ฒ๋ฆฌํ์ฌ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ณ , ACID(์์์ฑ, ์ผ๊ด์ฑ, ๊ณ ๋ฆฝ์ฑ, ์ง์์ฑ) ์์ฑ์ ๋ง์กฑ์ํฌ ์ ์๊ฒ ํ๋ค.
- ์ข
๋ฅ:
- COMMIT: ํธ๋์ญ์ ์์ ์ํ๋ ๋ชจ๋ ์์ ์ ์๊ตฌ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ -> ํธ๋์ญ์ ํ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋จ
- ROLLBACK: ํธ๋์ญ์ ์ ์ทจ์ํ๊ณ , ํธ๋์ญ์ ์ด ์์๋๊ธฐ ์ ์ํ๋ก ๋๋๋ฆผ
- SAVEPOINT: ํธ๋์ญ์ ๋ด์์ ํน์ ์ง์ ์ ์ ์ฅํ์ฌ, ๋ฌธ์ ๋ฐ์ ์ ๊ทธ ์์ ์ผ๋ก ๋๋๋ฆผ
- SET TRANSACTION: ํธ๋์ญ์ ์ ํน์ฑ์ ์ค์ ex) ํธ๋์ญ์ ์ด ๊ฒฉ๋ฆฌ ์์ค ์ค์
6. ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
์๋ ๊ธ 10๋ฒ ์ฐธ๊ณ
https://koreatstm.tistory.com/156
7. CASCADE ์ค์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ์ ์: ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด์์ ์ฌ์ฉํ๋ ์ต์ ์คํ๋
- ๋ถ๋ชจ ํ ์ด๋ธ์ ํ์ด ์ญ์ or ์ ๋ฐ์ดํธ ์ ํด๋น ํ์ ์ฐธ์กฐํ๋ ์์ ํ ์ด๋ธ์ ํ๋ ์๋์ผ๋ก ์ญ์ or ์ ๋ฐ์ดํธ
- ON DELETE CASCADE: ๋ถ๋ชจ ํ ์ด๋ธ์ ํ์ด ์ญ์ ๋ ๊ฒฝ์ฐ, ์ด๋ฅผ ์ฐธ์กฐํ๋ ์์ ํ ์ด๋ธ์ ํ๋ ํจ๊ป ์ญ์
- ON UPDATE CASCADE: ๋ถ๋ชจ ํ ์ด๋ธ์ ํ์ด ์ ๋ฐ์ดํธ ๋ ๊ฒฝ์ฐ, ์ด๋ฅผ ์ฐธ์กฐํ๋ ์์ ํ ์ด๋ธ์ ์ธ๋ ํค ๊ฐ๋ ํจ๊ป ์ ๋ฐ์ดํธ
8. VIEW์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ํ๋ ์ด์์ ํ ์ด๋ธ์ ์กฐํฉํ์ฌ ํ ์ด๋ธ์ฒ๋ผ ์ฌ์ฉํ๋ ๊ฐ์ ํ ์ด๋ธ
- ํน์ง
- ์ค์ ๋ฐ์ดํฐ ์ ์ฅํ์ง ์์
- ๋ทฐ๋ฅผ ์ฟผ๋ฆฌ ์์ ๊ทธ์ ๋ง๋ SELECT ๋ฌธ์ด ์คํ๋์ด ๊ฒฐ๊ณผ ๋ฐํ
- ๋ณต์กํ ์ฟผ๋ฆฌ ๋จ์ํ
- ํน์ ๋ฐ์ดํฐ๋ง ๋ ธ์ถํ์ฌ ๋ณด์์ฑ ๊ฐํ
- ์ข
๋ฅ
- simple view, complex view, inline view
9. SELECT ์ ์ ์ฒ๋ฆฌ์์์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- FROM: ์กฐํํ ํ ์ด๋ธ ๊ฒฐ์
- JOIN: ํ์ํ ๊ฒฝ์ฐ ๋ค๋ฅธ ํ ์ด๋ธ ์กฐ์ธ
- WHERE: ์กฐ๊ฑด์ ๋ง์ถฐ ๋ฐ์ดํฐ ํํฐ๋ง
- GROUP BY: ๋ฐ์ดํฐ ๊ทธ๋ฃนํ
- HAVING: ๊ทธ๋ฃนํ๋ ๋ฐ์ดํฐ ํํฐ๋ง
- SELECT: ํ์ํ ์นผ๋ผ ์ ํ
- DISTINCT: ์ค๋ณต ๊ฒฐ๊ณผ ์ ๊ฑฐ
- ORDER BY: ๊ฒฐ๊ณผ ์ ๋ ฌ
- LIMIT / OFFSET: ๊ฒฐ๊ณผ์ ๋ณด์ฌ์ค ํ์ ์ ์ ํ / ๋ฐํํ ์์ ์์น ์ง์
10. SELECT ~ FOR UPDATE ๊ตฌ๋ฌธ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ํ ์์ค์ ์ ๊ธ์ ๊ฑธ๊ธฐ ์ํด ์ฌ์ฉ
- ํน์ ํ์ ์ ํํ๊ณ , ๊ทธ ํ์ด ํด๋น ํธ๋์ ์ ์ ์ํด์๋ง ์์ ๋๋๋ก lock
- ํธ๋์ ์ ์๋ฃ๊น์ง ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ ์ ์ง๋ฅผ ์ํจ
11. GROUP BY์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ๊ฐ๋ : ํ ์ด๋ธ์์ ํน์ ์์ฑ์ ๊ฐ์ด ๊ฐ์ ํํ์ ๋ชจ์ ๊ทธ๋ฃน์ ๋ง๋ค๊ณ , ๊ทธ๋ฃน๋ณ๋ก ๊ฒ์์ ํ๊ธฐ ์ํด GROUP BY ํค์๋๋ฅผ ์ฌ์ฉ
- ์ถ๊ฐ: ๊ทธ๋ฃน์ ๋ํ ์กฐ๊ฑด์ ์ถ๊ฐํ๋ ค๋ฉด HAVING ํค์๋์ ํจ๊ป ์ฌ์ฉ
- ์ฌ์ฉ๋ฒ
SELECT ์์ฑ ๋ฆฌ์คํธ
FROM ํ
์ด๋ธ
[GROUP BY ์์ฑ ๋ฆฌ์คํธ [HAVING ์กฐ๊ฑด]]
12. ORDER BY์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ๊ฐ๋ : ๊ฒฐ๊ณผ ํ ์ด๋ธ์ ๋ด์ฉ์ ์ฌ์ฉ์๊ฐ ์ํ๋ ์์๋ก ์ถ๋ ฅํ๊ธฐ ์ํด ์ฌ์ฉ
- ์ฌ์ฉ๋ฒ
SELECT ์์ฑ ๋ฆฌ์คํธ
FROM ํ
์ด๋ธ
[WHERE ์กฐ๊ฑด]
[ORDER BY ์์ฑ ๋ฆฌ์คํธ[ASC : DESC]]
13. INNER JOIN๊ณผ OUTER JOIN์ ์ฐจ์ด์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- INNER JOIN: ๋ ํ ์ด๋ธ๊ฐ ์กฐ์ธ์์ ์กฐ๊ฑด์ ๋ง๋ ํ๋ง ๋ฐํ
SELECT ์์ฑ ๋ฆฌ์คํธ
FROM ํ
์ด๋ธ1 INNER JOIN ํ
์ด๋ธ2 ON ์กฐ์ธ์กฐ๊ฑด
[WHERE ๊ฒ์์กฐ๊ฑด]
- OUTER JOIN: ์กฐ์ธ ์กฐ๊ฑด์ ๋ง์ง ์๋ ํ๋ ๋ฐํ
- ์ข
๋ฅ
- LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN
- ์ข
๋ฅ
SELECT ์์ฑ ๋ฆฌ์คํธ
FROM ํ
์ด๋ธ1 LEFT | RIGHT | FULL OUTER JOIN ํ
์ด๋ธ2 ON ์กฐ์ธ์กฐ๊ฑด
[WHERE ๊ฒ์์กฐ๊ฑด]
14. LEFT OUTER JOIN, RIGHT OUTER JOIN์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- LEFT OUTER JOIN: ์ผ์ชฝ ํ ์ด๋ธ ๋ชจ๋ ํ๊ณผ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์์ ์ผ์นํ๋ ํ ๋ฐํ, ์ผ์นํ์ง ์์ผ๋ฉด ์ค๋ฅธ์ชฝ ํ ์ด๋ธ ๊ฐ=NULL
- RIGHT OUTER JOIN: ์ค๋ฅธ์ชฝ ํ ์ด๋ธ ๋ชจ๋ ํ๊ณผ ์ผ์ชฝ ํ ์ด๋ธ์์ ์ผ์นํ๋ ํ ๋ฐํ, ์ผ์นํ์ง ์์ผ๋ฉด ์ผ์ชฝ ํ ์ด๋ธ ๊ฐ=NULL
15. CROSS JOIN์ ๋ํด์๋ ์ค๋ช ํด์ฃผ์ธ์.
- ์นดํฐ์ ๊ณฑ์ด๋ค.
- ๋ ํ ์ด๋ธ ํ์ ๋ชจ๋ ์กฐํฉํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ. ์ฆ, ์กฐ์ธ ๊ฒฐ๊ณผ ํ ์ด๋ธ์ ํ ์ = ๋ ํ ์ด๋ธ ํ์์ ๊ณฑ
16. ์๋ธ์ฟผ๋ฆฌ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ์ ์: ํ๋์ SQL๋ฌธ์ ํฌํจ๋ ๋ค๋ฅธ SQL
- ์ข
๋ฅ: ์์น์ ๋ฐ๋ผ ์ฌ๋ฌ ์ข
๋ฅ ์กด์ฌ
- ์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ
- ์ธ๋ผ์ธ ์๋ธ์ฟผ๋ฆฌ
- ์๊ด ์๋ธ์ฟผ๋ฆฌ
17. DROP, TRUNCATE, DELETE์ ๊ฐ๊ฐ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์. ์ด๋ค์ฐจ์ด๊ฐ ์๋์?
- DROP: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์ญ์ , ํ ์ด๋ธ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ ์ญ์
- TRUNCATE: ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ์ง๋ง, ํ ์ด๋ธ ๊ตฌ์กฐ๋ ์ ์ง
- DELETE: ํ ์ด๋ธ์์ ๊ฐ์ฒด ์ญ์
18. DISTINCT์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์. ์ฌ์ฉํด๋ณธ ๊ฒฝํ๋ ์ค๋ช ํด์ฃผ์ธ์.
- ๋ชฉ์ : SELECT ๋ฌธ์์ ์ค๋ณต๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ฑฐํ๋๋ฐ ์ฌ์ฉ
- ๊ฒฝํ
- A๋ผ๋ ์ ์ํ์ ๋ํ ํ๊ธฐ๋ฅผ ์์ฑํ ์น์ฌ์ดํธ์ ํ์์ ์๋ฅผ ์ฐพ๊ณ ์ถ์๋ฐ, ํด๋น ํ์์ด A ์ ์ํ๋ฅผ ์ฌ๋ฌ๋ฒ ๊ฐ๋ค์์ ๊ทธ์ ๋ํ ํ๊ธฐ๋ฅผ ์ฌ๋ฌ ๋ฒ ์์ฑํ ์ ์๋ค. ์ด๋ฅผ ์ํด DISTINCT๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ์๋ค.
19. SQL Injection ๊ณต๊ฒฉ์ด ๋ฌด์์ธ์ง ์ด๋ป๊ฒ ๊ณต๊ฒฉ์ ์๋ฐฉํ ์ ์๋์ง ์ค๋ช ํด์ฃผ์ธ์.
- ์ ์: ๊ณต๊ฒฉ์๊ฐ ์ ์์ ์ธ SQL๋ฌธ์ ์ ๋ ฅํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋น์ ์์ ์ธ ์ ๊ทผ์ ์๋ํ๋ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ
- ์๋ฐฉ๋ฒ
- prepared statement: ๋ฏธ๋ฆฌ SQL๋ฌธ์ ์ปดํ์ผํ๊ณ , ๋ณ์์ ์ฌ์ฉ์ ์ ๋ ฅ ๋ฐ์ธ๋ฉ
- ์ ๋ ฅ ๊ฐ ๊ฒ์ฆ: ์ ๋ ฅ ๊ฐ์ ์ฒ ์ ํ๊ฒ ๊ฒ์ฆ
- ์ต์ ๊ถํ ์์น: ์ฌ์ฉ์์๊ฒ ํ์ฏํ ์ต์ํ์ ๊ถํ๋ง ๋ถ์ฌ -> ํผํด ์ต์ํ
20. ์๊ณ ์๋ SQL ์ํฐํจํด์ด ์๋ค๋ฉด ์ค๋ช ํด์ฃผ์ธ์.
- ์ ์: ๋นํจ์จ์ ์ด๊ฑฐ๋ ์๋ชป๋ ๋ฐฉ์์ผ๋ก SQL์ ์ฌ์ฉ
- ์ข
๋ฅ
- SELECT *: ๋ชจ๋ ์ปฌ๋ผ์ ์กฐํํ์ฌ ํ์ํ์ง ์์ ๋ฆฌ์์ค ์๋ชจ ๊ฐ๋ฅ
- N+1์ฟผ๋ฆฌ ๋ฌธ์ : ํ๋์ ์ฟผ๋ฆฌ๋ฅผ ์คํ ํ ํ์, ๊ฐ ๊ฒฐ๊ณผ์ ๋ํด ์ถ๊ฐ ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ฌ ์ฑ๋ฅ ์ ํ๋ฅผ ์ ๋ฐ ๊ฐ๋ฅ
21. ํ์ด์ง๋ค์ด์ ์ ๊ตฌํํ๋ค๊ณ ํ์๋ ์ฟผ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์์ฑํด์ผํ ๊น์?
- ์ ์: ๊ฒ์ ๊ฒฐ๊ณผ ๊ฐ์ ธ์ฌ ๋ ๋ฐ์ดํฐ๋ฅผ ์ชผ๊ฐ ๋ฒํธ๋ฅผ ๋งค๊ฒจ ์ผ๋ถ๋ง ๊ฐ์ ธ์ค๋ ๊ฒ
- ์ฌ์ฉ ์ด์ : ๋ง์ ๋ด์ฉ์ ๋ถ๋ฌ์ฌ ๋ ์ ๋ถ๋ฅผ ํ๋ฒ์ ๋ถ๋ฌ์ค๋ฉด ๊ทธ ์๋๊ฐ ๋๋ ค์ง๊ฒ ๋๋ค. ์ด๋ฅผ ์ํํ๊ธฐ ์ํด ๊ฐ์ ธ์ค๋ ๋ฐ์ดํฐ์ ์๋ฅผ ๋๋์ด ์ผ๋ถ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๊ธฐ ์ํจ
- ์ข
๋ฅ
- offset: offset, limit ์์ฝ์ด๋ก select ๊ฒฐ๊ณผ ์ค ์ผ๋ถ๋ง ๊ฐ์ ธ์จ๋ค.
- cursor: ์ปค์๋ ์ด๋ ํ ๋ ์ฝ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ๋งํ๋๋ฐ, ์ด ์ปค์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ ํ ๋งํผ ๊ฐ์ ธ์ค๋ ๊ฒ
- ๊ตฌํ
- ํ ํ์ด์ง์์ 10๊ฐ๋งํผ์ ์์ ๋ณด์ฌ์ฃผ๊ณ , ์ฒซ๋ฒ์งธ ํ์ด์ง์ OFFSET์ด 0์ด๋ฏ๋ก 20์ 3๋ฒ์งธ ํ์ด์ง๋ฅผ ์๋ฏธํ๋ค.
SELECT column1, column2, ...
FROM table_name
ORDER BY some_column
LIMIT 10 OFFSET 20;
์ถ์ฒ
https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
'๐ปโโ๏ธ์ ๊ณต๊ณต๋ถ > ๋ฐ์ดํฐ๋ฒ ์ด์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ์ดํฐ๋ฒ ์ด์ค 5์ฃผ์ฐจ ์คํฐ๋ ์ ๋ฆฌ (0) | 2024.09.09 |
---|---|
๋ฐ์ดํฐ๋ฒ ์ด์ค 4์ฃผ์ฐจ ์คํฐ๋ ์ ๋ฆฌ (1) | 2024.09.02 |
๋ฐ์ดํฐ๋ฒ ์ด์ค 3์ฃผ์ฐจ ์คํฐ๋ ์ ๋ฆฌ (1) | 2024.08.29 |
๋ฐ์ดํฐ๋ฒ ์ด์ค 1์ฃผ์ฐจ ์คํฐ๋ ์ ๋ฆฌ (0) | 2024.08.14 |