๊ด€๋ฆฌ ๋ฉ”๋‰ด

JiYoung Dev ๐Ÿ–ฅ

[Oracle Database] SELECT - ๋ฐ์ดํ„ฐ ์กฐํšŒ, DISTINCT, AS / WHERE / AND, OR ์—ฐ์‚ฐ์ž ๋ณธ๋ฌธ

full stack/database

[Oracle Database] SELECT - ๋ฐ์ดํ„ฐ ์กฐํšŒ, DISTINCT, AS / WHERE / AND, OR ์—ฐ์‚ฐ์ž

Shinjio 2023. 3. 19. 14:07

2023.03.16 ~ ํ•™์Šต ๋‚ด์šฉ

์ฐธ๊ณ ์ž๋ฃŒ : ์˜ค๋ผํด๋กœ ๋ฐฐ์šฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž…๋ฌธ

 

๐Ÿ”Ž ์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” SQL, ์กฐํšŒ(SELECT)

 

SQL ์ž‘์„ฑ ๊ทœ์น™
1. ํ•œ ์ค„ ์ฃผ์„ : ' -- '
2. ์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„ : ' /*  */ '
3. ํ•ญ์ƒ ๋ฌธ๋ฒ•์ด ๋๋‚˜๋ฉด ' ; '  ์ž‘์„ฑ
4. ๋ฌธ์ž์—ด ์ž‘์„ฑ ์‹œ์—๋Š” ์ž‘์Œ ๋”ฐ์˜ดํ‘œ( ' ' ) ์‚ฌ์šฉ
5. SQL๋ฌธ์€ ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•จ

 

๐Ÿ“– SQL ์‹คํ–‰ ์ˆœ์„œ

์ฝ”๋“œ ์ž‘์„ฑ์‹œ SELECT์™€ FROM์€ ํ•„์ˆ˜๋กœ ์ž‘์„ฑํ•˜๋ฉฐ ๋‚˜๋จธ์ง€๋Š” ํ•„์š”์— ๋”ฐ๋ผ ์ž‘์„ฑ

 

 

๐Ÿ“– SELECT๋ฌธ์˜ ๊ธฐ๋ณธ ํ˜•์‹

โš™ DESC

DESC๋กœ ํ…Œ์ด๋ธ”์˜ ๊ตฌ์„ฑ ํ™•์ธ

 

 

โ€ป ์˜๋ฌธ์€ ํ•œ ๊ธ€์ž๋‹น 1byte, ํ•œ๊ธ€์€ ํ•œ ๊ธ€์ž๋‹น 2byte๋ฅผ ์ฐจ์ง€

โ€ป SQL๋ฌธ์„ ์ž‘์„ฑํ•  ๋•Œ ํ…Œ์ด๋ธ” ์ด๋ฆ„๊ณผ ์—ด ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž๋กœ ์“ฐ๊ธฐ๋ฅผ ๊ถŒ์žฅ. SQL๋ฌธ์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Œ์œผ๋กœ ๋Œ€์†Œ๋ฌธ์ž๊ฐ€ ์„ž์—ฌ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ SQL๋ฌธ์„ ๊ตฌ๋ถ„ํ•˜๊ณ  ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์‹ค๋ฌด์—์„œ๋Š” SQL๋ฌธ ์ „์ฒด๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์‚ฌ์šฉ

 

โš™ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ• - ์…€๋ ‰์…˜, ํ”„๋กœ์ ์…˜, ์กฐ์ธ

์…€๋ ‰์…˜(selection)

ํ–‰ ๋‹จ์œ„๋กœ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ…Œ์ด๋ธ” ์ „์ฒด ๋ฐ์ดํ„ฐ ์ค‘ ๋ช‡๋ช‡ ๊ฐ€๋กœ์ค„์˜ ๋ฐ์ดํ„ฐ๋งŒ ์„ ํƒํ•  ๋•Œ ์‚ฌ์šฉ

 

ํ”„๋กœ์ ์…˜(projection)

์—ด ๋‹จ์œ„๋กœ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐฉ์‹

 

์กฐ์ธ(join)

๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ์–‘ ์˜†์— ์—ฐ๊ฒฐํ•˜์—ฌ ๋งˆ์น˜ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐฉ์‹

 

โš™ SELECT๋ฌธ

SELECT๋ฌธ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ณด๊ด€๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

SELECT์ ˆ๊ณผ FROM์ ˆ์„ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์œผ๋กœ SELECT๋ฌธ์„ ์ž‘์„ฑ

FROM์ ˆ์€ ์กฐํšŒํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ๋ช…์‹œ, SELECT์ ˆ์€ FROM์ ˆ์—์„œ ๋ช…์‹œํ•œ ํ…Œ์ด๋ธ”์—์„œ ์กฐํšŒํ•  ์—ด์ด๋‚˜ ์—ฌ๋Ÿฌ ์—ด์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์กฐํ•ฉ ๋˜๋Š” ์—ฐ์‚ฐ์‹์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ

 

โš™ * ์• ์Šคํ„ฐ๋ฆฌ์Šคํฌ

๋ชจ๋“  ์ปฌ๋Ÿผ์„ ์„ ํƒํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ณฑํ•˜๊ธฐ ์—ฐ์‚ฐ ์‹œ ์‚ฌ์šฉ

๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ์ปฌ๋Ÿผ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜๋Š”์ง€ ํ™•์ธ์ด ์–ด๋ ต๊ณ , ์„ฑ๋Šฅ์ด ๊ฐ์†Œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค๋ฌด์—์„œ๋Š” ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ. 

 

โ–ผ ์ง์› ํ…Œ์ด๋ธ”์—์„œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ

 

โ–ผ ์ง์› ํ…Œ์ด๋ธ”์—์„œ ์ง์›ID, ์ด๋ฆ„, ์„ฑ๋ณ„, ๋‚˜์ด ์กฐํšŒํ•˜๊ธฐ

 

โš™ DISTINCT

SELECT๋ฌธ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ ํ›„ DISTINCT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต์„ ์ œ๊ฑฐ

SELECT์ ˆ์— ์—ด ์ด๋ฆ„์„ ๋ช…์‹œํ•˜๊ธฐ ์ „์— ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

์นผ๋Ÿผ์ด ์—ฌ๋Ÿฌ๊ฐœ์ผ ๊ฒฝ์šฐ์—๋Š” ์ด๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•จ

 

โ–ผ DISTINCT๋กœ ์ค‘๋ณต๊ฐ’ ์ œ๊ฑฐํ•˜๊ธฐ

 

โš™ AS

SELECT ๋ถ€๋ถ„์—์„œ ์ถœ๋ ฅํ•˜๋ ค๋Š” ์นผ๋Ÿผ์˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์คŒ

SELECT์ ˆ์— ๋ช…์‹œํ•œ ์—ด ์ด๋ฆ„์ด ๊ฒฐ๊ณผ ํ™”๋ฉด ์œ„์ชฝ์— ์ถœ๋ ฅ๋จ. SQL๋ฌธ์—์„œ๋Š” ์ตœ์ข… ์ถœ๋ ฅ๋˜๋Š” ์—ด ์ด๋ฆ„์„ ์ž„์˜๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ. ์ด๋ ‡๊ฒŒ ๋ณธ๋ž˜ ์—ด ์ด๋ฆ„ ๋Œ€์‹  ๋ถ™์ด๋Š” ์ด๋ฆ„์„ ๋ณ„์นญ(alias)๋ผ๊ณ  ํ•จ

 

AS ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ
1. ์ด๋ฆ„์—๋Š” ๋„์–ด์“ฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ. ๋„์–ด์“ฐ๊ธฐ ๋Œ€์‹  ์–ธ๋”๋ฐ” ์‚ฌ์šฉ
2. ์ˆซ์ž๋ฅผ ๋จผ์ € ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
3. ํŠน์ˆ˜๋ฌธ์ž๋Š” $, _, #๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
4. ์˜ˆ์•ฝ์–ด(SELECT, FROM, AS ๋“ฑ๊ณผ ๊ฐ™์ด ์ด๋ฏธ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋Š” ๋ฌธ๋ฒ•)๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ

 

โ–ผ alias ์‚ฌ์šฉ ์ „

 

โ–ผ alias ์‚ฌ์šฉ ํ›„

 

โš™ NULL

์•„์ง ์ •ํ•ด์ง€์ง€ ์•Š์€ ๊ฐ’์„ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ

 

NULL์ด ํ•„์š”ํ•œ ์ด์œ 

1) ์•„์ง ์–ด๋–ค ๊ฐ’์ด ๋“ค์–ด์˜ค์ง€ ์•Š์•˜์Œ์„ ํ‘œํ˜„

2) ํ…Œ์ด๋ธ” ํŠน์„ฑ์ƒ ํ–‰๊ณผ ์—ด์˜ ํ˜•ํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋นˆ ์นธ์— NULL ๊ฐ’์„ ๋„ฃ์–ด์„œ ํ–‰๊ณผ ์—ด์˜ ํ˜•ํƒœ ์œ ์ง€

 

๐Ÿ”Ž WHERE์ ˆ๊ณผ ์—ฐ์‚ฐ์ž

๐Ÿ“– WHERE์ ˆ

WHERE์ ˆ์€ SELECT๋ฌธ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ํŠน์ • ์กฐ๊ฑด์„ ๊ธฐ์ค€์œผ๋กœ ์›ํ•˜๋Š” ํ–‰์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

 

SELECT [์กฐํšŒํ•  ์—ด1 ์ด๋ฆ„], [์—ด2 ์ด๋ฆ„], ..., [์—ดN ์ด๋ฆ„]     (3) SELECT์—์„œ ๊ฐ€์ ธ์˜ค๋ ค๋Š” ์นผ๋Ÿผ์„ ๊ณจ๋ผ ์ถœ๋ ฅ
   FROM [์กฐํšŒํ•  ํ…Œ์ด๋ธ” ์ด๋ฆ„]     (1) ํ…Œ์ด๋ธ”์„ ๊ฐ€์ ธ์˜ด
 WHERE [์กฐํšŒํ•  ํ–‰์„ ์„ ๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์‹] ;     (2) WHERE ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ํ–‰(ํŠœํ”Œ)์„ ๊ณ ๋ฆ„

 

WHERE์ด ํฌํ•จ๋œ SELECT๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด ์กฐํšŒํ•  ํ…Œ์ด๋ธ”์˜ ๊ฐ ํ–‰์— WHERE์ ˆ์˜ ์กฐ๊ฑด์‹์„ ๋Œ€์ž…ํ•˜์—ฌ ๊ฒฐ๊ณผ๊ฐ€ '์ฐธ'์ธ ๊ฒฝ์šฐ์—๋งŒ ์ถœ๋ ฅ

 

โ–ผ WHERE์ ˆ ๋ฌธ์ œํ’€์ด

 

๐Ÿ“–  AND, OR ์—ฐ์‚ฐ์ž

WHERE์ ˆ์—์„œ๋Š” ์กฐ๊ฑด์‹์„ ์—ฌ๋Ÿฌ๊ฐœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ. ์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž AND, OR

 

AND ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ๊ฒฐ๊ณผ

ํ”ผ์—ฐ์‚ฐ์ž TRUE FALSE
TRUE TRUE FALSE
FALSE FALSE FALSE

 

OR ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ๊ฒฐ๊ณผ

ํ”ผ์—ฐ์‚ฐ์ž TRUE FALSE
TRUE TRUE TRUE
FALSE TRUE FALSE

 

โ€ป WHERE์ ˆ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์‹์˜ ๊ฐœ์ˆ˜๋Š” ์‚ฌ์‹ค์ƒ ์ œํ•œ์ด ์—†๋‹ค๊ณ  ๋ณด์•„๋„ ๋ฌด๋ฐฉํ•จ

โ€ป ๋ณดํ†ต ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉํ•˜๋Š” SELECT๋ฌธ์€ OR ์—ฐ์‚ฐ์ž๋ณด๋‹ค AND ์—ฐ์‚ฐ์ž๋ฅผ ๋งŽ์ด ์‚ฌ์šฉ. ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์„ ํ•œ ๋ฒˆ์— ๋งŒ์กฑ์‹œํ‚ค๋Š” ๋ฐ์ดํ„ฐ๋งŒ์„ ์ถ”์ถœํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ

 

โ–ผ AND, OR ์—ฐ์‚ฐ์ž ํ™œ์šฉ ์—ฌ๋Ÿฌ ์กฐ๊ฑด WHERE์ ˆ ๋ฌธ์ œํ’€์ด