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

Deep knowledge/โœ” ๋งˆ์ผ€ํ„ฐ์˜ ๋ฐ์ดํ„ฐ ๋ถ„์„

SQL๊ฐœ๋ฐœ์ž-3: ORDER BY(์ •๋ ฌ), WHERE(์กฐ๊ฑด์ ˆ)

ํ•จ์ˆ˜

1) ORDER BY (์ •๋ ฌ)

2) WHERE (์กฐ๊ฑด์ ˆ)

    2-1) BETWEEN

    2-2) IN

    2-3) LIKE

    2-4) NULL

3) ํ•จ์ˆ˜

4) GROUP BY, HAVING ์ ˆ


1) ORDER BY (์ •๋ ฌ)

SELECT
    ์ปฌ๋Ÿผ๋ช…
FROM ํ…Œ์ด๋ธ”๋ช…
ORDER BY ์ปฌ๋Ÿผ๋ช… [ASC / DESC];
ASC ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ (์ƒ๋žต ์‹œ ๊ธฐ๋ณธ๊ฐ’)
DESC ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ

 

  • SELECT๋ฌธ์˜ ๋ฐ˜๋“œ์‹œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์œ„์น˜, ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์ • ์‹œ ์ˆœ์„œ๋Œ€๋กœ ์ ์šฉ
  • NULL์€ ๋น„๊ต ๋ถˆ๊ฐ€

 

2) WHERE ์กฐ๊ฑด๋ฌธ: ํŠน์ • ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ํ–‰์„ ์กฐํšŒ

WHERE ์กฐ๊ฑด๋ฌธ์ด ์—†์œผ๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์กฐํšŒ

SELECT
    ์ปฌ๋Ÿผ๋ช…1,
    ์ปฌ๋Ÿผ๋ช…2
FROM ํ…Œ์ด๋ธ”๋ช…
WHERE ์กฐ๊ฑด;

A = B A์™€ B๊ฐ€ ๊ฐ™๋‹ค.
 A > B A๊ฐ€ B๋ณด๋‹ค ํฌ๋‹ค.
A < B A๊ฐ€ B๋ณด๋‹ค ์ž‘๋‹ค.
A >= B A๊ฐ€ B๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.
A <= B A๊ฐ€ B๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.
A != B A์™€ B๊ฐ€ ๋‹ค๋ฅด๋‹ค.

 

tip!

> ์กฐํšŒํ•  ๋•Œ ์ˆœ์„œ: FROM -> WHERE -> SELECT

> SELECT๋ฅผ ์“ฐ๊ณ  FROM์„ ์“ด ํ›„, SELECT ๋’ค์—์„œ ctrl+space bar๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ž๋™ ์™„์„ฑ์„ ์œ„ํ•œ ์ปฌ๋Ÿผ์ด ๋‚˜์˜ด

check point! WHERE ์กฐ๊ฑด์—์„œ

AND ๋Š” ๋‘ ๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋‹ค ๋งŒ์กฑ (์–‘์ชฝ ๋‹ค TRUE)

OR๋Š” ๋‘˜ ์ค‘ ํ•œ ๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑ (๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ TRUE๋ฉด ๋จ)

 

2-1) AND์™€ BETWEEN ๋น„๊ต

check point! 500์—์„œ 1000 ์‚ฌ์ด ๊ฐ’์„ ๊ตฌํ•  ๋•Œ, BETWEEN์€ ๊ฐ™๊ฑฐ๋‚˜ ์กฐ๊ฑด๋„ ํฌํ•จ๋จ

๊ทธ๋ฆฌ๊ณ , 500<=salary<=1000์€  ์‹คํ–‰ ์•ˆ๋จ

 

2-2) OR์—ฐ์‚ฐ๊ณผ IN์—ฐ์‚ฐ ๋น„๊ต

check point! ๊ฐ’์ด 20์ด๊ฑฐ๋‚˜ 40์ธ ๊ฐ’ → ์ฆ‰, ๊ฐ™์€ ๊ฐ’์ด ์ถ”์ถœ๋จ

 

NOT IN

check point! ๊ฐ’์ด 20์ด ์•„๋‹ˆ๊ณ  40์ด ์•„๋‹Œ ๊ฐ’ → ์ฆ‰, ๊ฐ™์€ ๊ฐ’์ด ์ถ”์ถœ๋จ

 

2-3) LIKE ์—ฐ์‚ฐ์ž

- ํŠน์ • ๋‹จ์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ ์กฐ๊ฑด

 

% 0๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ž
_ 1๊ฐœ์˜ ๋ฌธ์ž

check point! '๊น€'์”จ ํ•™์ƒ ์กฐํšŒ / '์ธ'์œผ๋กœ ๋๋‚˜๋Š” ํ•™์ƒ ์กฐํšŒ

 

 

%์™€ _ ์˜ ์ฐจ์ด

_๋Š” ๋ช…ํ™•ํ•œ ๊ฐœ์ˆ˜๋ฅผ ํ‘œํ˜„

check point!  %์™€ _ ์˜ ์ฐจ์ด / %๋Š” 0๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ž, _๋Š” ๋ช…ํ™•ํ•œ ๊ฐœ์ˆ˜๋ฅผ ํ‘œํ˜„

 

check point!  %์™€ _๋ฅผ ์•ž, ๋’ค ๋ฐฐ์น˜ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์„ž์–ด ์“ฐ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ

 

2-4) NULL

- NULL์˜ ํŠน์ง•

  • NULL์€ ๋ชจ๋ฅด๋Š” ๊ฐ’์„ ์˜๋ฏธ
  • NULL์€ ๊ฐ’์˜ ๋ถ€์žฌ
  • NULL๊ณผ ์ˆซ์ž ํ˜น์€ ๋‚ ์งœ๋ฅผ ๋”ํ•˜๋ฉด NULL์ด ๋œ๋‹ค.
  • NULL๊ณผ ์–ด๋–ค ๊ฐ’์„ ๋น„๊ตํ•  ๋•Œ, '์•Œ ์ˆ˜ ์—†์Œ'์ด ๋ฐ˜ํ™˜

- NULL๊ฐ’ ์กฐํšŒ

  • NULL๊ฐ’์„ ์กฐํšŒํ•  ๊ฒฝ์šฐ IS NULL์„ ์‚ฌ์šฉํ•˜๊ณ , NULL๊ฐ’์ด ์•„๋‹Œ ๊ฒƒ์„ ์กฐํšŒํ•  ๊ฒฝ์šฐ IS NOT NULL์„ ์‚ฌ์šฉ
NULL ํ•จ์ˆ˜ ์„ค๋ช…
NVL ํ•จ์ˆ˜ - NULL์ด๋ฉด ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ๋Š” ํ•จ์ˆ˜
- NVL(MGR, 0)์€ MGR ์นผ๋Ÿผ์ด NULL์ด๋ฉด 0์œผ๋กœ ๋ฐ”๊พผ๋‹ค.
NVL2 ํ•จ์ˆ˜ - NVLํ•จ์ˆ˜์™€ DECODEํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜๋กœ ๋งŒ๋“  ๊ฒƒ์ด๋‹ค.
- NVL2(MGR, 1, 0)์€ MGR์นผ๋Ÿผ์ด NULL์ด ์•„๋‹ˆ๋ฉด 1์„, NULL์ด๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
NULLIF ํ•จ์ˆ˜ - ๋‘ ๊ฐœ์˜ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด NULL์„, ๊ฐ™์ง€ ์•Š์œผ๋ฉด ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
- NULLIF(exp1, exp2)์€ exp1๊ณผ exp2๊ฐ€ ๊ฐ™์œผ๋ฉด NULL์„, ๊ฐ™์ง€ ์•Š์œผ๋ฉด exp1์„ ๋ฐ˜ํ™˜
COALESCE - NULL์ด ์•„๋‹Œ ์ตœ์กฐ์˜ ์ธ์ž ๊ฐ’์„ ๋ฐ˜ํ™˜
- COALESCE(exp1, exp2, exp3, ...) exp1์ด NULL์ด ์•„๋‹ˆ๋ฉด exp1์˜ ๊ฐ’์„, 
  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ทธ ๋’ค์˜ ๊ฐ’์˜ NULL ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜์—ฌ ๊ฐ’์„ ๋ฐ˜ํ™˜