๐ ๋ฐ์ดํฐ๋ฒ ์ด์ค

B-Tree ์ธ๋ฑ์ค - (1)
์ด๋ฒ ๊ธ๊ณผ ๋ค์ ๊ธ์ ํตํด์ B-Tree ์ธ๋ฑ์ค์ ๋ํด์ ์์ธํ ์์๋ณด์. ๐ 1. ์ธ๋ฑ์ค ๊ฐ๋ ๐งฐ 1. ์ฑ ๊ณผ ์ธ๋ฑ์ค ์ธ๋ฑ์ค๋ ์ฑ ์ ๋งจ ๋์ ์๋ ์ฐพ์๋ณด๊ธฐ(= ์์ธ)์ ๋น์ ํ ์ ์๋ค. '์ฐพ์๋ณด๊ธฐ'๋ฅผ ์ธ๋ฑ์ค๋ผ๊ณ ํ๋ค๋ฉด, '์ฑ ์ ๋ด์ฉ'์ ๋ฐ์ดํฐ ํ์ผ์ ํด๋นํ๊ณ , 'ํ์ด์ง ๋ฒํธ'๋ ๋ฐ์ดํฐ ํ์ผ์ ์ ์ฅ๋ ๋ ์ฝ๋์ ์ฃผ์๋ผ๊ณ ํ ์ ์๋ค. DBMS์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํด์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค. ๊ทธ๋์ ์นผ๋ผ(๋๋ ์นผ๋ผ๋ค)์ ๊ฐ๊ณผ ํด๋น ๋ ์ฝ๋๊ฐ ์ ์ฅ๋ ์ฃผ์๋ฅผ ํค์ ๊ฐ์ ์(key-value)์ผ๋ก ์ผ์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด ๋๋ ๊ฒ์ด๋ค. ์ฑ ์ '์ฐพ์๋ณด๊ธฐ'์ DBMS์ ์ธ๋ฑ์ค์ ์ค์ํ ๊ณตํต์ ์ '์ ๋ ฌ'์ด๋ค. '์ฐพ์๋ณด๊ธฐ'๋ 'ใฑ, ใด, ใท, ใน,...'๊ณผ ๊ฐ์ ์์๋ก ์ ๋ ฌ๋์ด ์..

MySQL์ ์ ์ฒด ๊ตฌ์กฐ & ์ฟผ๋ฆฌ ์คํ ๊ตฌ์กฐ
์ด๋ฒ ๊ธ์์๋ 'MySQL์ ์ ์ฒด ๊ตฌ์กฐ'์ '์ฟผ๋ฆฌ ์คํ ๊ตฌ์กฐ'๋ฅผ ์ดํด๋ณด๊ณ ์ ํ๋ค. InnoDB ์คํ ๋ฆฌ์ง ์์ง๊ณผ MyISAM ์คํ ๋ฆฌ์ง ์์ง์ ๊ตฌ์ฒด์ ์ธ ๋ด์ฉ์ ์ดํ์ ๊ธ๋ค์ ์ฐธ๊ณ ํ๋ ๊ฒ์ผ๋ก ํ์. ๐ 1. MySQL์ ์ ์ฒด ๊ตฌ์กฐ MySQL(=MySQL ์๋ฒ)์ ํฌ๊ฒ MySQL ์์ง๊ณผ ์คํ ๋ฆฌ์ง ์์ง์ผ๋ก ๊ตฌ๋ถํ ์ ์๋ค. MySQL ์์ง์ ์ฌ๋์ ๋จธ๋ฆฌ ์ญํ ์ ๋ด๋นํ๊ณ , ์คํ ๋ฆฌ์ง ์์ง์ ์๊ณผ ๋ฐ์ ์ญํ ์ ๋ด๋นํ๋ค๊ณ ํ ์ ์๋ค. MySQL์ ์ผ๋ฐ ์์ฉ RDBMS์ ๊ฐ์ด ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก๋ถํฐ ์ ๊ทผ ๋ฐฉ๋ฒ์ ๋ชจ๋ ์ง์ํ๋ค. MySQL ๊ณ ์ ์ C API๋ถํฐ ์์ํด JDBC, ODBC, .NET์ ํ์ค ๋๋ผ์ด๋ฒ๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ด๋ฌํ ๋๋ผ์ด๋ฒ๋ฅผ ์ด์ฉํด ๋ค์ํ ์ธ์ด๋ก MySQL ์๋ฒ์์ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ์ง์ํ๋ค..

ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค (Transaction Isolation Level)
๐ 1. ๊ฒฉ๋ฆฌ ์์ค์ด๋ ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค(Isolation Level)์ด๋ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์ฒ๋ฆฌ๋ ๋ ํน์ ํธ๋์ญ์ ์ด ๋ค๋ฅธ ํธ๋์ญ์ ์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์กฐํํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๊ฒ ํ์ฉํ ์ง ๋ง์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ๋งํ๋ค. ๊ฒฉ๋ฆฌ ์์ค์ ํฌ๊ฒ 'READ UNCOMMITTED', 'READ COMMITTED', 'REPEATABLE READ', 'SERIALIZABLE'์ 4๊ฐ์ง๋ก ๋๋๋ค. ๋ค๋ก ๊ฐ์๋ก ๊ฐ ํธ๋์ญ์ ๊ฐ์ ๋ฐ์ดํฐ ๊ฒฉ๋ฆฌ(๊ณ ๋ฆฝ) ์ ๋๊ฐ ๋์์ง๋ฉฐ, ๋์ ์ฒ๋ฆฌ ์ฑ๋ฅ๋ ๋จ์ด์ง๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค. 'DIRTY READ'๋ผ๊ณ ๋ ํ๋ 'READ UNCOMMITTED"๋ ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๊ณ , 'SERIALIZABLE' ๋ํ ๋์์ฑ์ด ์ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๋๋ค...

ํธ๋์ญ์ (Transaction)
๐ 1. ๊ฐ๋ ํธ๋์ญ์ (Transaction)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ๋์ ๋ ผ๋ฆฌ์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ์์ ์ ๋จ์๋ฅผ ๋งํ๋ค. ์์ ์ ๋จ์๋ ์ฟผ๋ฆฌ ํ ์ค์ด ๋ ์ ๋ ์๊ณ , ์ฌ๋ฌ ๊ฐ์ ์ฟผ๋ฆฌ๋ค์ด ๋ ์ ๋ ์๋ค. ๐ 2. ํธ๋์ญ์ ์ฐ์ฐ ํธ๋์ญ์ ์๋ 2๊ฐ์ง ์ฐ์ฐ์ด ์๋ค. ๐ 1. ์ปค๋ฐ(COMMIT) ์ปค๋ฐ์ด๋ ๋ชจ๋ ์์ ๋ค์ ์ ์ ์ฒ๋ฆฌํ๊ฒ ๋ค๊ณ ํ์ ํ๋ ๋ช ๋ น์ด์ด๋ค. ํธ๋์ญ์ ๋จ์๋ก ์ํ๋๋ฉฐ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ด ๋ชจ๋ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋๋ ๊ฒ์ ๋งํ๋ค. ์ปค๋ฐ์ ์ํํ๋ฉด ํ๋์ ํธ๋์ญ์ ๊ณผ์ ์ด ์ข ๋ฃ๋๋ ๊ฒ์ด๋ค. ๐ 2. ๋กค๋ฐฑ(ROLLBACK) ๋กค๋ฐฑ์ด๋ ํธ๋์ญ์ ์ผ๋ก ์ธํ ํ๋์ ๋ฌถ์ ์ฒ๋ฆฌ๊ฐ ์์๋๊ธฐ ์ด์ ์ ์ํ๋ ๋๋ฆฌ๋ ์ผ(์ทจ์)์ ๋งํ๋ค. ์ฆ, ๋ง์ง๋ง ์ปค๋ฐ์ ์๋ฃํ ์์ ์ผ๋ก ๋์๊ฐ๋ค๋ ๋ง๊ณผ ๋์ผํ๋ค. ๐ 3. ํธ๋์ญ์ ์ํ ๋ค์..

[DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค ํค(Key) ๊ฐ๋ & ํค(Key) ์ข ๋ฅ
๐ 1. ํค(Key) ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํค(Key)๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํํ์ ์ฐพ๊ฑฐ๋ ์์๋๋ก ์ ๋ ฌํ ๋ ๋ค๋ฅธ ํํ๋ค๊ณผ ๊ตฌ๋ณํ ์ ์๋ ๊ธฐ์ค์ด ๋๋ ์์ฑ์ด๋ค. ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์กฐ๊ธ ๋ ๋ช ํํ๊ฒ ํ๊ณ ํ ์ด๋ธ ์์ฒด์ ์ธ๋ฑ์ค๋ฅผ ์ํด ์ค์ ๋ ์ฅ์น์ด๊ธฐ๋ ํ๋ค. ๐ 2. ์ ์ผ์ฑ & ์ต์์ฑ ํค์ ์ข ๋ฅ๋ฅผ ์์๋ณด๊ธฐ์ ์์์ ํค๋ค์ ๊ตฌ๋ถํ๋ ์ฑ์ง์ธ '์ ์ผ์ฑ'๊ณผ '์ต์์ฑ'์ ๋ํด์ ๋จผ์ ์์๋ณด์. ๐ 1. ์ ์ผ์ฑ ์ ์ผ์ฑ์ด๋ ํ๋์ ํค๋ฅผ ์ด์ฉํ์ฌ ํํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ์ฑ์ง์ ๋งํ๋ค. 'ํ๋ฒ, ์ฃผ๋ฏผ๋ฒํธ, ์ด๋ฆ'์ผ๋ก ๊ตฌ์ฑ๋ ํ ์ด๋ธ์ด ์๋ค๊ณ ํ์. ์ ์ผ์ฑ์ ๋ง์กฑํ๋ ํค๋ฅผ ๋ง๋ ๋ค๋ฉด {ํ๋ฒ}, {์ฃผ๋ฏผ๋ฒํธ}, {ํ๋ฒ, ์ฃผ๋ฏผ๋ฒํธ}, {ํ๋ฒ, ์ฃผ๋ฏผ๋ฒํธ, ์ด๋ฆ}์ผ๋ก ์ด๋ฃจ์ด์ง ํค๋ฅผ ๋ง๋ค ์ ์๋ค. ํค๋ฅผ ์ด์ฉํด์ ๊ฐ๊ฐ์ ํํ์ ๊ตฌ๋ถํ ..

์๋ธ์ฟผ๋ฆฌ(Subquery)
1. ๊ฐ๋ ๐ฐ ์๋ธ์ฟผ๋ฆฌ(Subquery)๋ ๋ค๋ฅธ ์ฟผ๋ฆฌ ๋ด๋ถ์ ํฌํจ๋์ด ์๋ SELECT ๋ฌธ์ ์๋ฏธํ๋ค. ์๋ธ์ฟผ๋ฆฌ๋ฅผ ํฌํจํ๊ณ ์๋ ์ฟผ๋ฆฌ๋ฅผ ์ธ๋ถ ์ฟผ๋ฆฌ(Outer Query) ๋๋ ๋ฉ์ธ ์ฟผ๋ฆฌ(Main Query)๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ์๋ธ ์ฟผ๋ฆฌ๋ ๋ด๋ถ ์ฟผ๋ฆฌ(Inner Query)๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์๋ธ ์ฟผ๋ฆฌ๋ ๋ฐ๋์ ๊ดํธ๋ก ๊ฐ์ธ์ ธ์ ํํ๋์ด์ผ ํ๋ค. 2. ์ข ๋ฅ ๐ช ์๋ธ ์ฟผ๋ฆฌ์ ์์น์ ๋ฐ๋ผ์ 3๊ฐ์ง ์ข ๋ฅ๋ก ๋๋ ์ ์๋ค. SELECT ์ปฌ๋ผ1, ์ปฌ๋ผ2, (SELECT ...) -- ์ค์นผ๋ผ ์๋ธ ์ฟผ๋ฆฌ(Scalar Subquery) FROM (SELECT ...) -- ์ธ๋ผ์ธ ๋ทฐ(Inline View) WHERE col = (SELECT ...) -- ์ค์ฒฉ ์๋ธ ์ฟผ๋ฆฌ(Nested Subquery) ์ค์นผ๋ผ ์๋ธ ์ฟผ๋ฆฌ(Scalar S..

์กฐ์ธ(JOIN)
1. ๊ฐ๋ ๐ช ๋ณดํต ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ๋์ ํ ์ด๋ธ์ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์๊ณ ๋ช ๊ฐ์ ํ ์ด๋ธ๋ก ๋๋์ด ์ ์ฅํ๋ค. ์ด์ฒ๋ผ ์ฌ๋ฌ ๊ฐ๋ก ๋๋์ด์ง ๋ฐ์ดํฐ๋ฅผ ํ๋๋ก ๋ฌถ์ด ๊ฒฐ๊ณผ๋ฅผ ๋ด๊ธฐ ์ํ์ฌ JOIN์ ์ฌ์ฉํ๋ค. JOIN์ ํฌ๊ฒ INNER JOIN OUTER JOIN SELF JOIN ์ผ๋ก ๋๋์ด์ง๋ค. ํ๋์ฉ ์ดํด๋ณด๋๋ก ํ์. 2. INNER JOIN ๐ซ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ JOIN์ ์ข ๋ฅ์ด๋ฉฐ ๊ต์งํฉ์ ํํํ๋ค. INNER JOIN์ ์ด๋ ํ ์ด๋ธ์ ๋จผ์ ์ฝ๋ ์กฐ์ธ ๊ด๊ณ์ ๋ถํฉ๋๋ ๋ ์ฝ๋๋ฅผ ๋ชจ๋ ๊ฐ์ง๊ฒ ๋๋ค. ์กฐ์ธ์ ์์๊ฐ ์ค์ํ์ง ์๋ค. INNER JOIN์ ์๋์ 4๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ํํํ ์ ์๋ค. 1. ON ์ฌ์ฉ SELECT a.a1, b.b1 FROM a_table a INNER JOIN b_table b ON a..

๋ทฐ(VIEW)
1. ๊ฐ๋ ๐ฃ ๋ทฐ(View)๋ ํ ์ด๋ธ์ฒ๋ผ ์ทจ๊ธํ ์ ์์ง๋ง '์ค์ฒด๊ฐ ์กด์ฌํ์ง ์๋๋ค'๋ผ๋ ์๋ฏธ๋ก '๊ฐ์์ ํ ์ด๋ธ'์ด๋ผ๊ณ ๋ถ๋ฆฐ๋ค. ์ค์ ํ ์ด๋ธ์ฒ๋ผ ํ๊ณผ ์ด์ ๊ฐ์ง๊ณ ์์ง๋ง, ์ค์ ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์์ง๋ ์๋๋ค. ์ถ๊ฐ์ ์ธ ์ค๋ช ์ ์ํด ๋ทฐ์ ์์ฑ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ฒ ๋จผ์ ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค. CREATE VIEW ๋ทฐ์ด๋ฆ AS SELECT ~~~ ๋ณธ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ก ๋ฑ๋กํ ์ ์๋ SELECT ๋ช ๋ น์ ๊ฐ์ฒด๋ก์ ์ด๋ฆ์ ๋ถ์ฌ ๊ด๋ฆฌํ ์ ์๋๋ก ํ ๊ฒ์ด ๋ทฐ์ด๋ค. ๋ฐ๋ผ์ ๋ทฐ๋ฅผ ์ฐธ์กฐํ๋ฉด(ํธ์ถํ๋ฉด) ๋ทฐ์ ์ ์๋ SELECT ๋ช ๋ น์ด ์คํ๋๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ ์ด๋ธ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋์ View์ Table์ ์ฐจ์ด์ ์ด๋ผ๊ณ ํ๋ค๋ฉด, View๋ ๋ฐ์ดํฐ๊ฐ ์๊ณ SQL๋ง ์๋ ๊ฒ์ด๊ณ , Table์ ์ค์ง์ ์ธ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒ..