๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ”ฌapplication/- Database

[SQL๋ฌธ ๊ธฐ์ดˆ] SQL-SELCET ๋ฌธ์˜ ์‚ฌ์šฉ๋ฒ• ๋ฐ ์˜ˆ์ œ (1)

by Wonit 2020. 4. 10.

SQL(Structured Querey Language) ์ค‘์— SELECT ๋ฌธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

SELECT

SELECT๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ SQL ๋ช…๋ น๋ฌธ์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด ์ค‘ ํ•˜๋‚˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

๊ธฐ๋ณธ ์‚ฌ์šฉ ํ˜•์‹

SELECT [DISTINCT] {*, column[Alias]}
FROM table_name;

๊ธฐ๋ณธ์ ์ธ ํ˜•์‹์€ ์œ„์™€ ๊ฐ™๊ณ  [] ์€ ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•œ ๋‚ด์šฉ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.

 

SELECT ๋ฌธ์˜ ํ˜•์‹์ค‘ ํ•„์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ๋Š” SELECT์™€ FROM ์ด๋‹ค.

 

DISTINCT๋Š” ์ค‘๋ณต๋œ ์ ˆ์„ ์ œ๊ฑฐํ•˜๊ณ  ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ * ๋งˆํฌ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉ๋˜๊ณ  ํŠน์ • ์นผ๋Ÿผ์„ ์ฐธ์กฐํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” columnlist๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์•„๋ž˜์—์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž.

 

SELECT ๋ฌธ์„ ์‚ฌ์šฉํ•ด๋ณด์ž.

Oracle DB ์˜ EMP ํ…Œ์ด๋ธ” ๋‚ด ๋ฐ์ดํ„ฐ

 

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ `EMP` ํ…Œ์ด๋ธ” ์•ˆ์— ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ์•„๋ž˜์˜ ๋ฌธ๋ฒ•์„ ์ ์šฉ์‹œ์ผœ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ค„๋ณด์ž.

 

SELECT          [DISTINCT]{* | column[alias]...}
FROM            table
[WHERE           condition]
[GROUP BY       group_by_expression]
[HAVING         group condition]
[ORDER BY]     column];
  • SELECT : DISTINCT๋ฅผ ํ†ตํ•ด์„œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ๋‹ค. (ํ–‰์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด๋‹ค.)
  • FROM : ์งˆ์˜์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์—ด๊ฑฐํ•œ๋‹ค.
  • WHERE : ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ๋“ฌ (WHERE์ ˆ ์•ˆ์— ๋˜ ๋‹ค๋ฅธ SELECT๋ฅผ ํฌํ•จ์‹œ์ผœ ์ค‘์ฒฉ ์งˆ์˜๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.)
  • GROUP BY: ๊ทธ๋ฃนํ™” ํ•ด์„œ ์ถœ๋ ฅ (ex ๋‚จ์ž์˜ ํ‰๊ท ํ‚ค, ์—ฌ์ž์˜ ํ‰๊ท  ํ‚ค)
  • HAVING : ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์กฐ๊ฑด ์ผ๋ฐ˜์ ์œผ๋กœ GROUP BY์™€ ํ•จ๊ป˜ ๋‚˜์™€์•ผ ํ•œ๋‹ค. ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์กฐ๊ฑด
  • ORDER BY: ๊ฒ€์ƒ‰ ํ›„ ์ •๋ ฌ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

 

์‚ฐ์ˆ  ์—ฐ์‚ฐ

 

์‚ฐ์ˆ  ์—ฐ์‚ฐ์€ ์ปฌ๋Ÿผ ๊ฐ’์— ์‚ฐ์ˆ  ์—ฐ์‚ฐ(+, -, /) ๋“ฑ์„ ์ ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ๋œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์ˆ˜ํ•™์˜ ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„์˜ ๋ฒ•์น™์ด ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋œ๋‹ค.

 

์ฃผ์˜ํ•ด์•ผํ•  ์ ์€ ์ˆซ์ž ๋˜๋Š” ๋‚ ์งœ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ์—๋งŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ…Œ์ด๋ธ” ๊ฒ€์ƒ‰

 

ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ

 

์œ„์˜ ํ…Œ์ด๋ธ” ๋‚ด์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ * ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

EMP ํ…Œ์ด๋ธ”

SELECT * 
FROM emp;

 

ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์นผ๋Ÿผ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ

* ๋ฌธ์ž๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ถˆ๋Ÿฌ์™”๋Š”๋ฐ ๋งŒ์•ฝ ์ด๋ฆ„๊ณผ ๊ธ‰์—ฌ์— ๊ด€ํ•œ ์ •๋ณด๋งŒ ๋ถ€๋ฅด๊ณ  ์‹ถ๋‹ค?


๊ทธ๋Ÿผ * ๋ฌธ์ž ๋Œ€์‹  ์กฐํšŒํ•  ํ…Œ์ด๋ธ”์˜ column ์ด๋ฆ„์„ ์จ์ฃผ๋ฉด ๋œ๋‹ค.

 

SELECT ename, job, sal
FROM emp;

 

์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ์ด์šฉํ•˜์—ฌ ๊ธ‰์—ฌ์˜ ์ถ”๊ฐ€ ์ˆ˜๋‹น ๊ณ„์‚ฐํ•˜๊ธฐ

SELECT๋กœ ๋ฐ์ดํ„ฐ์˜ ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.


๋ฌธ๋ช… ์œ„์—์„œ ๋ง ํ•˜๊ธธ SELECT๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ SELECT๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋ƒ? ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ
๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•œ ๋‚ด์šฉ์„ ๋ฟŒ๋ ค์ฃผ๋Š” ์›๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ์˜ ์กฐ์ž‘์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.


์—„๊ฒฉํžˆ ๋ง์„ ํ•˜์ž๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.


๊ทธ๋Ÿผ ์ง์› ํ…Œ์ด๋ธ”์—์„œ ๊ธ‰์—ฌ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์™€ 50์„ ๋”ํ•ด ์ถ”๊ฐ€๊ธˆ์„ ๊ณ„์‚ฐํ•ด๋ณด๋Š” ์ฟผ๋ฆฌ๋ฌธ์„ ๋งŒ๋“ค์–ด ๋ณด์ž.

 

์‰ฝ๋‹ค. ๋‹จ์ง€ ์ˆ˜์‹(+, -,/) ์„ ์ž…๋ ฅํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

 

NULL์˜ ๊ฐœ๋…

 

์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’ NULL์€ 0 ๋˜๋Š” ๋น„์–ด์žˆ์Œ์„ ์˜๋ฏธํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ์˜ NULL์˜ ์˜๋ฏธ๋Š” ๊ธฐ์กด์˜ NULL๊ณผ ๊ฐ™์ง€๋งŒ ๋‹ค๋ฅธ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š”๋‹ค.

  • NULL์ด๋ผ๊ณ  ํ•ด์„œ ๊ฐ’์ด 0์ด๋ผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ๊ฐ’์ด ํŒŒ์•…์ด ๋ถˆ๊ฐ€๋Šฅํ•จ์„ ๋œปํ•œ๋‹ค.
  • ๊ฐ’์ด ํŒŒ์•…์ด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์‚ฐ, ํ• ๋‹น, ๋น„๊ต๊ฐ€ ๋ถˆ๊ฐ€ํ•˜๋‹ค.

๋‹ค์‹œ ๋ชจ๋“  ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•ด๋ณด๋ฉด comm์ด๋ผ๋Š” ์นผ๋Ÿผ์— ์•„๋ž˜์™€ ๊ฐ™์ด NULL ๊ฐ’์ด ์žˆ๋Š” ํ•ญ์ด ์žˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ๊ฐ’๋“ค์€ ์—ฐ์‚ฐ ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 0์ด๋ผ๋Š” ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ถˆํŽธํ•จ์„ ์œ„ํ•ด NVL ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

NULL์˜ ๋ถˆํŽธํ•จ์„ ํ•ด์†Œํ•ด์ค„ NVLํ•จ์ˆ˜

NVL ํ•จ์ˆ˜๋Š”

NVL(expression1, expression2)

๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • expression1 : NULL ์„ ํฌํ•จํ•˜๋Š” ์นผ๋Ÿผ ๋˜๋Š” ํ‘œํ˜„์‹
  • expression2 : NULL ๊ฐ’์„ ๋Œ€์ฒดํ•  ๋‹ค๋ฅธ ๊ฐ’
์ฃผ์˜ : expression1, expression2 ๋Š” ๋ฐ˜๋“œ์‹œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด์–ด์•ผ ํ•œ๋‹ค.

NULL์ด ์กด์žฌํ•˜๋Š” ์นผ๋Ÿผ์„ ์‚ฐ์ˆ ์—ฐ์‚ฐ ์‹œ์ผœ sal์— ํ•ฉ์ณ๋ณด๋ฉด sal์€

 

์œ„์™€ ๊ฐ™์ด NULL๋กœ ์ถœ๋ ฅ์ด ๋œ๋‹ค.

 

์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฉ๊ธˆ ๋ฐฐ์› ๋˜ NVL์„ ์‚ฌ์šฉํ•ด์„œ null์ด ์•„๋‹ˆ๋ผ 0์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์˜์ ์œผ๋กœ ์ƒ์„ฑํ•˜์—ฌ ๊ฐ’์„ ๊ณ„์‚ฐํ•ด๋ณด์ž.

 

์งœ์ž”

์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค.

 

column์— ์ด๋ฆ„์„ ๋ถ™ํ˜€์ฃผ๋Š” as ํ‚ค์›Œ๋“œ

์œ„์™€ ๊ฐ™์ด ์šฐ๋ฆฌ๊ฐ€ ๊ฒ€์ƒ‰ํ•œ ๊ฒƒ๋“ค์ด ename, sal, comm ํ˜•์‹์œผ๋กœ ๋‚˜์˜ค๋ฉด ๊ตฌ๋ถ„ํ•˜๊ธฐ ํž˜๋“ค ๋•Œ๊ฐ€ ์žˆ๋‹ค.


์ด๋Ÿฐ ํž˜๋“  ์ ์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด์„œ as ํ‚ค์›Œ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

SELECT column_name as ๋ณ„์นญ
FROM EMP;

๋ฐฑ๋ฌธ์ด ๋ถˆ์—ฌ์ผ๊ฒฌ ํ•œ ๋ฒˆ ๋ด๋ณด์ž.

์ด์ œ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์‰ฌ์›Œ์กŒ๋‹ค!!

 

์ถ”๊ฐ€์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„ ๋˜๋Š” ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” "" ๋กœ ๋ฌธ์ž์—ด์„ ๋ฌถ์–ด์ฃผ๋ฉด

 

 

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” WHERE์™€ GROUP BY ๋“ฑ ๋‚จ์€ SELECT ๋ฌธ์˜ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž!

๋Œ“๊ธ€