Computer Science/Database13 25 NoSQL NoSQL์ "Not Only SQL"์ ์ฝ์๋ก, ์ ํต์ ์ธ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ด ์ ๊ณตํ๋ ํ ์ด๋ธ ํํ์ ์คํค๋ง์ SQL ์ฟผ๋ฆฌ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ค์ํ ํํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์นญํฉ๋๋ค. NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋๋์ ๋ถ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ ์ฅํ๋ ๋ฐ์ ์ค์ ์ ๋ก๋๋ค. ๋ฑ์ฅ ๋ฐฐ๊ฒฝ ์ธํฐ๋ท๊ณผ ๋ชจ๋ฐ์ผ ๊ธฐ์ ์ ๊ธ๊ฒฉํ ๋ฐ์ ์ผ๋ก ๋๋์ ๋ฐ์ดํฐ๊ฐ ์์ฑ๋๊ณ ์์ต๋๋ค. ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ด๋ฌํ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ ํต์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ณ ์ ๋ ์คํค๋ง๋ฅผ ๊ฐ์ง๊ณ ์์ด ๋ฐ์ดํฐ ๋ชจ๋ธ ๋ณ๊ฒฝ์ด ์ด๋ ค์ ์ต๋๋ค. ๊ทธ๋ฌ๋ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ด ์์ฃผ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ง๋ฉด์ ์ ์ฐํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ด ํ์ํด์ก์ต๋๋ค. ๋ ํ, ๋๊ท๋ชจ ์์คํ ๊ณผ ์๋น์ค์์๋ ๊ณ ๊ฐ์ฉ์ฑ, ํ์ฅ์ฑ.. 2024. 1. 18. 21 Index ์ธ๋ฑ์ค(Index)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฒ์ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก, ํน์ ์ด(๋๋ ์ฌ๋ฌ ์ด)์ ๋ํ ์ ๋ ฌ๋ ํค์ ํด๋น ํค๊ฐ ๊ฐ๋ฆฌํค๋ ์ค์ ๋ฐ์ดํฐ ๋ ์ฝ๋์ ์์น๋ฅผ ๋งคํํฉ๋๋ค. ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒ์ ์ฐ์ฐ ์๋๋ฅผ ํฅ์์ํค๊ณ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ธ๋ฑ์ค์ ์ฃผ์ ํน์ง๊ณผ ์ญํ ๊ฒ์ ์๋ ํฅ์: ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ ๊ฒ์ ์กฐ๊ฑด์ ๋ง๋ ๋ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค. ํนํ ๋๋์ ๋ฐ์ดํฐ๊ฐ ์๋ ํ ์ด๋ธ์์ ํน์ ์กฐ๊ฑด์ ๋ฐ๋ฅธ ๊ฒ์์ ์ํํ ๋ ์ ์ฉํฉ๋๋ค. ์ ๋ ฌ ๋ฐ ์ ์ผ์ฑ ์ ์ง: ์ธ๋ฑ์ค๋ ํน์ ์ด์ ๋ํด ์ ๋ ฌ๋ ์์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๋ฉฐ, ํ์์ ๋ฐ๋ผ ํด๋น ์ด์ ๊ฐ์ด ์ ์ผํ๋๋ก ์ ์งํ ์ ์์ต๋๋ค. ์ด๋ ์ฃผ๋ก ๊ธฐ๋ณธ ํค๋ ๊ณ ์ ์ ์ฝ ์กฐ๊ฑด์ ์ฌ์ฉ๋ฉ๋๋ค. ์กฐ์ธ.. 2024. 1. 17. 20 Normalization Normalization์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์์ ์ค๋ณต์ ์ต์ํํ๊ณ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํ ํ๋ก์ธ์ค์ ๋๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ ํ ์ด๋ธ์ ๋ถ์ฐ์์ผ ์ค๋ณต์ ๋ฐฉ์งํ๊ณ , ๋ฐ์ดํฐ ๊ฐ์ ์ข ์์ฑ์ ๊ด๋ฆฌํ์ฌ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ํจ์จ์ฑ์ ํฅ์์ํต๋๋ค. FD์ KEY๋ง์ผ๋ก ์ ์๋๋ Normal Forms 3NF๊น์ง ๋๋ฌํ๋ฉด ์ ๊ทํ๋์๋ค๊ณ ๋งํ ์ ์๋ค ๋ณดํต ์ค๋ฌด์์๋ 3NF ํน์ BCNF๊น์ง๋ง ์งํ ์ ๊ทํ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ์์๋ณผ ์ฌ๋ฌ๊ฐ์ง Key Super Key (์ํผํค): ์ํผํค๋ ๋ฆด๋ ์ด์ ์์ ํํ๋ค์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ์์ฑ(๋๋ ์์ฑ์ ์งํฉ)์ ์กฐํฉ Candidate Key (ํ๋ณด ํค): ํ๋ณด ํค๋ ์ํผ ํค์ด๋ฉด์๋ ๋ ๊ฐ์ attributes๊ฐ ์ํผํค๋ก ํ์ฝํ ๋ (ํ๋๊ฐ ์์ผ๋ฉด ์ ๋จ) Primary K.. 2024. 1. 16. 12 Trigger SQL์์ Trigger(ํธ๋ฆฌ๊ฑฐ)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ์๋์ผ๋ก ์คํ๋๋ ์ผ๋ จ์ SQL ๋ฌธ์ ํฌํจํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด์ ๋๋ค. ์ด ์ด๋ฒคํธ๋ ํน์ ํ ์ด๋ธ์ ๋ํ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์ (INSERT, UPDATE, DELETE ๋ฑ)๋ค์ด ๋ํ์ ์ธ ์์์ ๋๋ค. BEFORE Trigger ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ์คํ๋๋ Trigger๋ก, ์ฃผ๋ก ๋ฐ์ดํฐ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๊ฑฐ๋ ๋ณ๊ฒฝ ์ ์ ์ถ๊ฐ ์์ ์ ์ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. DELIMITER $$๋ ์ธ๋ฏธ์ฝ๋ก ๋์ $$๋ก ๊ตฌ๋ฌธ ๋ถ๋ฆฌ์๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ํธ๋ฆฌ๊ฑฐ์ ๋ณธ๋ฌธ์ ์ฌ๋ฌ SQL ๋ฌธ์ ํฌํจํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ๊ตฌ๋ฌธ ๋ถ๋ฆฌ์๋ฅผ ๋ณ๊ฒฝํด์ฃผ๋ ๊ฒ์ด ํ์ํฉ๋๋ค. CREATE TRIGGER ๋ฌธ์ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์์ฑํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. BEFORE UPD.. 2024. 1. 13. 9 ORDER BY, GROUP BY (feat. HAVING) 1) ORDER BY ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ํน์ ์์ฑ(attribute)์ผ๋ก ์ ๋ ฌํ์ฌ ํ์ 2) Aggregate Function ์ฌ๋ฌ tuple๋ค์ ์ ๋ณด๋ฅผ ์์ฝํด์ ํ๋์ ๊ฐ์ผ๋ก ์ถ์ถํ๋ ํจ์ (NULL๊ฐ์ ์ ์ธ) 3) GROUP BY ๊ด์ฌ์๋ attribute(์์ฑ)๋ค์ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃน์ ๋๋ ์ ํ์ Grouping attribute : ๊ทธ๋ฃน์ ๋๋๋ ๊ธฐ์ค์ด ๋๋ ์์ฑ Group by๋ Aggregate Function๊ณผ ๊ฐ์ด ์์ฃผ ์ฐ์ธ๋ค NULL๊ฐ์ NULL๊ฐ๋ผ๋ฆฌ ๋ฌถ์ธ๋ค SELECT Country, City, CONCAT_WS(', ', City, Country) FROM Customers GROUP BY Country, City; SELECT COUNT(*), OrderDate FROM Orders **GR.. 2024. 1. 12. 8 JOIN SQL JOIN์ ํ๋ ์ด์์ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐํฉํ๋ ๋ฐ ์ฌ์ฉ๋๋ SQL ๋ช ๋ น๋ฌธ์ ๋๋ค. ์ด๋ฅผ ํตํด ๊ด๋ จ๋ ์ ๋ณด๊ฐ ์ฌ๋ฌ ํ ์ด๋ธ์ ๋ถ์ฐ๋์ด ์๋ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ฒ์ํ ์ ์์ต๋๋ค. Implicit join from์ ์๋ ํ ์ด๋ธ๋ค๋ง ๋์ดํ๊ณ where ์ ์์ ๋ ํ ์ด๋ธ์ ์์ฑ์ JOINํ ์กฐ๊ฑด์ ๋ช ์ํ๋ ๋ฐฉ์์ผ๋ก ์ค๋๋ ์คํ์ผ์ ๋ช ๋ น์ด์ด๋ค. ๋ณต์กํ Join ์ฟผ๋ฆฌ๋ค์ ์์ฑํ๋ค๋ณด๋ฉด ์๋ชป๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ค. Explicit join implicit join ๋ฐฉ์์ ๋๋ฌด ํท๊ฐ๋ฆฌ๊ธฐ ์ฝ๋ค. ์ฐจ๋ผ๋ฆฌ FROM ์ ์ JOIN, ON ํค์๋๋ฅผ ๋ช ์ํ๋ ๋ฐฉ์ 1. INNER JOIN ๋ ํ ์ด๋ธ ๊ฐ์ join condition์ ๋ง์กฑํ๋ tuple๋ก ์ด๋ฃจ์ด์ง ํ ์ด๋ธ (+ ์กฐ๊ฑด์ ๋ง๋ ํํ์ ๊ธฐ์ค์ผ๋ก.. 2024. 1. 12. 7 READ (Feat. Subquery) ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์์ ์ํ๋ ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ(READ) ์ํด์๋ SQL์ SELECT Statement๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ Select๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ์์๋ณด๊ฒ ์ต๋๋ค. 1. ๊ธฐ๋ณธ์ ์ธ SELECT ๊ธฐ๋ฅ 2. ์ ํ์ ์ธ ์กฐ๊ฑด์ ๊ฐ์ง SELECT ๊ธฐ๋ฅ 3. ์๋ธ์ฟผ๋ฆฌ (Subquery) ID๊ฐ 5์ธ ์์ง์๊ณผ ๊ฐ์ ํ๋ก์ ํธ์ ์ฐธ์ฌํ ์์ง์๋ค์ ID๋? 2. ID๊ฐ 7 ํน์ 12์ธ ์์ง์์ด ์ฐธ์ฌํ ํ๋ก์ ํธ์ ID์ ์ด๋ฆ์ ์๊ณ ์ถ๋ค 3. ์ ํ์ ๊ฐ๊ฒฉ์ด 50๋ถ์ด ๋๋ ์ด๋ค ์ ํ์ด๋ผ๋ ์๋ค๋ฉด ๊ทธ ์ ํ์ ID, ์ด๋ฆ, ์ค๋ช ์ ๋ณด๊ณ ์ถ์ด 4. ์ ํ id๊ฐ 2์ธ ๊ฐ๊ฒฉ๋ณด๋ค ๋์ ๊ฐ๊ฒฉ์ ์ ํ๋ค์ ๋ชจ๋ ๊ฐ์ ธ ์๋ผ P.S) NULL์ ๋ํด์ NULL ๊ฐ์ ์ธ ๊ฐ์ง ๋ ผ๋ฆฌ ์ํ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ฅผ th.. 2024. 1. 11. 6 Create(Insert), Update, Delete SQL ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ, ์์ , ์ญ์ ํ๋ ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค. SQL ์ฟผ๋ฆฌ ํ์ค์ ์ค์ ์ผ๋ก ๋ฐฐ์ธ ๊ฒ์ด์ง๋ง RDBMS๋ง๋ค ์กฐ๊ธ์ฉ ๊ท์น์ด ๋ค๋ฅธ ์ ์ ์ ์ํ์๊ธธ ๋ฐ๋๋๋ค. CREATE 1) ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ ์ด๋ธ ์์ฑ(CREATE) ๋ฐ ํ์ธ 2) ๋ฐ์ดํฐ ์ถ๊ฐ (INSERT) UPDATE 1) ์ ๋ ฅ๋ ๊ฐ(VALUE) ์์ 2) ์ ๋ ฅ๋ ์์ฑ(Attribute) ์์ ALTER ๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์คํค๋ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ฉฐ, ํ ์ด๋ธ, ์ด, ์ ์ฝ ์กฐ๊ฑด ๋ฑ์ ํฌํจํฉ๋๋ค. ์ด๋ฏธ ์๋น์ค ์ค์ธ ํ ์ด๋ธ์ ์คํค๋ง๋ฅผ ALTER๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝํ ๋, ์๋น์ค์ ๋ฐฑ์๋ ๊ธฐ๋ฅ์ ์ฌ๊ฐํ ์น๋ช ํ๋ฅผ ๊ฐํ ๊ฐ๋ฅ์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ์คํค๋ง ๋ณ๊ฒฝ ์์ ์์๋ ์ถฉ๋ถํ ๊ฒํ ํ์ ์ฌ์ฉ.. 2024. 1. 11. 5 CRUD (Create, Read, Update and Delete) + Practice tables ์์ ํฌ์คํ ์์ ๋ฐ์ดํฐ, ๋ฐ์ดํฐ ๊ด๋ฆฌ ๊ทธ๋ฆฌ๊ณ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ๊ฐ๋ ๋ค์ ์์๋ดค๋ค๋ฉด ์ด๋ฒ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํต์ฌ์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ง์ด ์ฌ์ฉ๋๋ MySQL, OracleDB, SQL Server ๋ฑ ์ด๋ค ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ณธ ๋์ ์๋ฆฌ์ด์ ๋ณธ์ง์ CRUD (Create, Read, Update and Delete) ์ ๋๋ค. Create (์์ฑ): ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ด๋ ๋ณดํต INSERT ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค. Read (์ฝ๊ธฐ): ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. SELECT ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ณ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. Update (๊ฐฑ์ ): ์ด๋ฏธ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์์ ํฉ๋๋ค. ์ด๋ UPDAT.. 2024. 1. 8. ์ด์ 1 2 ๋ค์