SQL ๊ธฐ๋ณธ ๋ฐ ํ์ฉ - 1์ฅ SQL ๊ธฐ๋ณธ - 1์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
1. ๋ฐ์ดํฐ๋ฒ ์ด์ค DataBase
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋ ํ ํํ์ ์๋ฃ๊ตฌ์กฐ๋ก ์ฌ์ฉํ๋๋์ ๋ฐ๋ผ ๋๋์ด์ง
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข ๋ฅ๋ก๋ ๊ณ์ธตํ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋คํธ์ํฌํ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์ด ์๋ค
- ๊ณ์ธตํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํธ๋ฆฌTree ํํ์ ์๋ฃ๊ตฌ์กฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌ. 1๋N ๊ด๊ณ๋ฅผ ํํ
- ๋คํธ์ํฌํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ค๋Owner์ ๋ฉค๋ฒMember ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ. 1๋N๊ณผ ํจ๊ป M๋N ๊ด๊ณ๋ ํํ ๊ฐ๋ฅ
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฆด๋ ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌ.
2. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ DBMS : DataBase Management System
- ๊ณ์ธตํ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋คํธ์ํฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ํํธ์จ์ด
- Oracle, MS-SQL, MySQL, Sybase ๋ฑ์ด ์์ผ๋ฉฐ ๋ชจ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์
3. ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค Relation Database
- 1970๋ ๋ E.F.Codd ๋ฐ์ฌ์ ๋ ผ๋ฌธ์์ ์ฒ์ ์๊ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ฆด๋ ์ด์ ๊ณผ ๋ฆด๋ ์ด์ ์ ์กฐ์ธ ์ฐ์ฐ์ ํตํด์ ํฉ์งํฉ, ๊ต์งํฉ, ์ฐจ์งํฉ ๋ฑ์ ๋ง๋ค ์ ์์
- ํ์ฌ ๊ธฐ์ ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ฆด๋ ์ด์ ์ ์ฌ์ฉํด ์งํฉ ์ฐ์ฐ๊ณผ ๊ด๊ณ ์ฐ์ฐ์ด ๊ฐ๋ฅ
4. ์งํฉ ์ฐ์ฐ
- ํฉ์งํฉ Union : ๋ ๊ฐ์ ๋ฆด๋ ์ด์ ์ ํ๋๋ก ํฉ์น๋ ๊ฒ. ์ค๋ณต๋ ํ(ํํ)์ ํ ๋ฒ๋ง ์กฐํ๋จ
- ์ฐจ์งํฉ Difference : ๋ณธ๋ ๋ฆด๋ ์ด์ ์๋ ์กด์ฌํ๊ณ ๋ค๋ฅธ ๋ฆด๋ ์ดํ์๋ ์กด์ฌํ์ง ์๋ ๊ฒ์ ์กฐํ
- ๊ต์งํฉ Intersection : ๋ ๊ฐ์ ๋ฆด๋ ์ด์ ๊ฐ์ ๊ณตํต๋ ๊ฒ์ ์กฐํ
- ๊ณฑ์งํฉ Cartesian product : ๊ฐ ๋ฆด๋ ์ด์ ์ ์กด์ฌํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ค์ ์กฐํฉํ์ฌ ์ฐ์ฐ
5. ๊ด๊ณ ์ฐ์ฐ
- ์ ํ ์ฐ์ฐ Selection : ๋ฆด๋ ์ด์ ์์ ์กฐ๊ฑด์ ๋ง๋ ํ(ํํ)๋ง์ ์กฐํ
- ํฌ์ ์ฐ์ฐ Projection : ๋ฆด๋ ์ด์ ์์ ์กฐ๊ฑด์ ๋ง๋ ์์ฑ๋ง์ ์กฐํ
- ๊ฒฐํฉ ์ฐ์ฐ Join : ์ฌ๋ฌ ๋ฆด๋ ์ด์ ์ ๊ณตํต๋ ์์ฑ์ ์ฌ์ฉํด์ ์๋ก์ด ๋ฆด๋ ์ด์ ์ ๋ง๋ค์ด ๋
- ๋๋๊ธฐ ์ฐ์ฐ Division : ๊ธฐ์ค ๋ฆด๋ ์ด์ ์์ ๋๋๋ ๋ฆด๋ ์ด์ ์ด ๊ฐ์ง๊ณ ์๋ ์์ฑ๊ณผ ๋์ผํ ๊ฐ์ ๊ฐ์ง๋ ํ(ํํ)์ ์ถ์ถํ๊ณ ๋๋๋ ๋ฆด๋ ์ด์ ์ ์์ฑ์ ์ญ์ ํ ํ ์ค๋ณต๋ ํ์ ์ ๊ฑฐํ๋ ์ฐ์ฐ
6. ํ ์ด๋ธ Table
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฆด๋ ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ฆด๋ ์ด์ ์ ์ฌ์ฉํด์ ์งํฉ ์ฐ์ฐ ๋ฐ ๊ด๊ณ ์ฐ์ฐ์ ์ง์ํ์ฌ ๋ค์ํ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์์
- ๋ฆด๋ ์ด์ ์ ์ต์ข ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์์ ํ ์ด๋ธ๋ก ๋ง๋ค์ด์ง
- ํ ์ด๋ธ์ ํRow๊ณผ ์นผ๋ผColomn์ผ๋ก ๊ตฌ์ฑ๋๋ค.
- ํ์ ํ๋์ ํ ์ด๋ธ์ ์ ์ฅ๋๋ ๊ฐ์ผ๋ก ํํTuple์ด๋ผ๊ณ ๋ ํ๋ค
- ์นผ๋ผ์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ํ๋๋ก ์์ฑAttribute์ด๋ผ๊ณ ๋ ํ๋ค
- ๊ธฐ๋ณธํคPrimary Key๋ ํ๋์ ํ ์ด๋ธ์์ ์ ์ผ์ฑ๊ณผ ์ต์์ฑ, Not Null์ ๋ง์กฑํ๋ฉด์ ํด๋น ํ ์ด๋ธ์ ๋ํํ๋ ๊ฒ
- ์ธ๋ํคForeign Key๋ ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ์ฐธ์กฐ(์กฐ์ธ)ํ๋ ์นผ๋ผ. ๊ด๊ณ ์ฐ์ฐ ์ค ๊ฒฐํฉ ์ฐ์ฐ(์กฐ์ธJoin)์ ํ๊ธฐ ์ํด ์ฌ์ฉ
7. SQL : Structured Query Language
- SQL์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด์ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ์ ์, ๋ฐ์ดํฐ ์กฐ์, ๋ฐ์ดํฐ ์ ์ด ๋ฑ์ ํ ์ ์๋ ์ ์ฐจํ ์ธ์ด
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐํ๊ณ SQL๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋๊ตฌ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํจ
- SQL์ ANSI/ISO ํ์ค์ ์ค์ํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ด ๋ณ๊ฒฝ๋์ด๋ ๊ทธ๋๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅ
8. SQL์ ์ข ๋ฅ
- DDL Data Definition Language : ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ์ธ์ด (CREATE, ARTER, DROP, RENAME)
- DML Data Manipulation Language : ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ, ์์ , ์ญ์ , ์กฐํํ๋ ์ธ์ด (INSERT, UPDATE, DELETE, SELECT)
- DCL Data ControlLanguage : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์์๊ฒ ๊ถํ์ ๋ถ์ฌํ๊ฑฐ๋ ํ์ํ๋ ์ธ์ด (GRANT, REVOKE, TRUMCATE)
- TCL Transaction Control Language : ํธ๋์ญ์ ์ ์ ์ดํ๋ ๋ช ๋ น์ด (COMMIT, ROLLBACK, SAVEPOINT)
9. SQL๋ฌธ์ ์คํ ์์
1) ํ์ฑ Parsing : SQL์ ๋ฌธ๋ฒ์ ํ์ธํ๊ณ ๊ตฌ๋ฌธ๋ถ์. ๊ตฌ๋ฌธ๋ถ์ํ SQL๋ฌธ์ Library Cache์ ์ ์ฅ
2) ์คํ Execution : ์ตํฐ๋ง์ด์ Optimizer๊ฐ ์๋ฆฝํ ์คํ ๊ณํ์ ๋ฐ๋ผ SQL์ ์คํ
3) ์ธ์ถ Fetch : ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ์ ์ก
10. ํธ๋์ญ์ ์ ํน์ฑ
- ํธ๋์ญ์ : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ ์ ์ฒ๋ฆฌํ๋ ๋จ์
- ์์์ฑ Atomicity : ํธ๋์ญ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ์ฐ์ ์ ๋ถ๊ฐ ์คํ๋๊ฑฐ๋ ์ ํ ์คํ๋์ง ์์์ผ ํ๋ค. (ALL OR NOTHING) ์ฆ ํธ๋์ญ์ ์ ์ฒ๋ฆฌ๊ฐ ์์ ํ ๋๋์ง ์์์ ๊ฒฝ์ฐ๋ ์คํ๋์ง ์์ ์ํ์ ๊ฐ์์ผ ํ๋ค
- ์ผ๊ด์ฑ Consistency : ํธ๋์ญ์ ์คํ ๊ฒฐ๊ณผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๊ฐ ๋ชจ์๋์ง ์์์ผ ํ๋ค. ํธ๋์ญ์ ์คํ ํ์๋ ์ผ๊ด์ฑ์ด ์ ์ง๋์ด์ผ ํ๋ค
- ๊ณ ๋ฆฝ์ฑ Isolation : ํธ๋์ญ์ ์คํ ์ค์ ์์ฑํ๋ ์ฐ์ฐ์ ์ค๊ฐ๊ฒฐ๊ณผ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ ๊ทผํ ์ ์๋ค. ์ฆ, ๋ถ๋ถ์ ์ธ ์คํ ๊ฒฐ๊ฐ๋ฅผ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๋ณผ ์ ์๋ค
- ์์์ฑ Durability : ํธ๋์ญ์ ์ด ๊ทธ ์คํ์ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃํ๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ ์๊ตฌ์ ์ผ๋ก ๋ณด์ฅ๋์ด์ผ ํ๋ค