์ž๊ฒฉ์ฆ/SQLD

[SQLD] 2-1-1 ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

NaNaRin๐Ÿ™ƒ 2021. 2. 14. 21:35

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)์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

ํ…Œ์ด๋ธ” Student์˜ ๊ตฌ์กฐ

 

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 : ํŠธ๋žœ์žญ์…˜์ด ๊ทธ ์‹คํ–‰์„ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒํ•˜๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋Š” ์˜๊ตฌ์ ์œผ๋กœ ๋ณด์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค