728x90
๐ ์ค๋ ๋ฐฐ์ด ๋ด์ฉ!
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ
- SQL ๋ฌธ๋ฒ ์ข ๋ฅ
- SQL Advanced
โ๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ (Database Normalization)
- ๋ฐ์ดํฐ์ ์ค๋ณต์ ์์ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋ฉด์, ์ด์ํ์์ด ์๋ ๋ฆด๋ ์ด์
์ ๋ถํดํ์ฌ ์ด์ํ์์ ์์ ๋ ๊ณผ์
( ์ ๊ทํ์ด ๋์์ง ์๋ก ์ด์ํ์์ ์ค์ด๋ฆ )
โ๏ธ ๋ฆด๋ ์ด์
- ํ๊ณผ ์ด๋ก ๊ตฌ์ฑ๋ ํ ์ด๋ธ
[์ฐธ๊ณ ] https://terms.naver.com/entry.naver?docId=3431156&cid=58430&categoryId=58430
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๊ณ์ ๊ด๋ จ
( ์ค๊ณ๊ฐ ๊ฒฐ๋ก ์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ ์ฅ๋ ์ง์ ๋ํ ๊ตฌ์กฐ๋ฅผ ์ ํด์ฃผ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ )
โ ์ ๊ทํ๋ฅผ ์ํด ์ค์ํ ์์
1. ๋ฐ์ดํฐ ์ค๋ณต (Data redundancy)
- ์ค์ ๋ฐ์ดํฐ์ ๋์ผํ ๋ณต์ฌ๋ณธ์ด๋ ๋ถ๋ถ์ ์ธ ๋ณต์ฌ๋ณธ
โ ๋ฐ์ดํฐ ๋ณต๊ตฌ ์ ๋ ์์ํ ์ ์์ But, ๋ฌธ์ ์ ๋ ์์
โ๏ธ ๋ฐ์ ๊ฐ๋ฅํ ๋ฌธ์ ์
1. ์ผ๊ด๋ ์๋ฃ ์ฒ๋ฆฌ์ ์ด๋ ค์
2. ์ ์ฅ ๊ณต๊ฐ ๋ญ๋น
3. ๋ฐ์ดํฐ ํจ์จ์ฑ ๊ฐ์
2. ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ (Data integrity)
- ๋ฐ์ดํฐ์ ์๋ช
์ฃผ๊ธฐ ๋์ ์ ํ์ฑ๊ณผ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๊ฒ
โ ์ ๋ ฅ๋ ๋ฐ์ดํฐ๊ฐ ์ค์ผ๋์ง ์๊ณ ์ ๋ ฅ๋ ๊ทธ๋๋ก ๋ฐ์ดํฐ ์ฌ์ฉ ๊ฐ๋ฅ
3. ๋ฐ์ดํฐ ์ด์ ํ์ (Anomaly)
- ๋ฐ์ดํฐ์์ ๊ธฐ๋ํ ๊ฒ๊ณผ ๋ค๋ฅธ ํ์์ด ๋ํ๋๋ ๊ฒ
- ๊ฐฑ์ ์ด์ (update anomaly)
โ ๋์ผํ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ํ(๋ ์ฝ๋)์ ๊ฑธ์ณ์์ ๋ ์ด๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํด์ผํ๋์ง์ ๋ํ ๋ ผ๋ฆฌ์ ์ผ๊ด์ฑ์ด ์์ด ๋ฐ์
โ - ์ฝ์
์ด์ (insertion anomaly)
โ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๋ ํ ์ปฌ๋ผ์ ๋ํ ๋ฐ์ดํฐ๊ฐ ์์ง ์ ํด์ ธ ์์ง ์์ ๊ฒฝ์ฐ ์ถ๊ฐํ์ง ๋ชปํ๊ฒ ๋๋ ๊ฒฝ์ฐ ๋ฐ์
โ - ์ญ์ ์ด์ (deletion anomaly)
โ ๋ฐ์ดํฐ์ ํน์ ๋ถ๋ถ์ ์ง์ธ ๋, ์๋์น์๊ฒ ๋ค๋ฅธ ๋ถ๋ถ๋ค๋ ๊ฐ์ด ์ง์์ง๋ ํ์
- ๊ฐฑ์ ์ด์ (update anomaly)
โ ์ฅ์
- ๋ฐ์ดํฐ ๋ณ๊ฒฝ์, ์ด์ ํ์ ์ ๊ฑฐ ๊ฐ๋ฅ
- ์๋ก์ด ๋ฐ์ดํฐ ํ์ ์ถ๊ฐ๋ก ๊ตฌ์กฐ๋ฅผ ํ์ฅํ ๋, ๊ทธ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์์๋ ๋๊ฑฐ๋ ์ผ๋ถ๋ง ๋ณ๊ฒฝํด๋ ๋จ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ต์ํ์ ์ํฅ๋ง์ ๋ฏธ์ณ ์์ฉ ํ๋ก๊ทธ๋จ์ ์๋ช ์ฐ์ฅ์ํด
- ํ ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ฉ๋์ด ์ต์ํ๋จ
( ๋ฐ์ดํฐ ์ค๋ณต ์ ๊ฑฐํ์ฌ ๋์ผํ ์๋ฏธ์ ์ผ๋ฐ ์์ฑ์ด ํ๋์ ํ ์ด๋ธ๋ก ์ง์ฝ๋๊ธฐ ๋๋ฌธ )
โ ๋จ์
- ๋ฆด๋ ์ด์ ์ ๋ถํด๋ก ์ธํ ๋ฆด๋ ์ด์ ๊ฐ์ JOIN ์ฐ์ฐ์ด ๋ง์์ง
- ์ฟผ๋ฆฌ๋ฌธ ์ง์์ ๋ํ ์๋ต ์๊ฐ์ด ๋๋ ค์ง ์๋ ์๊ณ
( But, ํ ํ ์ด๋ธ ๋ด์์๋ ์๋ต์๊ฐ์ด ๋น ๋ฅผ ์๋ ์์ ) - ๋ง์ฝ ์กฐ์ธ์ด ๋ง์ด ๋ฐ์ํ์ฌ ์ฑ๋ฅ ์ ํ๊ฐ ๋ํ๋๋ฉด ๋ฐ์ ๊ทํ(De-normalization)๋ฅผ ์ ์ฉํ ์๋ ์์
[์ฐธ๊ณ ] https://www.w3schools.in/dbms/database-normalization
โ๏ธ SQL ๋ฌธ๋ฒ ์ข ๋ฅ
1. Data Definition Language (DDL)
- ๋ฐ์ดํฐ๋ฅผ ์ ์ํ ๋ ์ฌ์ฉํ๋ ์ธ์ด
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ๊ณผ ๊ฐ์ ์ค๋ธ์ ํธ๋ฅผ ์ ์ํ ๋ ์ฌ์ฉ
Ex. CREATE, DROP ๋ฑ
2. Data Manipulation Language (DML)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉํ๋ ์ธ์ด
Ex. INSERT, DELETE, UPDATE ๋ฑ
3. Data Control Language (DCL)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ ๊ทผ ๊ถํ๊ณผ ๊ด๋ จ๋ ๋ฌธ๋ฒ
- ์ด๋ ์ ์ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ ์ ์๋์ง ๊ถํ ์ค์
Ex. GRANT, REVOKE ๋ฑ
4. Data Query Language (DQL)
- ์ ํด์ง ์คํค๋ง ๋ด์์ ์ฟผ๋ฆฌํ ์ ์๋ ์ธ์ด
( But, DQL์ DML์ ์ผ๋ถ๋ถ์ผ๋ก ์ทจ๊ธํ๊ธฐ๋ ํจ )
Ex. SELECT
5. Transaction Control Language (TCL)
- DML์ ๊ฑฐ์น ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ฌํญ์ ์์ ๊ฐ๋ฅ
Ex. COMMIT, ROLLBACK
โ๏ธ SQL Advanced
โ CASE ์ฌ์ฉ
- SQL ์ฟผ๋ฆฌ๋ฌธ์๋ if๋ฌธ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ ์ฌ์ฉ ๊ฐ๋ฅ
Ex.
SELECT CASE
WHEN CustomerId <= 25 THEN 'GROUP 1'
WHEN CustomerId <= 50 THEN 'GROUP 2'
ELSE 'GROUP 3'
END
FROM customers
โ CustomerId ํ๋๊ฐ์ ๋ฐ๋ผ 3๊ฐ์ ๊ทธ๋ฃน( GROUP 1, GROUP 2, GROUP 3 )์ผ๋ก ๋๋
( CustomerId ํ๋๊ฐ์ด 25 ์ดํ์ธ ๊ฒฝ์ฐ์๋ GROUP 1, 26 ~ 50์ธ ๊ฒฝ์ฐ์๋ GROUP 2, 51 ์ด์์ GROUP 3 ์ผ๋ก ๋ถ๋ฅ )
โ SUBQUERY(์๋ธ์ฟผ๋ฆฌ)
- ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ ๋ ์๊ดํธ๋ก ๊ฐ์ธ ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ฌธ์ ํฌํจํ๋ ๊ฒ
( ์ด ๋, ํฌํจ๋๋ ์ฟผ๋ฆฌ๋ฌธ์ด ์๋ธ์ฟผ๋ฆฌ ) IN
,NOT IN
/EXISTS
,NOT EXISTS
/FROM
๋ฑ์ ์ฌ์ฉ ๊ฐ๋ฅ
โ๏ธ EXISTS
- ์กฐํํ๋ ค๋ ๋ ์ฝ๋๊ฐ ์กด์ฌํ๋ค๋ฉด ์ฐธ(TRUE)์, ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ ๊ฑฐ์ง(FALSE)์ ๋ฆฌํด
Ex.
SELECT *
FROM customers
WHERE CustomerId IN (SELECT CustomerId FROM customers WHERE CustomerId < 10)
โ CustomerId๊ฐ 10 ์ดํ์ธ ๋ฐ์ดํฐ์์ ์ ์ฒด ์
๋
( ์กฐํ๋ ๋ฐ์ดํฐ์ CustomerId๋ 10 ์ดํ )
--------------------------------------------------------------------------------
SELECT EmployeeId
FROM employees e
WHERE EXISTS (
SELECT 1
FROM customers c
WHERE c.SupportRepId = e.EmployeeId
)
ORDER BY EmployeeId
โ ์๋ธ์ฟผ๋ฆฌ๋ก customers ํ
์ด๋ธ์ SupportRepId ํ๋๊ฐ๊ณผ
employees ํ
์ด๋ธ์ EmployeeId ํ๋๊ฐ์ ๋น๊ตํด ์ผ์นํ๋ ๋ ์ฝ๋๋ค์ ๊ฐ์ ธ์์ ์กฐํ
--------------------------------------------------------------------------------
SELECT *
FROM (
SELECT CustomerId
FROM customers
WHERE CustomerId < 10
)
โ CustomerId๊ฐ 10 ์ดํ์ธ ๋ฐ์ดํฐ์์ ์ ์ฒด ์
๋
( ์กฐํ๋ ๋ฐ์ดํฐ์ CustomerId๋ 10 ์ดํ )
๐ ๋๋์
์ฌ์ค ์์ง ์ด๋ ต๊ธด ํ์ง๋ง ๊ทธ๋๋ ์ฒ์ ์ ํ์ ๋๋ณด๋ค๋ ๋ง์ด ์๊ฒ๋ ๊ฒ ๊ฐ๋ค !
ํ์ด๋ต
( ๋ณธ ๊ฒ์๋ฌผ์ 2022/10/10์ ์์ฑํ ๊ธ์ ์ฎ๊ธด ๊ธ์ ๋๋ค. ์๋ฌธ์ ์๊ธฐ์ ์์! )
728x90
728x90
๋ฐ์ํ
'โข CodeStates BootCamp > Section 2' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ [Section2] 17. Spring Framework ๊ธฐ๋ณธ 2 (0) | 2023.04.09 |
---|---|
๐ [Section2] 16. Spring Framework ๊ธฐ๋ณธ 1 (0) | 2023.04.09 |
๐ [Section2] 14. ERD ์ค๊ณ (0) | 2023.04.07 |
๐ [Section2] 13. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ (1) | 2023.04.07 |
๐ [Section2] 12. SQL ์ค์ต (0) | 2023.04.07 |