SQL/SQL ๋ ๋ฒจ์ 10 [SQL ๋ ๋ฒจ์ ] 10์ฅ: ์ธ๋ฑ์ค ์ฌ์ฉ ์ธ๋ฑ์ค์ B-tree 1. B-tree ์ธ๋ฑ์ค ํธ๋ฆฌ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ธ๋ฑ์ค ๊ท ํ์กํ ๋ฒ์ฉ์ฑ์ผ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ธ๋ฑ์ค ํธ๋ฆฌ์ ๋ฆฌํ๋ ธ๋์๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ ๋ B+tree ๋ฒ์ ์ ๋ณดํต ์ฌ์ฉ B+tree ํน์ง - ๋ฃจํธ์ ๋ฆฌํ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ ์ผ์ ํ๊ฒ ์ ์งํ์ฌ ๊ท ํ์ด ์ ์กํ ๊ฒ์ ์ฑ๋ฅ์ด ์์ ์ (๋ฐ์ดํฐ ์์ด ์ฆ๊ฐํด๋ ๊ฒ์ ์๋๊ฐ ๊ฐ์๊ธฐ ์ ํ๋๋ ์ผ์ด ์์) - ํธ๋ฆฌ์ ๊น์ด๋ 3-4 ์์ค์ผ๋ก ์ผ์ ํ๊ณ , ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ ์ํ๋ฅผ ์ ์งํ์ฌ ์ด๋ถ ํ์์ ํตํด ๊ฒ์ ๋น์ฉ ์ ๊ฐ ๊ฐ๋ฅ - ์ง์ฝ ํจ์ ๋ฑ์์ ์๊ตฌ๋๋ ์ ๋ ฌ์ ํ์ง ์์ ์ฑ ์คํ ๊ฐ๋ฅ - ๋ฑํธ์ ๋ถ๋ฑํธ๋ฅผ ์ฌ์ฉํ ๊ฒ์ ์กฐ๊ฑด์์ ์ฌ์ฉ ๊ฐ๋ฅ B+tree ๊ตฌ์กฐ 2. ๊ธฐํ ์ธ๋ฑ์ค ๋นํธ๋งต ์ธ๋ฑ์ค ๋ฐ์ดํฐ๋ฅผ ๋นํธ ํ๋๊ทธ๋ก ๋ณํํด ์ ์ฅํ๋ ์ธ๋ฑ์ค ์นด๋๋๋ฆฌํฐ๊ฐ ๋ฎ.. 2022. 5. 23. [SQL ๋ ๋ฒจ์ ] 9์ฅ: ๊ฐฑ์ ๊ณผ ๋ฐ์ดํฐ ๋ชจ๋ธ ๊ฐฑ์ ์ ํจ์จ์ ์ผ๋ก 1. NULL ์ฑ์ฐ๊ธฐ val ์ปฌ๋ผ์ NULL์ธ ๋ถ๋ถ์ ์ด์ ๋ ์ฝ๋์ ๊ฐ์ ๊ฐ์์ ์๋ฏธํจ ์ฆ, NULL ๋ถ๋ถ์ ์ด์ ๋ ์ฝ๋์ ๊ฐ์ ๊ฐ์ ์ฑ์๋ฃ์ด์ผ ํจ 1) ๊ฐ์ keycol ํ๋๋ฅผ ๊ฐ์ง 2) ํ์ฌ ๋ ์ฝ๋๋ณด๋ค ์์ seq ํ๋ ๊ฐ์ง 3) valํ๋๊ฐ NULL์ด ์๋ UPDATE OmitTbl SET val = (SELECT val FROM OmitTbl OT1 WHERE OT1.keycol = OmitTbl.keycol AND OT1.seq = (SELECT MAX(seq) FROM OmitTbl OT2 WHERE OT2.keycol = OmitTbl.keycol AND OT2.seq < OmitTbl.seq AND OT2.val IS NOT NULL)) WHERE val IS NULL; .. 2022. 5. 16. [SQL ๋ ๋ฒจ์ ] 8์ฅ: SQL์ ์์ ์์์กฐ์ ๊ธฐ์ด - ๋ ์ฝ๋์ ์๋ฒ ๋ถ์ด๊ธฐ 1. ๊ธฐ๋ณธ ํค๊ฐ ํ ๊ฐ์ ํ๋์ผ ๊ฒฝ์ฐ ์๋์ฐ ํจ์ ์ฌ์ฉ SELECT student_id, ROW_NUMBER() OVER (ORDER BY student_id) AS seq FROM Weights; ์๊ด ์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉ SELECT student_id, (SELECT COUNT(*) FROM Weights W2 WHERE w2.student_id I/O์์ด ๋์ด๋ SELECT ๊ตฌ๋ฌธ ์ฑ๋ฅ์ด ๋๋น ์ง ์ ์์ผ๋ฉฐ ๊ตฌํ์์กด์ ๋ฐฉ๋ฒ์ 2) ์ธ๋ฑ์ค์ ๋ณต์กํ ํ๋๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐ์ดํฐ์ ๋ถ์ฐ๋๋ฅผ ๋์ -> ๋ณต์กํ ํ๋ ์ถ๊ฐํ ๊ฒฝ์ฐ ๋ถํ์ํ ์๋ฏธ๋ฅผ์์ฑํ๋ฏ๋ก ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ์ดํดํ๊ธฐ ์ด๋ ค์ธ ์ ์์ ๊ฒฐ๋ก : ๋ฆฌ์คํฌ๋ฅผ ์ธ์งํ๊ณ ์ฌ์ฉํ์ 2. IDENTITY ํ๋ - ํ ์ด๋ธ์ ํ๋๋ก ์ ์ํ๊ณ .. 2022. 5. 9. [SQL ๋ ๋ฒจ์ ] 7์ฅ: ์๋ธ์ฟผ๋ฆฌ ์๋ธ์ฟผ๋ฆฌ์ ํํ 1. ์๋ธ์ฟผ๋ฆฌ์ ๋ฌธ์ ์ ์ค์ฒด์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์์ ๋ฌธ์ ๋ฐ์ - ์ฐ์ฐ ๋น์ฉ ์ถ๊ฐ ์๋ธ์ฟผ๋ฆฌ์ ์ ๊ทผํ ๋๋ง๋ค SELECT ๊ตฌ๋ฌธ ์คํํด ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด์ผ ํจ ๋ด์ฉ์ด ๋ณต์กํ ์๋ก ์คํ ๋น์ฉ ๊ธ์ฆ - ๋ฐ์ดํฐ I/O ๋น์ฉ ๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฉ๋์ด ์ถฉ๋ถํ์ง ์๊ฑฐ๋ ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ ํด ๊ฒฝ์ฐ ์ ์ฅ์์ ํ์ผ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ์ฌ ์ค๋ฒํค๋ ์ปค์ง ์ ์์ - ์ต์ ํ ๋ถ๊ฐ ์ตํฐ๋ง์ด์ ๊ฐ ์ฟผ๋ฆฌ๋ฅผ ํด์ํ๊ธฐ ์ํด ํ์ํ ์ ๋ณด(๋ช ์์ ์ธ ์ ์ฝ, ์ธ๋ฑ์ค ๋ฑ)๋ฅผ ์๋ธ์ฟผ๋ฆฌ์์ ์ป์ ์ ์์ ๊ฒฐ๋ก : ๋ด๋ถ์ ์ผ๋ก ๋ณต์กํ ์ฐ์ฐ ์ํํ๊ฑฐ๋ ๊ฒฐ๊ณผ ํฌ๊ธฐ๊ฐ ํฐ ์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉ ์ ์ฑ๋ฅ ๋ฆฌ์คํฌ ๊ณ ๋ คํด์ผ ํจ 2. ์๋ธ์ฟผ๋ฆฌ ์์กด์ฆ ๋ฌธ์ : ๊ณ ๊ฐ๋ณ๋ก ์ต์ ์๋ฒ์ ๊ฐ์ง ๋ ์ฝ๋ ๊ตฌํ๊ธฐ 1) ์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉ SELECT R1.cust_id, R1.seq, R1.pri.. 2022. 5. 2. [SQL ๋ ๋ฒจ์ ] 6์ฅ: ๊ฒฐํฉ ๊ธฐ๋ฅ์ ๊ด์ ์ผ๋ก ๊ตฌ๋ถํ๋ ๊ฒฐํฉ์ ์ข ๋ฅ ๋ฑ๊ฐ ๊ฒฐํฉ: ๊ฒฐํฉ ์กฐ๊ฑด์ผ๋ก ๋ฑํธ(=)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋น๋ฑ๊ฐ ๊ฒฐํฉ: ๊ฒฐํฉ ์กฐ๊ฑด์ผ๋ก ๋ถ๋ฑํธ(>=, < ๋ฑ)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์์ฐ ๊ฒฐํฉ: ๋ด๋ถ ๊ฒฐํฉ์ด๋ฉด์ ๋ฑ๊ฐ ๊ฒฐํฉ - ์์ฐ ๊ฒฐํฉ ์์ SELECT * FROM Employees NATURAL JOIN Departments; ๋ด๋ถ ๊ฒฐํฉ+ ๋ฑ๊ฐ ๊ฒฐํฉ ์ฟผ๋ฆฌ์ ๊ฐ์ ๊ฒฐ๊ณผ ๋์ถ SELECT * FROM Employees E INNER JOIN Departments D ON E.dept_id=D.dept_id; USING ๊ตฌ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ SELECT * FROM Employees INNER JOIN Departments USING(dept_id); 1. ํฌ๋ก์ค ๊ฒฐํฉ SELECT * FROM Employees CROSS JOIN D.. 2022. 4. 25. [SQL ๋ ๋ฒจ์ ] 5์ฅ: ๋ฐ๋ณต๋ฌธ ๋ฐ๋ณต๋ฌธ ์์กด 1. ๋ด๋ถ์ ์ผ๋ก ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ ๋ฐ๋ณต๋ฌธ์ ์ต์ํ ๊ฐ๋ฐ์๋ค์ ๋ค์์ ์์์ ๊ฐ์ด ๋ ์ฝ๋์ ํ๋์ฉ ์ ๊ทผํ๊ณ ํธ์คํธ ์ธ์ด(์ ์ฐจํ ์ธ์ด)์์ ๋ฐ๋ณต ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํ๋ ๊ฒฝ์ฐ๊ฐ ๊ฐํน ์์ ์จ๋ผ์ธ ์ฒ๋ฆฌ์์ ํ๋ฉด์ ๋ช ์ธ๋ฅผ ์ถ๋ ฅํ์กฐ๊ฐ ๋ ์ฝ๋ ํ๋์ฉ ์ ๊ทผํ๋ SELECT ๊ตฌ๋ฌธ ๋ฐ๋ณต ์ฌ์ฉ ๋ฐฐ์น ์ฒ๋ฆฌ์์ ๋๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌํ ๋ ๋ ์ฝ๋๋ฅผ ํ๋์ฉ ํธ์คํธ ์ธ์ด์์ ์ฒ๋ฆฌํ๊ณ ํ ์ด๋ธ์ ๊ฐฑ์ ๋ฐ๋ณต๊ณ์ ๊ณตํฌ 1. ๋ฐ๋ณต๋ฌธ์ ์์กดํ ์ฝ๋์ ๋จ์ - Sales: ๋งค์ถ ๊ณ์ฐํ๋ ํ ์ด๋ธ - Sales2: ๋งค์ถ ๋ณํ๋ฅผ ๋ํ๋ด๋ var ํ๋๋ฅผ ์ถ๊ฐํ ํ ์ด๋ธ - ์ฒ๋ฆฌ ์๊ฐ ๋น๊ต ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ฒ๋ฆฌ ์๊ฐ: (์ฒ๋ฆฌ ํ์) * (ํ ํ์ ๊ฑธ๋ฆฌ๋ ์ฒ๋ฆฌ ์๊ฐ) ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ ์ฒ๋ฆฌ ์๊ฐ: SQL ํจํด์ ๋ค์ํ์ง๋ง ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๊ณ ์ค.. 2022. 4. 18. ์ด์ 1 2 ๋ค์