๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ–ฅ๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/SQL15

[Oracle] Constraint ์ œ์•ฝ์กฐ๊ฑด ์ œ์•ฝ์กฐ๊ฑด์˜ ๊ฐœ๋… ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€๋ฅผ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉํ•จ ์ œ์•ฝ์กฐ๊ฑด์„ ๋งŒ๋“  ์ด์œ : DB๋ณดํ˜ธ(์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ์ด๋‚˜ ์‹ค์ˆ˜๋“ฑ์„ ๋ฐฉ์ง€ํ•จ) ํ…Œ์ด๋ธ”๊ณผ ๋”ฐ๋กœ ์ƒ์„ฑ๋จ ๋ชจ๋“  ์ œ์•ฝ์กฐ๊ฑด์€ ๋ฐ์ดํ„ฐ์‚ฌ์ „์— ์ €์žฅ๋จ ์˜๋ฏธ์ด๋ฆ„ ๋ถ€์—ฌํ•˜๋ฉด ์ข‹์Œ ์ œ์•ฝ์กฐ๊ฑด ์ •์˜ ๋ ˆ๋ฒจ: โ‘ ์นผ๋Ÿผ โ‘กํ…Œ์ด๋ธ” Constraint ์ œ์•ฝ์กฐ๊ฑด์˜ ์ข…๋ฅ˜ โ‘  PK Primary Key. ํ…Œ์ด๋ธ”์— ๋‹จ ํ•˜๋‚˜๋งŒ ํ—ˆ์šฉ. PK๋Š” ๋‹จ์ผ์นผ๋Ÿผ์ด๊ฑฐ๋‚˜๋‚˜ ์—ฌ๋Ÿฌ์นผ๋Ÿผ์˜ ์กฐํ•ฉ๋„ ๊ฐ€๋Šฅ. ๋Ÿฌ์นผ๋Ÿผ์˜ ์กฐํ•ฉ์ผ ๋•Œ ๋ชจ๋“  ์นผ๋Ÿผ์ด ๊ฐ’์ด ์žˆ์–ด์•ผํ•จ. NULL๊ฐ’ ํ—ˆ์šฉX. Java์˜ Map-Key์™€ ๊ฐ™์€ ๊ฒƒ. PK๋กœ ์„ค์ •๋œ ์นผ๋Ÿผ์— ๋Œ€ํ•ด UNIQUE ์ธ๋ฑ์Šค ์ž๋™ ์ƒ์„ฑํ•จ. ์ธ๋ฑ์Šค=๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ์ค‘๋ณต ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ. โ‘ก NOT NULL NULL๊ฐ’ ํ—ˆ์šฉX โ‘ข UNIQUE ๋ชจ๋“  ํ–‰์—์„œ ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ€์ง€.. 2024. 1. 5.
[Oracle] SubQuery ์„œ๋ธŒ์ฟผ๋ฆฌ SubQuery ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฐœ๋… ํ•˜๋‚˜์˜ SELECT๋ฌธ ์•ˆ์— ํฌํ•จ๋˜์–ด์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ. ๋ณดํ†ต โ‘ ์„œ๋ธŒ์ฟผ๋ฆฌ → โ‘ก๋ฉ”์ธ์ฟผ๋ฆฌ ์ˆœ์„œ๋กœ ๊ณ„์‚ฐํ•จ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ Where์ ˆ, From์ ˆ, Having์ ˆ, Select๋ฌธ, CREAT์ ˆ, DML๋ฌธ(Insert,Update,Delete) ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๊ด„ํ˜ธ๋กœ ๋ฌถ์—ฌ์žˆ์–ด์•ผ ํ•จ. ์„œ๋ธŒ์ฟผ๋ฆฌ๊ตฌ๋ฌธ์—๋Š” Order By์ ˆ ๋ชป๋“ค์–ด๊ฐ. ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฅธ์ชฝ!์— ์œ„์น˜ํ•จ ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์ž ๋‹จ์ผํ–‰ ์—ฐ์‚ฐ์ž: = > >= < 2024. 1. 5.
[Oracle] Join์œผ๋กœ ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ, Set ์—ฐ์‚ฐ์ž ์บก์ณ์— ๋‚˜์˜จ SQL๋ฌธ๋ฒ•์€ ANSI(๋ฏธ๊ตญํ‘œ์ค€ํ˜‘ํšŒ) SQL ํ‘œ์ค€๊ณผ๋Š” ๋‹ค๋ฅธ ์˜›๋‚  ๋ฌธ๋ฒ•์ด ์‚ฌ์šฉ๋œ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ๋ธ”๋Ÿญ์„ ์ค‘์‹ฌ์œผ๋กœ ๋ด์ฃผ์„ธ์š” Join 1๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ด์˜ค๋Š” ๋ฐฉ๋ฒ•. PK์™€ FK๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋…ผ๋ฆฌ์ ์ธ ๊ฐ’๋“ค์˜ ์—ฐ๊ด€์œผ๋กœ ์„ฑ๋ฆฝ๋„ ๊ฐ€๋Šฅํ•จ. ์—ฐ๊ด€๋œ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ. ํ…Œ์ด๋ธ”๊ฐ„์˜ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ๊ฐ€ ์žˆ์„ ๋•Œ ํ•ฉ์ณ์„œ ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ”์„ ๋ณด์—ฌ์คŒ ์ •๊ทœํ™”: ํ…Œ์ด๋ธ”์„ ์ชผ๊ฐœ๋Š” ๊ฒƒ. ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•จ. ์ค‘๋ณต์ด ๋งŽ์œผ๋ฉด ๋ณ€๊ฒฝ ์‹œ ๋ณ€๊ฒฝํšŸ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉฐ ์‹ค์ˆ˜์™€ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ. Join(๋ถ™์ด๊ธฐ) ↔ ์ •๊ทœํ™”(์ชผ๊ฐœ๊ธฐ) Join ๋ฐฉ๋ฒ• ์˜๋ฏธ ์˜ˆ์‹œ EquiJoin ์นผ๋Ÿผ ๊ฐ„์˜ ๊ฐ’๋“ค์ด ์„œ๋กœ ์ •ํ™•ํžˆ ์ผ์น˜ํ•  ๋•Œ ์ง์›์ •๋ณด์˜ ๋ถ€์„œ๋ฒˆํ˜ธ & ๋ถ€์„œ์ด๋ฆ„ & ๋ถ€์„œ์˜ ์ง€์—ญ๋ฒˆํ˜ธ์™€ ์ง€์—ญ์ด๋ฆ„ Non-EquiJoin ์นผ๋Ÿผ.. 2024. 1. 5.
[Oracle] SubGroup์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ถ„๋ฅ˜ Group By ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆŒ ์นผ๋Ÿผ์„ ๋ช…์‹œํ•จ. Having Group์— ๋Œ€ํ•œ ์กฐ๊ฑด์„ ๊ธฐ์ˆ ํ•จ. ๊ทธ๋ฃนํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ ๊ทธ๋ฃนํ•จ์ˆ˜ ์‚ฌ์šฉ์‹œ ์ฃผ์˜ํ•  ์  Select์ ˆ์— ๊ทธ๋ฃนํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Select์ ˆ์˜ ๋‚˜๋จธ์ง€ ์นผ๋Ÿผ์€ Group By์ ˆ์— ๊ธฐ์ˆ ๋˜์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์กฐ๊ฑด์€ Having์ ˆ์—๋Š” ๊ธฐ์ˆ ํ•œ๋‹ค. Group By์ ˆ ์ดํ•˜์— ์นผ๋Ÿผ์„ ์—ฌ๋Ÿฌ๊ฐœ ๊ธฐ์ˆ ํ•˜๋ฉด ๊ทธ๋ฃน์„ ์„ธ๋ถ„ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. 2024. 1. 5.
[Oracle] ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๋ฐ ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ํ…Œ์ด๋ธ” ๋ช…๋ช… ๊ทœ์น™ -ํ…Œ์ด๋ธ”๋ช…, ์นผ๋Ÿผ๋ช… ๋ฌธ์ž๋กœ ์‹œ์ž‘. ์ตœ๋Œ€ 30์ž -A-Z, a-z, 0-9, _, $, # ๊ฐ€๋Šฅ -์ด๋ฆ„์ค‘๋ณต X -์˜ˆ์•ฝ์–ด X ๋ฐ์ดํ„ฐ ํƒ€์ž… -VARCHAR2(size): ๊ฐ€๋ณ€๊ธธ์ด ๋ฌธ์ž๊ฐ’. -CHAR(size): ๊ณ ์ •๊ธธ์ด ๋ฌธ์ž๊ฐ’ -NUMBER: ์ˆซ์ž, 38์ž๋ฆฌ๊นŒ์ง€ -NUMBER(p, s): ์ˆซ์ž. p์ž๋ฆฟ์ˆ˜๊นŒ์ง€ ์œ ํšจ -DATE: ๋‚ ์งœ์™€ ์‹œ๊ฐ„ -LONG: ํฐ ๊ฐ€๋ณ€๊ธธ์ด ๋ฌธ์ž๊ฐ’. ํ…Œ์ด๋ธ”๋‹น LONG์—ด์€ 1๊ฐœ๋งŒ ํ—ˆ์šฉ -RAW ๊ณผ LONGRAW: ์ด์ง„๋ฐ์ดํ„ฐ ์ €์žฅ์— ์‚ฌ์šฉ ํ…Œ์ด๋ธ” ์ƒ์„ฑ -์Šคํ‚ค๋งˆ(๊ฐ์ฒด์˜ ์ง‘ํ•ฉ. ํ…Œ์ด๋ธ” ์†Œ์œ ์ž) -ํ…Œ์ด๋ธ”๋ช…(์ƒˆ ํ…Œ์ด๋ธ” ์ด๋ฆ„) -์นผ๋Ÿผ๋ช…(์นผ๋Ÿผ์˜ ์ด๋ฆ„) -DataType(์นผ๋Ÿผ์ด ๊ฐ€์งˆ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ํฌ๊ธฐ) -Default(๋ฐ์ดํ„ฐ ์ž…๋ ฅ์‹œ ๊ธฐ๋ณธ๊ฐ’) SQL ๋ช…๋ น์–ด ๊ธฐ๋ณธ๋ถ€๋ฅ˜ ๋ถ€๋ฅ˜ ๋ช…๋ น์–ด ๋ช…๋ น์–ด R.. 2024. 1. 5.
[์œˆ๋„์šฐ ํ•จ์ˆ˜] PARTITION BY ์ ˆ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œˆ๋„์šฐ ํ•จ์ˆ˜ ์œˆ๋„์šฐ ํ•จ์ˆ˜๋ž€? ์œˆ๋„์šฐ ํ•จ์ˆ˜๋Š” ์˜ค๋ผํด ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ SQL Server, PostgreSQL, MySQL(8.0 ์ด์ƒ) ๋“ฑ ๋‹ค์–‘ํ•œ SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ ์ด ํ•จ์ˆ˜๋“ค์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ๊ฐ ๊ทธ๋ฃน ๋‚ด์—์„œ ๋ณต์žกํ•œ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ ์œˆ๋„์šฐ ํ•จ์ˆ˜ ROW_NUMBER(): ๊ฐ ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ์˜ ํ–‰ ์ˆœ์„œ๋ฅผ ๋ฐ˜ํ™˜ํ•จ RANK(): ํŠน์ • ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ฐ ํ–‰์— ์ˆœ์œ„๋ฅผ ๋งค๊น€. ๊ฐ™์€ ๊ฐ’์ด๋ฉด ๊ฐ™์€ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜๋ฉฐ, ์ˆœ์œ„์— ๊ณต๋ฐฑ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ DENSE_RANK(): RANK()์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๊ณต๋ฐฑ ์—†๋Š” ์—ฐ์†์ ์ธ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•จ SUM(): ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ์˜ ํ•ฉ๊ณ„๋ฅผ ๊ณ„์‚ฐ AVG(): ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ์˜ ํ‰๊ท ๊ฐ’์„ ๊ณ„์‚ฐ MIN() ๋ฐ MAX(): ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ์˜ ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์„ ๊ณ„์‚ฐ LEAD() ๋ฐ LAG():.. 2023. 12. 14.
[Oracle] ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๋ฐ ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ํ…Œ์ด๋ธ” ๋ช…๋ช… ๊ทœ์น™ ํ…Œ์ด๋ธ”๋ช…, ์นผ๋Ÿผ๋ช… ๋ฌธ์ž๋กœ ์‹œ์ž‘. ์ตœ๋Œ€ 30์ž A-Z, a-z, 0-9, _, $, # ๊ฐ€๋Šฅ ์ด๋ฆ„์ค‘๋ณต X ์˜ˆ์•ฝ์–ด X ๋ฐ์ดํ„ฐ ํƒ€์ž… VARCHAR2(size) ๊ฐ€๋ณ€๊ธธ์ด ๋ฌธ์ž๊ฐ’. CHAR(size) ๊ณ ์ •๊ธธ์ด ๋ฌธ์ž๊ฐ’ NUMBER ์ˆซ์ž, 38์ž๋ฆฌ๊นŒ์ง€ NUMBER(p, s) ์ˆซ์ž. p์ž๋ฆฟ์ˆ˜๊นŒ์ง€ ์œ ํšจ DATE ๋‚ ์งœ์™€ ์‹œ๊ฐ„ LONG ํฐ ๊ฐ€๋ณ€๊ธธ์ด ๋ฌธ์ž๊ฐ’. ํ…Œ์ด๋ธ”๋‹น LONG์—ด์€ 1๊ฐœ๋งŒ ํ—ˆ์šฉ RAW ๊ณผ LONGRAW ์ด์ง„๋ฐ์ดํ„ฐ ์ €์žฅ์— ์‚ฌ์šฉ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์Šคํ‚ค๋งˆ ๊ฐ์ฒด์˜ ์ง‘ํ•ฉ. ํ…Œ์ด๋ธ” ์†Œ์œ ์ž ํ…Œ์ด๋ธ”๋ช… ์ƒˆ ํ…Œ์ด๋ธ” ์ด๋ฆ„ ์นผ๋Ÿผ๋ช… ์นผ๋Ÿผ์˜ ์ด๋ฆ„ DataType ์นผ๋Ÿผ์ด ๊ฐ€์งˆ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ํฌ๊ธฐ Default ๋ฐ์ดํ„ฐ ์ž…๋ ฅ์‹œ ๊ธฐ๋ณธ๊ฐ’ SQL ๋ช…๋ น์–ด ๋ถ„๋ฅ˜ ๋ฐ์ดํ„ฐ์กฐ์ž‘ ๋ช…๋ น์–ด(DML) Insert ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ํ–‰ ์‚ฝ์ž…. ์ž…๋ ฅ๋˜๋Š” .. 2023. 11. 11.