Database (56) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ 02. ์ ๊ทํ ์ด์ผ๊ธฐ ์ ๊ทํ๋์๋ณ์์ ์ข ์๋ ์ ์ฌํ ์์ฑ๋ค์ ๋ชจ์ผ๊ณ , ์ข ์๋์ง ์์ ๋ ๋ฆฝ์ ์ธ ์์ฑ๋ค์ ๋ถ๋ฆฌํ์ฌ ์์ฑ์ ๋ช ํํ ๊ตฌ๋ณํ๋ ๊ฒ → ์์ฑ์ ์ ์๋ฆฌ์ ์์น์ํค๋ ๊ฒ๋ฐ์ดํฐ๋ฅผ ์์ ํ ์ดํดํ๋ ๊ณผ์ (์ ๊ทํ=๋ชจ๋ธ๋ง)์์ฑ ๊ฐ์ ๋ถ์ ํํ ์ข ์์ฑ์ ์์ ๋ ๊ฒ์ ์๋ฏธ → ์ค๋ณต ์์ฑ์ ์ ๊ฑฐ ๋ ์ด์ ์ถ๊ฐํ ์์ฑ์ด ์๋ ๋ชจ๋ธ๋ณด๋ค, ์ ๊ฑฐํ ์์ฑ์ด ์๋ ๋ชจ๋ธ์ด ์๋ฒฝํ ๋ชจ๋ธ์ด๋ค. ์ค๋ณต์ ์ต๋ํ ์ ๊ฑฐํ๋ ๊ณผ์ ์ด ์ ๊ทํ๋ค. ๋ค๋ง ์ ๊ทํ๋ฅผ ์ํํ ๋๋ ์ฑ๋ฅ์ ๊ณ ๋ คํด์ผ ํ๋ฉฐ, ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ถ๋ช ํ ๋๋ ๋น์ ๊ทํ๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค. ํจ์์ข ์๋ฐ์ดํฐ ์ข ์์ฑ์ ์ข ๋ฅํจ์ ์ข ์(Functional Dependency)๋ค๊ฐ ์ข ์(Multivalued Dependency)์กฐ์ธ ์ข ์(Join Dependency)ํ์ ์ข ์(Derivation Dependency)์ด .. 01. ์ํฐํฐ ์ด์ผ๊ธฐ (2) 1.18 ์ํฐํฐ ์ค๊ณ ์์น์ํฐํฐ๋ฅผ ์ค๊ณํ ๋๋ ์ฑ๊ฒฉ, ๋ณธ์ง, ์ฃผ์ ์ ๋ฐ๋ฅธ ์ ์ฒด์ฑ์ด ๋ถ๋ช ํ ์ํฐํฐ๋ก ์ค๊ณํด์ผ ํ๋ค. โถ ์ํฐํฐ๋ฅผ ์ค๊ณํ๋ ์์น๋ฐ์ดํฐ ์ ์ฒด์ฑ์ํฐํฐ ๋ฌด๊ฒฐ์ฑ์ํฐํฐ ์ ์ผ์ฑ๋ฐ์ดํฐ ํผ์ฉ ๋ฐฐ์ ํ ์ํฐํฐ์ ๊ด๊ณ ์กด์ฌํ๋ก์ธ์ค ๋์ถ ์ง์ํ๋ฉด ๋์ถ ์ง์๋ฐ์ดํฐ ๊ด๋ฆฌ ์๊ฑด ๋ฐ์ดํฐ ์ ์ฒด์ฑ์ํฐํฐ๋ฅผ ๋ช ํํ๊ฒ ์ ์ํ๋ ๊ฒ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ํํ ๋ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ด๋ฉด์, ๋์์ ๊ฐ์ฅ ๊ฐ๊ณผํ๋ ๋ถ๋ถ์ด๊ธฐ๋ ํ๋ค. ์ํฐํฐ๋ง ๋ช ํํ๊ฒ ์ ์ํ๋ฉด ๋ชจ๋ธ๋ง์ ๋ง์ ๋ฌธ์ ๋ ํด๊ฒฐ๋๋ค.์ํฐํฐ ์ ์๊ฐ ๋ถ๋ถ๋ช ํ ๋ ๋ฐ์ํ ์ ์๋ ๊ฐ์ฅ ์ปค๋ค๋ ๋ถ์์ฉ์ ์ํฐํฐ๋ฅผ ์์๋ก ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ์ฌ๋ฌ ๋ฐ์ดํฐ๊ฐ ํผํฉ๋ ํํ์ ์ํฐํฐ๋ ์ํฐํฐ๊ฐ ์๋๋ผ ๋ทฐ๋ก ์ฌ์ฉ๋ผ์ผ ํ๋ค. ์ํฐํฐ ๋ฌด๊ฒฐ์ฑ์ํฐํฐ ๋ฌด๊ฒฐ์ฑ(Entity Integrity)์ด๋ผ๋ ๊ฒ์ ์ฃผ ์๋ณ์๊ฐ.. 01. ์ํฐํฐ ์ด์ผ๊ธฐ (1) 1.1 ์งํฉ๊ณผ ์ํฐํฐ์งํฉ๊ฒ์ค๋ฅด๊ทธ ์นธํ ์ด(์งํฉ๋ก ์ ์ฐฝ์์)๊ฐ ๋งํ ์งํฉ์ ์ ์(์ํฐํฐ์ ์ ์์ ์ ์ฌ)์ฐ๋ฆฌ์ ์ง๊ด ๋๋ ์ฌ๊ณ ์ ๋์์ผ๋ก์ ํ์ ๋์ด ์๊ณ ์๋ก ๋ช ํํ ๊ตฌ๋ณ๋๋ ๊ฒ๋ค์ ๋ชจ์ ์ฆ, ์งํฉ์ด๋ ์ด๋ค ์กฐ๊ฑด์ ์ํด ๊ทธ ๋์์ ๋ถ๋ช ํ ์ ์ ์๋ ๊ฒ์ ๋ชจ์์ด๋ค. ์งํฉ์ด ๋๋ ค๋ฉด ๋ช ์พํ ์กฐ๊ฑด์ด ๊ธฐ์ค์ด ๋์ด์ผ ํ๋ค.ํ๋ก์ผ๊ตฌ ๊ฐํ์ ์งํฉ X์ฐ์นํด๋ณธ ํ์ ์งํฉ O์ด์ฒ๋ผ ์กฐ๊ฑด์ด ๋ถ๋ช ํ๋ฉฐ, ์ฃผ์ด์ง ์กฐ๊ฑด์ ํด๋นํ๋ ๋์(์์)์ด ๋ถ๋ช ํ ๋ชจ์์ ์งํฉ์ด๋ผ ํ๋ค.์ํฐํฐ๋ ์ด์ ๋ง์ฐฌ๊ฐ์ง๋ค. ๋๊ฐ ์๊ฐํด๋ ๋์(์์)์ด ๊ฐ์ ์ ์๋๋ก ์ ์ํ๋ ๊ฒ์ด ์ค์ํ๋ค.→ ์ํฐํฐ๋ฅผ ์ ๋๋ก ์ค๊ณํ๋ ๊ฒ์ ๋ชจ๋ธ๋ง์ ์๋ฐ์ ์์์งํฉ์ ์ด๋ฃจ๊ณ ์๋ ๋์ ํ๋ํ๋. ์ํฐํฐ์ ์ธ์คํด์ค์ ๊ฐ์ ๊ฐ๋ .์ํฐํฐ์ ์ธ์คํด์ค๋ ์ํฐํฐ์ ์ํ๋ ๊ตฌ์ฒด์ ์ธ ๊ฐ์ฒด๋ฅผ .. [Do it! SQL ์ ๋ฌธ] 05-2. ๋ ์ง ํจ์ ์๋ฒ์ ํ์ฌ ๋ ์ง, ์๊ฐ ๋ฐํํ๊ธฐ: GETDATE, SYSDATETIME ํจ์GETDATE ํจ์: ์์์ 3์๋ฆฌ๊น์ง ์๊ฐ์ ํํSYSDATETIME ํจ์: ์์์ 7์๋ฆฌ๊น์ง ์๊ฐ์ ํํ ์๋ฒ์ ํ์ฌ UTC ๋ ์ง, ์๊ฐ ๋ฐํํ๊ธฐ: GETUTCDATE, SYSUTCDATETIME ํจ์ ๋ ์ง ๋ํ๊ธฐ: DATEADD ํจ์ ์์ธํ ๋ ์ง ํ์์ ์๋ ๋งํฌ ์ฐธ๊ณ https://learn.microsoft.com/ko-kr/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-ver16 DATEADD(Transact-SQL) - SQL ServerDATEADD ํจ์์ Transact-SQL ์ฐธ์กฐ์ ๋๋ค. ์ด ํจ์๋ ์ง์ ๋ ๋ ์ง ๋ถ๋ถ์ผ๋ก ์์ ๋ ๋ ์ง๋ฅผ ๋ฐํํฉ๋๋ค.learn.m.. [Do it! SQL ์ ๋ฌธ] 05-1. ๋ฌธ์์ด ํจ์ ๋ฌธ์์ด๊ณผ ๋ฌธ์์ด ์ฐ๊ฒฐํ๊ธฐ: CONCAT ํจ์ ๋ฌธ์์ด๊ณผ ์ซ์ ๋๋ ๋ ์ง ์ฐ๊ฒฐํ๊ธฐ: CAST, CONVERT ํจ์ NULL๊ณผ ๋ฌธ์์ด ์ฐ๊ฒฐํ๊ธฐ: ISNULL, COALESCE ํจ์ ๋ฌธ์์ด์ ์๋ฌธ์๋ ๋๋ฌธ์๋ก ๋ณ๊ฒฝํ๊ธฐ: LOWER, UPPER ํจ์ ๋ฌธ์์ด ๊ณต๋ฐฑ ์ ๊ฑฐํ๊ธฐ: LTRIM ,RTRIM, TRIM ํจ์ ๋ฌธ์์ด ๊ธธ์ด ๋ฐํํ๊ธฐ: LEN ํจ์ ํน์ ๋ฌธ์์ด๊น์ง ๋ฌธ์์ด ๊ธธ์ด ๋ฐํํ๊ธฐ: CHARINDEX ํจ์ ์ง์ ํ ๊ธธ์ด๋งํผ ๋ฌธ์์ด ๋ฐํํ๊ธฐ: LEFT, RIGHT ํจ์ ์ง์ ํ ๋ฒ์์ ๋ฌธ์์ด ๋ฐํํ๊ธฐ: SUBSTRING ํจ์ ํน์ ๋ฌธ์๋ฅผ ๋ค๋ฅธ ๋ฌธ์๋ก ๋ณ๊ฒฝํ๊ธฐ: REPLACE ํจ์ ๋ฌธ์ ๋ฐ๋ณตํ๊ธฐ: REPLICATE ํจ์ ๊ณต๋ฐฑ ๋ฌธ์ ๋ฐ๋ณตํ๊ธฐ: SPACE ํจ์ ๋ฌธ์์ด ์ญ์์ผ๋ก ํ์ํ๊ธฐ: REVERSE ํจ์ ์ง์ ํ .. [Do it! SQL ์ ๋ฌธ] 04-3. ๊ณตํต ํ ์ด๋ธ ์ ๊ณตํต ํ ์ด๋ธ ์(Common Table Expression)์ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ํ ์ด๋ธ์ด ํ์ํ ๋ ์ฌ์ฉํ๋ฉฐ, ๋ฐ๋ก ๋ค์์ ์คํํ SELECT ๋ฌธ์๋ง ์ฌ์ฉํด์ผ ํ๋ค๋ ํน์ง์ด ์๋ค. ๊ณตํต ํ ์ด๋ธ ์์ ๋ชฉ์ ์ ๋ฐ๋ผ ์ผ๋ฐ ๊ณตํต ํ ์ด๋ธ ์๊ณผ ์ฌ๊ท ๊ณตํต ํ ์ด๋ธ ์์ผ๋ก ๋๋๋ค. ์ผ๋ฐ CTE UNION ๋ฌธ ๊ณผ UNION ALL ๋ฌธ์ผ๋ก CTE ๊ฒฐํฉํ๊ธฐ INTERSECT ๋ฌธ์ผ๋ก CTE ๊ฒฐํฉํ๊ธฐ EXCEPT ๋ฌธ์ผ๋ก CTE ๊ฒฐํฉํ๊ธฐ ์ฌ๊ท CTE์ฌ๊ท CTE๋ CTE ๊ฒฐ๊ณผ๋ฅผ CTE ๋ด๋ถ์ ์ฟผ๋ฆฌ์์ ์ฌ์ฌ์ฉํจ์ผ๋ก์จ ๋ฐ๋ณต ์คํํ๋ ์ฟผ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค. ์ฌ๊ท CTE๋ ์ฃผ๋ก ๊ณ์ธต ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ๋ ๋ง์ด ์ฌ์ฉํ๋ค. WITH [CTE ์ด๋ฆ] ([์ด ์ด๋ฆ1], [์ด ์ด๋ฆ2]...)AS ( -- ์ฟผ๋ฆฌ 1 (์ต์ปค ๋ฉค.. [Do it! SQL ์ ๋ฌธ] 04-2. ์๋ธ ์ฟผ๋ฆฌ ์๋ธ ์ฟผ๋ฆฌ๋ ์ฟผ๋ฆฌ ์์ ํฌํจ๋๋ ๋ ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ๋งํ๋ค. ์๋ธ ์ฟผ๋ฆฌ๋ ์กฐ์ธํ์ง ์์ ์ํ์์ ๋ค๋ฅธ ํ ์ด๋ธ๊ณผ ์ผ์นํ๋ ํ์ ์ฐพ๊ฑฐ๋, ์กฐ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์กฐ์ธํ ๋ ์ฌ์ฉํ ์ ์๋ค. ์๋ธ ์ฟผ๋ฆฌ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค.๋ฐ๋์ ์๊ดํธ๋ก ๊ฐ์ธ ์ฌ์ฉํ๋ค.์ฃผ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ธฐ ์ ์ 1๋ฒ๋ง ์คํ๋๋ค.๋น๊ต ์ฐ์ฐ์์ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ค๋ฅธ์ชฝ์ ๊ธฐ์ ํด์ผ ํ๋ค.๋ด๋ถ์๋ ์ ๋ ฌ ๊ตฌ๋ฌธ์ธ ORDER BY๋ฅผ ์ฌ์ฉํ ์ ์๋ค. WHERE ๋ฌธ์ ์๋ธ ์ฟผ๋ฆฌ ์ฌ์ฉํ๊ธฐ์๋ธ ์ฟผ๋ฆฌ ์ค์์๋ WHERE ๋ฌธ์ ์ฌ์ฉํ๋ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ค์ฒฉ ์๋ธ ์ฟผ๋ฆฌ(Nested subquery)๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ค์ฒฉ ์๋ธ ์ฟผ๋ฆฌ๋ ์กฐ๊ฑด๋ฌธ์ ์ผ๋ถ๋ก ์ฌ์ฉํ๋ค. ๋ค์ ๋งํด ์ค์ฒฉ ์๋ธ ์ฟผ๋ฆฌ๋ ๋ ๋ค๋ฅธ SELECT ๋ฌธ์ ์ฌ์ฉํ ๊ฒฐ๊ณผ๋ฅผ ์ฃผ ์ฟผ๋ฆฌ์ ์กฐ๊ฑด๊ฐ์ผ๋ก ์ฌ์ฉํ๋ค. .. [Do it! SQL ์ ๋ฌธ] 04-1. ์กฐ์ธ ํ ์ด๋ธ์ 2๊ฐ ์ด์ ์กฐ์ธํ๋ค๋ ์๋ฏธ๋ถ๋ฆฌ๋ ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์์ ์ํ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์กฐํฉ์ ๋ง๋ค์ด๋ด๋ ๊ฒ ๋ด๋ถ ์กฐ์ธ(INNER JOIN)๋ด๋ถ ์กฐ์ธ์ ์กฐ์ธํค์ ํด๋นํ๋ ๊ฐ ํ ์ด๋ธ์ ์ด๊ฐ์ ๋น๊ตํด ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ ๊ฒ์ํ๋ค.SELECT [์ด ์ด๋ฆ]FROM [ํ ์ด๋ธ 1]INNER JOIN [ํ ์ด๋ธ 2] ON [ํ ์ด๋ธ 1.์ด] = [ํ ์ด๋ธ 2.์ด]WHERE [๊ฒ์ ์กฐ๊ฑด] INNER JOIN ๋ฌธ ์ฌ์ฉํ๊ธฐ (2๊ฐ ํ ์ด๋ธ ์กฐ์ธ) ON ๋ฌธ๊ณผ WHERE ๋ฌธ์ ์ฐจ์ดON: ์กฐ์ธํ ๋ ์กฐ์ธ ์กฐ๊ฑด์ ์ํด ์ฌ์ฉWHERE: ์กฐ์ธ์ ์๋ฃํ ์ํ์์ ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ ๊ฐ์ ธ์ค๊ณ ์ ์ฌ์ฉON ๋ฌธ์ ์กฐ๊ฑด์ ๋ค์ํ๊ฒ ๋ถ์ฌํด WHERE ๋ฌธ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ด๊ฒ ํ ์๋ ์์ง๋ง ์กฐ์ธ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ ๋งค์นญ ๊ณผ์ ์์ ์ค์ฐจ๊ฐ ๋ฐ์ํ๋ฏ๋ก .. ์ด์ 1 2 3 4 5 ยทยทยท 7 ๋ค์