728x90

DB(Database) 27

SQL Server Architecture

DBMS ์•„ํ‚คํ…์ฒ˜ - DBMS๋Š” ์ ์–ด๋„ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํฌํ•จ - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์œ ์ €(์‘์šฉ)๋ฐ์ดํ„ฐ์™€ ์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฌผ๋ฆฌ ํŒŒ์ผ๋“ค๋กœ ๊ตฌ์„ฑ - ์ธ์Šคํ„ด์Šค๋Š” DBMS ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค(memory, process)๋กœ ๊ตฌ์„ฑ ** process: ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๋‹จ์œ„, process ๋‚ด์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ๋•Œ ์ž‘์—…์˜ ๋‹จ์œ„ ๋˜๋Š” ๊ฐœ์ฒด thread ์˜ค๋ผํด ์•„ํ‚คํ…์ฒ˜ ์˜ค๋ผํด ์„œ๋ฒ„ = Instance(๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ + background ํ”„๋กœ์„ธ์Šค ์˜์—ญ) + Database(์ €์žฅ ํŒŒ์ผ ์˜์—ญ) ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค -> ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค: client๊ฐ€ ์š”์ฒญํ•œ SQL ์ฟผ๋ฆฌ๋ฅผ server process๊ฐ€ ์‹คํ–‰ ๊ฒฐ๊ณผ ์ „๋‹ฌ, application์„ ํ†ตํ•ด ์š”์ฒญ๋œ SQL..

DB(Database)/MSSQL 2022.06.13

[DB] ํŠธ๋žœ์žญ์…˜ (Transaction), ์žฅ์•  ํšŒ๋ณต

ํŠธ๋žœ์žญ์…˜ ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ์‚ฐ๋“ค์„ ๋ชจ์•„๋†“์€ ๊ฒƒ = ์ž‘์—… ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ SQL ๋ฌธ์˜ ๋ชจ์ž„ ํŠนํžˆ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” INSERT, DELETE, UPDATE ๋ฌธ์˜ ์‹คํ–‰ ๊ด€๋ฆฌ ๋…ผ๋ฆฌ์  ์ž‘์—…์˜ ๋‹จ์œ„ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋ณต๊ตฌ ์ž‘์—…์ด๋‚˜ ๋ณ‘ํ–‰ ์ œ์–ด ์ž‘์—…์„ ์œ„ํ•œ ์ค‘์š”ํ•œ ๋‹จ์œ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์—… ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ์—ฐ์‚ฐ๋“ค์„ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์ œ๋Œ€๋กœ ์ •์˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผ ํ•จ ํŠธ๋žœ์žญ์…˜์˜ ํŠน์„ฑ (ACID) ์›์ž์„ฑ (Atomicity) - ํŠธ๋žœ์žญ์…˜ ์—ฐ์‚ฐ๋“ค์ด ๋ชจ๋‘ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ํ•˜๋‚˜๋„ ์‹คํ–‰๋˜์ง€ ์•Š์•„์•ผ ํ•จ (= all-or-nothing) - ๋งŒ์•ฝ ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ๋„์ค‘ ์žฅ์•  ๋ฐœ์ƒํ•˜๋ฉด ์ง€๊ธˆ๊นŒ์ง€ ์‹คํ–‰ํ•œ ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ ๋ชจ๋‘ ์ทจ์†Œํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํŠธ๋žœ์žญ์…˜ ์ž‘์—… ์ „ ์ƒํƒœ๋กœ ๋˜๋Œ๋ ค์•ผ..

[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๊ทœํ™”

์ •๊ทœํ™”์˜ ํ•„์š”์„ฑ, ์ด์ƒํ˜„์ƒ์˜ ์˜๋ฏธ ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜ ์ข…์†์„ฑ์˜ ๊ฐœ๋… ์ดํ•ด ์ •๊ทœํ˜•์˜ ์œ ํ˜•, ๊ด€๊ณ„ ํŒŒ์•… ์ •๊ทœํ™”์˜ ๊ฐœ๋…๊ณผ ์ด์ƒ ํ˜„์ƒ ์ด์ƒ ํ˜„์ƒ์˜ ์ข…๋ฅ˜ ์‚ฝ์ž… ์ด์ƒ: ์ƒˆ ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ์œ„ํ•ด ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์‚ฝ์ž…ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ ๊ฐฑ์‹  ์ด์ƒ: ์ค‘๋ณต ํˆฌํ”Œ ์ค‘ ์ผ๋ถ€๋งŒ ๋ณ€๊ฒฝํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถˆ์ผ์น˜ํ•˜๊ฒŒ ๋˜๋Š” ๋ชจ์ˆœ์˜ ๋ฌธ์ œ ์‚ญ์ œ ์ด์ƒ: ํˆฌํ”Œ์„ ์‚ญ์ œํ•˜๋ฉด ๊ผญ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ํ•จ๊ป˜ ์‚ญ์ œ๋˜๋Š” ๋ฐ์ดํ„ฐ ์†์‹ค์˜ ๋ฌธ์ œ ์ •๊ทœํ™” ์ด์ƒ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ธฐ ์•Š๋„๋ก, ๋ฆด๋ ˆ์ด์…˜์„ ๊ด€๋ จ ์žˆ๋Š” ์†์„ฑ๋“ค๋กœ๋งŒ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ฆด๋ ˆ์ด์…˜์„ ๋ถ„ํ•ดํ•˜๋Š” ๊ณผ์ • ํ•จ์ˆ˜์„ฑ ์ข…์†์„ฑ์„ ํŒ๋‹จํ•ด ์ •๊ทœํ™” ์ˆ˜ํ–‰ ํ•จ์ˆ˜์„ฑ ์ข…์†์„ฑ(FD; Functional Dependency): ์†์„ฑ๋“ค ๊ฐ„์˜ ๊ด€๋ จ์„ฑ ํ•จ์ˆ˜ ์ข…์† X๊ฐ€ Y๋ฅผ ํ•จ์ˆ˜์ ์œผ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค ๋ฆด๋ ˆ์ด์…˜ ๋‚ด์ด ๋ชจ๋“  ํˆฌํ”Œ์—์„œ ํ•˜๋‚˜์˜ X๊ฐ’์— ๋Œ€ํ•œ ..

Hackerrank SQL Occupations

https://www.hackerrank.com/challenges/occupations/problem?isFullScreen=true Occupations | HackerRank Pivot the Occupation column so the Name of each person in OCCUPATIONS is displayed underneath their respective Occupation. www.hackerrank.com -- pivot table ์ด์šฉ -- ๋ฌธ์ž์—ด์—์„œ MIN์€ a๋ถ€ํ„ฐ ์ถ”์ถœ -- ๋ณ€์ˆ˜ ์„ค์ • set @ -- sub table ์ด๋ฆ„ ์ง€์ • SET @D=0, @P=0, @S=0, @A=0; SELECT MIN(Doctor), MIN(Professor), MIN(Singer), MIN(A..

DB(Database)/MySQL 2021.11.04

[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ์‚ฌ์šฉ์ž์˜ ๋‹ค์–‘ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ • ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋Œ€ํ‘œ์ ์ธ ์„ค๊ณ„ ๋ฐฉ๋ฒ• E-R ๋ชจ๋ธ๊ณผ ๋ฆด๋ ˆ์ด์…˜ ๋ณ€ํ™˜ ๊ทœ์น™์„ ์ด์šฉํ•œ ์„ค๊ณ„ ์ •๊ทœํ™”๋ฅผ ์ด์šฉํ•œ ์„ค๊ณ„ E-R ๋ชจ๋ธ๊ณผ ๋ฆด๋ ˆ์ด์…˜ ๋ณ€ํ™˜ ๊ทœ์น™์„ ์ด์šฉํ•œ ์„ค๊ณ„ 1๋‹จ๊ณ„ ์š”๊ตฌ ์‚ฌํ•ญ ๋ถ„์„ - ์ฒ˜๋ฆฌํ•ด์•ผํ•  ๋ฐ์ดํ„ฐ ํŒŒ์•…, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์šฉ๋„ ํŒŒ์•… - ๊ฒฐ๊ณผ๋ฌผ: ์š”๊ตฌ ์‚ฌํ•ญ ๋ช…์„ธ์„œ 2๋‹จ๊ณ„ ๊ฐœ๋…์  ์„ค๊ณ„ - DBMS์— ๋…๋ฆฝ์ ์ธ ๊ฐœ๋…์  ๊ตฌ์กฐ ์„ค๊ณ„ - ๊ฒฐ๊ณผ๋ฌผ: ๊ฐœ๋…์  ์Šคํ‚ค๋งˆ(E-R ๋‹ค์ด์–ด๊ทธ๋žจ) 3๋‹จ๊ณ„ ๋…ผ๋ฆฌ์  ์„ค๊ณ„ - DBMS์— ์ ํ•ฉํ•œ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ ์„ค๊ณ„ - ๊ฒฐ๊ณผ๋ฌผ: ๋…ผ๋ฆฌ์  ์Šคํ‚ค๋งˆ(๋ฆด๋ ˆ์ด์…˜ ์Šคํ‚ค๋งˆ) 4๋‹จ๊ณ„ ๋ฌผ๋ฆฌ์  ์„ค๊ณ„ - DBMS๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•œ ๋ฌผ๋ฆฌ์  ๊ตฌ์กฐ ์„ค๊ณ„ - ์ €์žฅ ์žฅ์น˜์— ์ ํ•ฉํ•œ ์ €์žฅ ๋ ˆ์ฝ”๋“œ, ์ธ๋ฑ์Šค์˜ ๊ตฌ์กฐ ๋“ฑ ์„ค๊ณ„ - ์ธ๋ฑ์Šค์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ..

[DB] ๋ทฐ(VIEW)

๋ทฐ(VIEW) ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฐ€์ƒ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋…ผ๋ฆฌ์ ์œผ๋กœ๋งŒ ์กด์žฌ but ์ผ๋ฐ˜ ํ…Œ์ด๋ธ”๊ณผ ๋™์ผํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ๋ทฐ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ ๋ทฐ ํ†ตํ•ด ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”(๋ทฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ๋ฌผ๋ฆฌ์  ํ…Œ์ด๋ธ”) ๋‚ด์šฉ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ๋‚ด์šฉ์„ ๋ณ€ํ™”์‹œํ‚ค๋Š” ์ž‘์—…์€ ์ œํ•œ์  →→ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์„ ๋“ค์—ฌ๋‹ค ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ฐฝ์˜ ์—ญํ• ์„ ๋‹ด๋‹น, ๋ฌผ๋ฆฌ์ X, ๋…ผ๋ฆฌ์  ๊ฐ€์ƒ ํ…Œ์ด๋ธ” ๋ทฐ ์ƒ์„ฑ : CREATE VIEW ๋ฌธ CREATE VIEW ๋ทฐ_์ด๋ฆ„[(์†์„ฑ_๋ฆฌ์ŠคํŠธ)] AS SELECT ๋ฌธ [WITH CHECK OPTION]; CREATE VIEW ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์ƒ์„ฑํ•  ๋ทฐ์˜ ์ด๋ฆ„๊ณผ ๋ทฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ ์ด๋ฆ„ ๋‚˜์—ด AS ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ SELECT ๋ฌธ..

[DB] ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ

5์žฅ. ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ๊ฐœ๋… ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ์ œ์•ฝ ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ๊ฐœ๋… ๊ฐœ๋…์  ๊ตฌ์กฐ๋ฅผ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ํ•˜๋‚˜์˜ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๋ฆด๋ ˆ์ด์…˜์— ์ €์žฅ (๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์€ ๋‹ค์ค‘ ๊ฐ’ ์†์„ฑ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.) ๊ณ ๊ฐ ๋ฆด๋ ˆ์ด์…˜์˜ ์ฐจ์ˆ˜๋Š” 6, ์นด๋””๋„๋ฆฌํ‹ฐ๋Š” 4 ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ๊ธฐ๋ณธ ์šฉ์–ด ๋ฆด๋ ˆ์ด์…˜(relation) 2์ฐจ์› ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋กœ ์ €์žฅํ•œ ๊ฒƒ ํŒŒ์ผ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ๊ด€์ ์—์„œ ํŒŒ์ผ(file)์— ๋Œ€์‘ ์†์„ฑ(attribute) ๋ฆด๋ ˆ์ด์…˜์˜ ์—ด = ์• ํŠธ๋ฆฌ๋ทฐํŠธ ํŒŒ์ผ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ๊ด€์ ์—์„œ ํ•„๋“œ(field)์— ๋Œ€์‘ ํˆฌํ”Œ(tuple) ๋ฆด๋ ˆ์ด์…˜์˜ ํ–‰ ํŒŒ์ผ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ๊ด€์ ์—์„œ ๋ ˆ์ฝ”๋“œ(record)์— ๋Œ€์‘ ๋„๋ฉ”์ธ(domain) ํ•˜๋‚˜์˜ ์†์„ฑ์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’์˜ ์ง‘ํ•ฉ ์†์„ฑ ..

[DB] ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)

4์žฅ. ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง๊ณผ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ๊ฐœ๋… ๊ฐœ์ฒด - ๊ด€๊ณ„ ๋ชจ๋ธ ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ: ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋ธ๋ง ํ•˜๋Š” ๋„๊ตฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง๊ณผ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ๊ฐœ๋… ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ํ˜„์‹ค ์„ธ๊ณ„์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ปดํ“จํ„ฐ ์„ธ๊ณ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์˜ฎ๊ธฐ๋Š” ๋ณ€ํ™˜ ๊ณผ์ • (ํ˜„์‹ค ์„ธ๊ณ„์— ์กด์žฌํ•˜๋Š” data๋Š” ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— data์˜ ์„ ๋ณ„ ๋˜ํ•œ ๊นŠ์€ ๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์˜ ํ•ต์‹ฌ ๊ณผ์ • ์ถ”์ƒํ™” ์ €์žฅํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”, ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„์•ผ ํ•จ. (ํŠน์„ฑ, ์†์„ฑ, ๊ณผ์ •) (๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด์—์„œ ์ถ”์ƒํ™”์˜ ๊ฒฐ๊ณผ๋กœ java๊ฐ€ class๋กœ ๋ณ€ํ™˜๋จ) 2๋‹จ๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๊ฐœ๋…์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง: ํ˜„์‹ค ์„ธ๊ณ„์˜ ์ค‘์š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ด ๊ฐœ๋… ์„ธ๊ณ„๋กœ ์˜ฎ๊ธฐ๋Š” ์ž‘์—… ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง: ๊ฐœ๋… ์„ธ๊ณ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ๋กœ ..

728x90