SQL ์‹œ๋ฆฌ์ฆˆ (3์žฅ) ๐Ÿชด

On a regular basisยท2021๋…„ 8์›” 13์ผ
0

SQL ์‹œ๋ฆฌ์ฆˆ ๐Ÿช“

๋ชฉ๋ก ๋ณด๊ธฐ
3/8
post-thumbnail

<SQL ์ฒซ๊ฑธ์Œ> ์„ ๋ณด๊ณ  ์ง์ ‘ ํ•™์Šตํ•˜๊ณ  ๊ธฐ๋กํ•˜๋Š” ํฌ์ŠคํŠธ! ๐Ÿ”ฅ

DATABASE ๋งˆ์Šคํ„ฐ๋ฅผ ๊ฟˆ๊พธ๋ฉฐ...๐Ÿ”ฅ

๐Ÿ’› 3์žฅ ์ •๋ ฌ๊ณผ ์—ฐ์‚ฐ

๐Ÿ’› 9๊ฐ• ์ •๋ ฌ - ORDER BY

  • ์‹ค์ œ ์—ฐ์Šต์„ ์œ„ํ•ด ์ง€๋‚œ ํ”„๋กœ์ ํŠธ์˜€๋˜ wattataxi2 DB๋ฅผ ๊ฐ€์ง€๊ณ  ์—ฐ์Šต!
  • ORDER BY ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ์˜ ํ–‰ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ”๋ณด์žฅ!
  • ์ •๋ ฌ(sort) ๋ฐฉ๋ฒ•์„ ๊ณต๋ถ€ํ• ๊พธ~~
๐Ÿ’› select ์—ด from ํ…Œ์ด๋ธ”๋ช… order by ์—ด ๐Ÿ’›

1) order by๋กœ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ •๋ ฌํ•˜๊ธฐ

  • tickets ํ…Œ์ด๋ธ”์„ price ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๋‹ˆ ๊ฐ€๊ฒฉ์ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋ผ์„œ ๋‚˜์˜ด!
๐Ÿ’› select * from tickets order by price asc; ๐Ÿ’›
  • ์•„๋ฌด๊ฒƒ๋„ ์ง€์ •์•ˆํ•ด์ค„ ๋•Œ ๊ธฐ๋ณธ ๊ฐ’์„ ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋ผ๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•ด์คญ....!

2) order by desc๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ธฐ

select * from tickets order by price desc;

3) ๋Œ€์†Œ๊ด€๊ณ„

  • ์ˆ˜์น˜ํ˜• ๋ฐ์ดํ„ฐ๋ผ๋ฉด ๋Œ€์†Œ๊ด€๊ณ„๋Š” ์ˆซ์ž์˜ ํฌ๊ธฐ๋กœ ํŒ๋ณ„. ๋‚ ์งœ์‹œ๊ฐ„ํ˜• ๋ฐ์ดํ„ฐ๋„ ์ˆซ์ž ํฌ๊ธฐ๋กœ ํŒ๋ณ„. ์ตœ๊ทผ ์ˆœ์ผ ์ˆ˜๋ก 'ํฌ๋‹ค', ๊ณผ๊ฑฐ๋กœ ๊ฐˆ ์ˆ˜๋ก '์ž‘๋‹ค'๋ผ๊ณ  ๋ณด๋ฉด ๋จ!
  • ๋ฌธ์ž์—ดํ˜• ๋ฐ์ดํ„ฐ์˜ ๋Œ€์†Œ๊ด€๊ณ„๋Š” ์‚ฌ์ „์‹ ์ˆœ์„œ์— ์˜ํ•ด ๊ฒฐ์ •
    ex) '๋‚˜๋น„'์™€ '๊ฐ€๋ฐฉ', '๊ฐ€์กฑ'์€ '๊ฐ€๋ฐฉ'>'๊ฐ€์กฑ'>'๋‚˜๋น„' ์ˆœ์„œ์ž„!
  • ๋ฌธ์ž์—ดํ˜• ์—ด์— ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒฝ์šฐ๋Š” '๋ฌธ์ž'๋กœ ์ธ์‹๋˜๋‹ˆ๊นŒ ์ฃผ์˜ํ•  ๊ฒƒ!

4) order by๋Š” ํ…Œ์ด๋ธ”์— ์˜ํ–ฅ ์•ˆ์คŒ

  • order by๋ฅผ ์ด์šฉํ•ด ํ–‰ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ. ํ•˜์ง€๋งŒ ์ด๊ฑด ๊ทธ๋ƒฅ ํ–‰์ˆœ์„œ๋ฅผ ๋‹จ์ˆœํžˆ ๋ฐ”๊ฟ” ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ผ ๋ฟ ์ €์žฅ์žฅ์น˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ํ–‰ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฑด ์•„๋‹˜! ๋‹จ์ˆœ ์ฐธ์กฐ!

๐Ÿ’› 10๊ฐ• ๋ณต์ˆ˜์˜ ์—ด์„ ์ง€์ •ํ•ด ์ •๋ ฌํ•˜๊ธฐ

  • ์œ„์—์„œ๋Š” ์—ด ํ•˜๋‚˜๋งŒ ์ •ํ•ด์„œ order by ํ–ˆ๋Š”๋ฐ, ๊ทธ๋Ÿผ ๋ณต์ˆ˜์˜ ์—ด๋„ ์ง€์ •ํ•ด์„œ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ• ๊นŒ?
๐Ÿ’› select ์—ด๋ช… from ํ…Œ์ด๋ธ”๋ช… where ์กฐ๊ฑด์‹ order by ์—ด๋ช…1 [asc/desc], ์—ด๋ช…2[asc/desc].. ๐Ÿ’›
  • ๊ฐ€๋Šฅํ•ด! ๊ทผ๋ฐ ์ด๋Ÿด ๋•Œ, NULL๊ฐ’์— ์ฃผ์˜ํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ!

1) ๋ณต์ˆ˜ ์—ด๋กœ ์ •๋ ฌ ์ง€์ •

  • price ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„ or ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์„ ํ•ด์ฃผ์—ˆ์–ด๋„ ๋‚˜๋จธ์ง€ ์—ด์€ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ. ์ด๋Ÿฐ ๊ฒฝ์šฐ order by๋กœ ๋ณต์ˆ˜ ์—ด์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ.
๐Ÿ’› select * from tickets order by price, seat_remain; ๐Ÿ’›

  • price๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์ด ๋˜์–ด์žˆ๋Š”๋ฐ ๊ฐ ๊ฐ€๊ฒฉ๋ณ„๋กœ seat_remain์ด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!
  • ๊ทธ๋Ÿผ order by์—์„œ ์—ด์˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ”๋ณผ๊นŒ? ์œ„์—์„œ order by a, b์˜€๋‹ค๋ฉด ์ด๋ฒˆ์—๋Š” order by b, a๋กœ!!
๐Ÿ’› select * from tickets order by seat_remain, price; ๐Ÿ’›

  • ์š”๋ ‡๊ฒŒ ๋ฐ”๋€๋‹น! ์‹ ๊ธฐํ•ด...๐Ÿฉ
  • ๊ทธ๋ ‡๋‹ค๋ฉด ํ•˜๋‚˜๋Š” asc๋กœ ๋‹ค๋ฅธํ•˜๋‚˜๋Š” desc๋กœ ํ•ด๋ณผ๊นŒ?
๐Ÿ’› select * from tickets order by price desc, seat_remain asc; ๐Ÿ’›

ํฌํฌ ์‹ ๊ธฐํ•˜์ฅ....๐Ÿฃ

3) NULL ๊ฐ’์˜ ์ •๋ ฌ์ˆœ์„œ

  • NULL ๊ฐ’์€ ๊ทธ ํŠน์„ฑ์ƒ ๋Œ€์†Œ๋น„๊ต๋ฅผ ํ•  ์ˆ˜ ์—†์–ด ์ •๋ ฌ ์‹œ์—๋Š” 1. ํŠน์ • ๊ฐ’๋ณด๋‹ค ํฐ ๊ฐ’, 2. ํŠน์ • ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฐ’. ์ด๋ ‡๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰จ.
  • order by๋กœ ์ง€์ •ํ•œ ์—ด์—์„œ NULL ๊ฐ’์„ ๊ฐ€์ง€๋Š” ํ–‰์€ ๊ฐ€์žฅ ๋จผ์ € ํ‘œ์‹œ๋˜๊ฑฐ๋‚˜ ๊ฐ€์žฅ ๋‚˜์ค‘์— ํ‘œ์‹œ.
  • MySQL์˜ ๊ฒฝ์šฐ NULL๊ฐ’์„ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰...! ๊ทธ๋ž˜์„œ asc์—์„œ๋Š” ๊ฐ€์žฅ ๋จผ์ €, desc์—์„œ๋Š” ๊ฐ€์žฅ ๋‚˜์ค‘์— ํ‘œ์‹œ!

๐Ÿ’› 11๊ฐ• ๊ฒฐ๊ณผ ํ–‰ ์ œํ•œํ•˜๊ธฐ - LIMIT

  • LIMIT๊ตฌ๋กœ ๊ฒฐ๊ณผ ํ–‰์„ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•?
๐Ÿ’› select ์—ด๋ช… from ํ…Œ์ด๋ธ”๋ช… LIMIT ํ–‰์ˆ˜ [OFFSET ์‹œ์ž‘ํ–‰] ๐Ÿ’›
  1. ํ–‰์ˆ˜ ์ œํ•œ
  • LIMIT๊ตฌ๋Š” select ๋ช…๋ น ๋งˆ์ง€๋ง‰์— ์ง€์ •, where๊ตฌ๋‚˜ order by ๊ตฌ ๋’ค์— ์ง€์ •.
๐Ÿ’› select ์—ด๋ช… from ํ…Œ์ด๋ธ”๋ช… where ์กฐ๊ฑด์‹ order by ์—ด๋ช… LIMIT ํ–‰์ˆ˜ ๐Ÿ’›
  • ๋งŒ์•ฝ LIMIT์„ ํ–‰์ˆ˜๋ฅผ 10์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ์ตœ๋Œ€ 10๊ฐœ์˜ ํ–‰์ด ๋ฐ˜ํ™˜! ๊ณ ๋Ÿฌ๋ฉด.. ์—ฐ์Šตํ•ด๋ณด์žฅ...!

  • locations ํ…Œ์ด๋ธ”: ํ–‰์ด 13๊ฐœ์ธ๋ฐ, ์ด๊ฑธ 5๊ฐœ๋งŒ ์ถ”๋ ค๋ณด์žฅ!

  • limit ์‚ฌ์šฉํ•ด์„œ ํ–‰ 5๊ฐœ ์ถ”๋ฆฌ๊ธฐ- ์จ”๋ž€-!

  • ์ •๋ ฌํ•œ ํ›„ ์ œํ•œํ•˜๊ธฐ
    ๊ทธ๋ ‡๋‹ค๋ฉด where id <= 5๋กœ ๋ช…๋ น์„ ์ค€๊ฑฐ๋ž‘ limit = 5๋กœ ์ค€๊ฑฐ๋ž‘ ๋ญ๊ฐ€ ๋‹ค๋ฅธ๊ฑธ๊นŒ?
    -> limit์€ ๋ฐ˜ํ™˜ํ•  ํ–‰์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ๊ธฐ๋Šฅ, where์€ ๊ตฌ๋กœ ๊ฒ€์ƒ‰ํ•œ ํ›„ order by๋กœ ์ •๋ ฌ๋œ ๋’ค ์ตœ์ข…์ ์œผ๋กœ ์ฒ˜๋ฆฌ.(limit์€ ์ •๋ ฌ ๊ธฐ๋Šฅ์ด ์—†์œผ๋‹ˆ๊นŒ ์ •๋ ฌ๊ธฐ๋Šฅ์„ ์ง€์ •ํ•ด์ค˜์•ผํ•จ!)

  1. ์˜คํ”„์…‹ ์ง€์ •
  • ์›น ์‹œ์Šคํ…œ์—์„œ๋Š” ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ํ™”๋ฉด์— ํ‘œ์‹œํ•  ๋‚ด์šฉ์„ ์ฒ˜๋ฆฌ. ๐Ÿ„ํŽ˜์ด์ง€ ๋‚˜๋ˆ„๊ธฐ๐Ÿ„๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ. -> ์ปค๋ฎค๋‹ˆํ‹ฐ ์‚ฌ์ดํŠธ ๋“ฑ์—์„œ ๊ฒŒ์‹œํŒ ํ•˜๋‹จ ๋ถ€๋ถ„์— '1 2 3 4 5 ๋‹ค์Œ' ๋“ฑ์œผ๋กœ ํ‘œ์‹œ๋œ ๊ฒƒ์ด ๊ทธ ์˜ˆ์‹œ!
    -> ์ด ํŽ˜์ด์ง€ ๋‚˜๋ˆ„๊ธฐ ๊ธฐ๋Šฅ์€ limit์„ ํ†ตํ•ด ๊ฐ„๋‹จํžˆ ๊ตฌํ˜„ ๊ฐ€๋Šฅ!
    ex. ํ•œ ํŽ˜์ด์ง€ ๋‹น 5๊ฑด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋„๋ก ํ•œ๋‹ค๋ฉด, ์ฒซ ๋ฒˆ์งธ ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ limit 5๋กœ ๊ฒฐ๊ด๊ฐ’์„ ํ‘œ์‹œํ•˜๋ฉด ๋จ. ๊ทธ ๋‹ค์Œ ํŽ˜์ด์ง€์—์„œ๋Š” 6๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ 5๊ฑด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋„๋ก ํ•˜๋Š”๊ฑฐ์ฅ. ์ด ๋•Œ '6๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ'๋ผ๋Š” ํ‘œํ˜„์€ ๊ฒฐ๊ด๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ทจ๋“ํ•  ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์œผ๋กœ limit๊ตฌ์— offset์œผ๋กœ ์ง€์ • ๊ฐ€๋Šฅ!
๐Ÿ’› select * from locations limit 3 offset 0; ๐Ÿ’›

๐Ÿ’› select * from locations limit 3 offset 3; ๐Ÿ’›

๐Ÿ’› select * from locations limit 3 offset 6; ๐Ÿ’›

  • ์—ฌ๊ธฐ์„œ offset์€ ๊ทธ ์ˆซ์ž ๋‹ค์Œ๋ถ€ํ„ฐ ํ™”๋ฉด์— ์ถœ๋ ฅํ•ด์ค€๋‹ค๋Š” ๋œป์ธ ๊ฒƒ ๊ฐ™์Œ.. ์•„์ง ์ชผ์˜ค๊ธˆ ๊ฐ์ด ์•ˆ์˜ด..!๐Ÿค

๐Ÿ’› 12๊ฐ• ์ˆ˜์น˜ ์—ฐ์‚ฐ

  • SQL์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ณ„์‚ฐ๊ธฐ๋Šฅ์„ ํฌํ•จํ•จ. ์ˆ˜์น˜์˜ ์—ฐ์‚ฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•ด๋ณผ๊นŒ...?๐Ÿค
๐Ÿ’› +-*/%MOD ๐Ÿ’›
  • % ๋Œ€์‹  MODํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ!
  1. ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„
    ์šฐ์„ ์ˆœ์œ„ 1๋ฒˆ์€ * /.
    ์šฐ์„ ์ˆœ์œ„ 2๋ฒˆ์€ +-
  • select ๊ตฌ๋‚˜ where ๊ตฌ ์•ˆ์—์„œ๋„ ์—ฐ์‚ฐํ•  ์ˆ˜ ์žˆ์Œ!
  1. select ๊ตฌ๋กœ ์—ฐ์‚ฐํ•˜๊ธฐ
๐Ÿ’› select ์‹1, ์‹2... from ํ…Œ์ด๋ธ”๋ช… ๐Ÿ’›
  • ์ผ๋‹จ, ticket ํ…Œ์ด๋ธ”์„ ์ฐธ๊ณ ํ• ๊ฑฐ์•ผ.
  • ๋ง๋„ ์•ˆ๋˜์ง€๋งŒ price์™€ seat_remain์„ ์—ฐ์‚ฐํ•ด๋ณด์ž.^^
  • ๊ณ„์‚ฐ์‹์„ total = price * seat_remain์œผ๋กœ ์žก๊ธฐ. select๊ตฌ๋กœ ์ง€์ •ํ•ด์„œ ๊ณ„์‚ฐ ๊ฐ€๋Šฅ.
  1. ์—ด์˜ ๋ณ„๋ช…
  • ๊ณ„์† price * seat_remain ์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด ๋„ˆ๋ฌด ๊ธธ๊ณ  ์•Œ์•„๋ณด๊ธฐ ํž˜๋“œ๋‹ˆ๊นŒ...! ๋ณ„๋ช…์„ ์ง€์–ด์ค„๊นŒ? ๐Ÿ˜‡ total์ด๋ผ๋Š” ๋ณ„๋ช…์„ ์ง€์–ด์ฃผ์žฅ..!
๐Ÿ’› select *, price * seat_remain AS total from tickets; ๐Ÿ’›

  • ์š”๋Ÿฐ์‹์œผ๋กœ AS total์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋ณ„๋ช…์„ ๋งŒ๋“ค์–ด ์ค„ ์ˆ˜ ์žˆ์ฐŒ~~~ ๊ทผ๋ฐ AS๋„ ์ƒ๋žต๊ฐ€๋Šฅ!
  • ๋‹จ, ํ•œ๊ธ€๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋”๋ธ”์ฟผํŠธ("")๋ฅผ ๋‘˜๋Ÿฌ์‹ธ์„œ ์ง€์ •ํ•ด์ฃผ๊ธฐ.(์ˆซ์ž๋Š” ์•ˆ๋ผ!)
  1. WHERE ๊ตฌ์—์„œ ์—ฐ์‚ฐํ•˜๊ธฐ
  • ์•„๊นŒ ์œ„์—์„œ ๋งŒ๋“  total ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•ด๋ณด์žฅ!
๐Ÿ’› select price*seat_remain AS total from tickets where price*seat_remain >= 40000.000; ๐Ÿ’›

  • ๊ทผ๋ฐ ์™œ select total๋กœ ์—ด์ด๋ฆ„์„ ์•ˆํ•ด์ค€๊ฑฐ๋‹ˆ?...?
    -> ์™œ๋ƒ๋ฉด! select ๋ช…๋ น์„ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•ด๋ณด๋ฉด total์ด๋ž€ ์—ด์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•จ ^^

    -> where๊ตฌ์—์„œ์˜ ํ–‰ ์„ ํƒ, select ๊ตฌ์—์„œ์˜ ์—ด ์„ ํƒ์€ ๐Ÿค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„ ๋‚ด๋ถ€์—์„œ where๊ตฌ -> select๊ตฌ์˜ ์ˆœ์„œ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๋จ ๐Ÿค.(์‹ ๊ธฐํ•ด!๋„˜์ค‘์š”!) ๊ทธ๋ž˜์„œ where๊ตฌ๋กœ ํ–‰์ด ์กฐ๊ฑด์— ์ผ์น˜ํ•˜๋Š”์ง€ ์•„๋‹Œ์ง€ ๋จผ์ € ์กฐ์‚ฌํ•œ ํ›„์— select๊ตฌ์— ์ง€์ •๋œ ์—ด์„ ์„ ํƒํ•ด ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์‹์œผ๋กœ ์ฒ˜๋ฆฌ.
    -> ๋ณ„๋ช…์€ select ๊ตฌ๋ฌธ์„ ๋‚ด๋ถ€ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ถ™์—ฌ์ง. ๊ทธ๋‹ˆ๊นŒ where๊ตฌ์˜ ์ฒ˜๋ฆฌ๋Š” select๊ตฌ๋ณด๋‹ค ์„ ํ–‰๋˜๋ฏ€๋กœ wherer๊ตฌ์—์„œ ์‚ฌ์šฉํ•œ ๋ณ„์นญ์€ ์•„์ง ๋‚ด๋ถ€์ ์œผ๋กœ ์ง€์ •๋˜์ง€ ์•Š์€ ์ƒํƒœ๊ฐ€ ๋˜๋‹ˆ๊นŒ ์—๋Ÿฌ๋ฐœ์ƒ!
  1. NULL ๊ฐ’์˜ ์—ฐ์‚ฐ
  • NULL๊ฐ’์€ ์—ฐ์‚ฐ์ด ์•ˆ๋ผ...๐Ÿ˜‡
NULL + 1 = NULL
1 + NULL = NULL
1 + 2 * NULL = NULL
1 / NULL = NULL
  • ์–˜๋„ค ๋‹ค ๋ชจ๋‘์šฐ NULL์ด์•ผ ^^
  1. ORDER BY ๊ตฌ์—์„œ ์—ฐ์‚ฐํ•˜๊ธฐ
  • order by๊ตฌ์—์„œ๋„ ์—ฐ์‚ฐ๊ฐ€๋Šฅํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ด๊ฐ’๋“ค์„ ์ •๋ ฌ ๊ฐ€๋Šฅ! ๋‚ด๊ฐ€ ํ–ˆ๋˜ total์„ ์ •๋ ฌ ํ•œ ๋ฒˆ ํ•ด๋ณผ๊นŒ?.? ํžฃใ…Ž...
๐Ÿ’› select price * seat_remain AS total from tickets order by total desc; ๐Ÿ’›

  • order by๋Š” ์„œ๋ฒ„์—์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฐ€์žฅ ๋‚˜์ค‘์— ์ฒ˜๋ฆฌ๋จ. ๊ทธ๋‹ˆ๊นŒ select ๊ตฌ๋ณด๋‹ค ๋‚˜์ค‘์— ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— select ๊ตฌ์—์„œ ์ง€์ •ํ•œ ๋ณ„๋ช…์„ order by์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๊ฑฐ์ฅ.
  • ๊ทผ๋ฐ, where ๊ตฌ์—์„œ๋Š” ๋ณ„๋ช…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์–ด.... ์™œ๋ƒ๋ฉด ์„œ๋ฒ„์—์„œ ๋‚ด๋ถ€์ฒ˜๋ฆฌ ์ˆœ์„œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์ง€....๐Ÿผ

๐ŸŒฑ where ๊ตฌ -> select ๊ตฌ -> order by ๊ตฌ ๐ŸŒฑ

  1. ํ•จ์ˆ˜
    ์—ฐ์‚ฐ์ž ์™ธ์— ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์—ฐ์‚ฐ๋„ ๊ฐ€๋Šฅํ•ด!
ํ•จ์ˆ˜๋ช…(์ธ์ˆ˜1, ์ธ์ˆ˜2...)
  1. roundํ•จ์ˆ˜
  • ์†Œ์ˆ˜์ ์„ ๊ฐ€์ง€๋Š” ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๋ฐ˜์˜ฌ๋ฆผ์„ ์œ„ํ•ด roundํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•จ.
๐Ÿ’› select price*seat_remain, round(price*seat_remain) from tickets; ๐Ÿ’›

  • roundํ•จ์ˆ˜๋Š” integerํ˜•์˜ ์ž๋ฃŒํ˜•์„ decial ํ˜•์˜ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์—ญํ• !(decimal์€ ์ •์ˆ˜๋ถ€์™€ ์†Œ์ˆ˜๋ถ€์˜ ์ž๋ฆฟ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒํ˜•์ž„!)
๐Ÿ’› select price*seat_remain, round(price*seat_remain,1) from tickets; ๐Ÿ’›

์š”๊ฑฐ์Šจ ์†Œ์ˆ˜์  ๋‘˜์งธ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•œ ๊ฒƒ!

๐Ÿ’› 13๊ฐ• ๋ฌธ์ž์—ด ์—ฐ์‚ฐ

  • ๋ฌธ์ž์—ดํ˜• ์—ฐ์‚ฐ -> ๋ฌธ์ž์—ด๊ฒฐํ•ฉ์ด๋ž€? ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ์—ฐ์‚ฐ!
  1. ๋ฌธ์ž์—ด ๊ฒฐํ•ฉ
  • MySQL์—์„œ๋Š” CONCATํ•จ์ˆ˜๋กœ ๋ฌธ์ž์—ด์„ ๊ฒฐํ•ฉํ•จ.

  • seattypes ํ…Œ์ด๋ธ”๋กœ ์—ฐ์Šต์„ ํ•ด๋ณด์žฅ..!

  • type์—ด๊ณผ rate์—ด์„ ํ•ฉ์ณ๋ณด๋Š” ๊ฒƒ์ด์•ผ!
    ์‹ ๊ธฐํ•ด...๐Ÿฆ–

  1. substring ํ•จ์ˆ˜
  • substring ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋ถ„์„ ๊ณ„์‚ฐํ•ด์„œ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜!
๐Ÿ’› substring('20140125001',1,4) -> '2014' # ์—ฌ๊ธฐ์„œ 1,4๋Š” ''์•ˆ์— ์žˆ๋Š” ๋ฌธ์ž์—ด์—์„œ ์ฒซ๋ฒˆ์งธ๋ถ€ํ„ฐ 4๊ฐœ๋ฅผ ๋ฝ‘์„๊ฑฐ๋ผ๋Š” ๋ง! ๐Ÿ’›
  1. Trim ํ•จ์ˆ˜
  • ๋ฌธ์ž์—ด์˜ ์•ž๋’ค๋กœ ์—ฌ๋ถ„์˜ ์ŠคํŽ˜์ด์Šค๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์ด๋ฅผ ์ œ๊ฑฐํ•ด์ฃผ๋Š” ํ•จ์ˆ˜. ๊ทผ๋ฐ ๋ฌธ์ž์—ด ์ค‘๊ฐ„์— ์žˆ๋Š” ๊ณต๋ฐฑ์€ ์ œ๊ฑฐ ์•ˆ๋ผ. ๊ณ ์ •๊ธธ์ด ๋ฌธ์ž์—ด ํ˜•์— ๋Œ€ํ•ด ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜!
  • ์•ž์„œ ๋ฐฐ์šด ๊ฒƒ์ฒ˜๋Ÿผ CHAR VS VARCHAR์˜ ์ฐจ์ด์ ์€ CHAR์€ ์ตœ๋Œ€๊ธธ์ด๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๊ทธ๊ฑธ ๊ณต๋ฐฑ์œผ๋กœ ์ฑ„์›Œ์„œ๋ผ๋„ ๋‹ค ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ž์—ดํ˜•์ด๊ณ  VARCHAR์€ ์ตœ๋Œ€๊ธธ์ด๊ฐ€ ์ฃผ์–ด์ ธ๋„ ๋ฐ์ดํ„ฐ ๊ธธ์ด ๋งŒํผ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ž์—ดํ˜•์ด์—ˆ์–ด! (๊ธฐ์–ต๋‚˜๋‹ˆ?...?)
  • ์ด๋ ‡๋“ฏ CHARํ˜•์˜ ๋ฌธ์ž์—ดํ˜•์—์„œ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ ๊ณ ์ •๋˜๊ณ , ๋‚จ์€ ๊ณต๋ฐฑ์„ ์—†์•จ ๋•Œ, ์ด๋ ‡๊ฒŒ TRIM ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฑฐ์ง€!
๐Ÿ’› Trim('ABC    ') -> 'ABC' ๐Ÿ’›
  1. Character_length ํ•จ์ˆ˜
  • character_lengthํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐํ•ด ๋Œ๋ ค์ฃผ๋Š” ํ•จ์ˆ˜. ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” ๋ฌธ์ž ๋‹จ์œ„๋กœ ๊ณ„์‚ฐ๋˜์–ด ์ˆ˜์น˜๋กœ ๋ฐ˜ํ™˜๋จ. ์ค„์—ฌ์„œ char_length๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅ.

  • octet_lengthํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๊ณ„์‚ฐํ•ด ๋Œ๋ ค์ฃผ๋Š” ํ•จ์ˆ˜.

  • ๋ฌธ์ž์„ธํŠธ(character set)

  • ํ•œ ๋ฌธ์ž๊ฐ€ ๋ช‡ ๋ฐ”์ดํŠธ์ธ์ง€๋Š” ์“ฐ์ด๋Š” ๋ฌธ์ž์„ธํŠธ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.-> ์ด๊ฒŒ ์™œ ์ค‘์š”ํ•œ๋ฐ?
  • char_length ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์•„! (ํ•œ๊ธ€์ด๋“  ASCII๋ฌธ์ž์ด๋“  ๋ฌธ์ž ๋‹จ์œ„๋กœ ๊ณ„์‚ฐ๋˜๋‹ˆ๊นŒ!) ๊ทธ์น˜๋งŒ octet_lengthํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ๋ฌธ์ž ์ˆ˜๊ฐ€ ์•„๋‹Œ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜ํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ!

๐Ÿ’› 14๊ฐ• ๋‚ ์งœ ์—ฐ์‚ฐ

  • ๋‚ ์งœ ์—ฐ์‚ฐ?
๐Ÿ’› current_timestamp current_date interval ๐Ÿ’›
  1. SQL์—์„œ์˜ ๋‚ ์งœ
  • ๋‚ ์งœ๋‚˜ ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋Š” ์ˆ˜์น˜ ๋ฐ์ดํ„ฐ์™€ ๊ฐ™์ด ์‚ฌ์น™ ์—ฐ์‚ฐ ๊ฐ€๋Šฅ. ๋‚ ์งœ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์‚ฐํ•˜๋ฉด! ๊ฒฐ๊ด๊ฐ’์œผ๋กœ ๋™์ผํ•œ ๋‚ ์งœ์‹œ๊ฐ„ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์œผ๋ฉฐ ๊ธฐ๊ฐ„์˜ ์ฐจ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ธฐ๊ฐ„ํ˜•(interval) ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ!
  • ์‹œ์Šคํ…œ ๋‚ ์งœ: RDBMS์—์„œ๋„ ์‹œ์Šคํ…œ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•จ.
  • 'Current_timestamp'๋ผ๋Š” ๊ธด ์ด๋ฆ„์˜ ํ•จ์ˆ˜๋กœ ์‹คํ–‰ํ–ˆ์„ ๋•Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‹œ๊ฐ„์„ ํ‘œ์‹œ. ์ธ์ˆ˜ ํ•„์š”์—†๋œธ!
๐Ÿ’› select current_timestamp; ๐Ÿ’›

์‹ ๊ธ”ํ•˜์ฆค...? ๐Ÿฆ• ใ…Žใ…Ž

  • ๋‚ ์งœ ์„œ์‹
    ์ž„์˜์˜ ๋‚ ์งœ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ์—๋Š” ์ง์ ‘ ๋‚ ์งœ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •ํ•ด์•ผํ•จ.
    ์–ด๋–ป๊ฒŒ?
2021/08/14
2021-08-14
14 Aug 2021
  1. ๋‚ ์งœ์˜ ๋ง์…ˆ๊ณผ ๋บ„์…ˆ
  • ๋‚ ์งœ์‹œ๊ฐ„ํ˜• ๋ฐ์ดํ„ฐ๋Š” ๊ธฐ๊ฐ„ํ˜• ์ˆ˜์น˜๋ฐ์ดํ„ฐ์™€ ๋ง์…ˆ ๋ฐ ๋บ„์…ˆ์„ ํ•  ์ˆ˜ ์žˆ์Œ. ๋‚ ์งœ์‹œ๊ฐ„ํ˜• ๋ฐ์ดํ„ฐ์— ๊ธฐ๊ฐ„ํ˜• ์ˆ˜์น˜๋ฐ์ดํ„ฐ๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ๋ฉด ๋‚ ์งœ์‹œ๊ฐ„ํ˜• ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜ํ™˜๋จ.
๐Ÿ’› select current_date + interval 1 day; ๐Ÿ’›
# current_date๋Š” ์‹œ์Šคํ…œ ๋‚ ์งœ์˜ ๋‚ ์งœ๋งŒ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜. interval 1 day๋Š” '1์ผ ํ›„'๋ผ๋Š” ์˜๋ฏธ์˜ ๊ธฐ๊ฐ„ํ˜• ์ƒ์ˆ˜.

  • ์ผ์ฃผ์ผ์„ ๋”ํ•ด์ค˜๋ณผ๊นŒ?
๐Ÿ’› select current_date + interval 7 day; ๐Ÿ’› 

๋”ฐ๋ž€~!

  • ๊ทธ๋Ÿผ ๋‚ ์งœํ˜• ๊ฐ„์˜ ๋บผ์…ˆ๋„ ๊ฐ€๋Šฅ?
    ๋‚ ์งœ์‹œ๊ฐ„ํ˜• ๋ฐ์ดํ„ฐ ๊ฐ„์— ๋บผ์…ˆ ๊ฐ€๋Šฅ! datediff ํ•จ์ˆ˜๋ฅผ ์“ฐ๋ฉด ๋บ€ '๊ธฐ๊ฐ„'์ด ๋‚˜์˜ด!
๐Ÿ’› select datediff('2021-08-14', '2021-01-01'); ๐Ÿ’›

๐Ÿ’› 15๊ฐ• CASE ๋ฌธ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ํ•˜๊ธฐ

  1. case๋ฌธ
  • RDBMS์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ! ์–ด๋–ป๊ฒŒ? CASE ๋ฌธ์„ ํ™œ์šฉํ•ด์„œ!
๐Ÿ’› case when ์กฐ๊ฑด์‹ then ์‹1      #1
   	[when ์กฐ๊ฑด์‹2 then ์‹2...]   #2
   	[else ์‹3]                 #3
   end ๐Ÿ’›
  • #1 ๋จผ์ € when ์ ˆ์—๋Š” ์ฐธ๊ณผ ๊ฑฐ์ง“์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์กฐ๊ฑด์‹์„ ๊ธฐ์ˆ ํ•จ! ์ฐธ์ด๋ฉด then ๋’ค์˜ ์‹์ด ์ฒ˜๋ฆฌ๋จ.

  • #1 when ์ ˆ์˜ ์กฐ๊ฑด์‹์„ ์ฐจ๋ก€๋กœ ํ‰๊ฐ€ํ•ด ๋‚˜๊ฐ€๋‹ค๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ when ์ ˆ๊ณผ ๋Œ€์‘ํ•˜๋Š” then์ ˆ ์‹์˜ ์ฒ˜๋ฆฌ๊ฒฐ๊ณผ๋ฅผ case ๋ฌธ์˜ ๊ฒฐ๊ด๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜.

  • #2 ๊ทธ ์–ด๋–ค ์กฐ๊ฑด์‹๋„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ์—๋Š” else ์ ˆ์— ๊ธฐ์ˆ ํ•œ ์‹์ด ์ฑ„ํƒ๋จ. (else๋Š” ์ƒ๋žต๊ฐ€๋Šฅํ•˜๊ณ  ์ƒ๋žตํ•  ๊ฒฝ์šฐ์—๋Š” 'else null'๋กœ ๊ฐ„์ฃผ๋จ.

  • ๊ทธ๋ ‡๋‹ค๋ฉด...๐Ÿ˜‡ NULL๊ฐ’์„ 0์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” case์‹ ๊ตฌํ˜„์‚ฌ๋ก€๋ฅผ ์‚ดํŽด๋ณผ๊นŒ...?^^

๐Ÿ’› select address, case when address IS NULL then 0 else address end "address(null=0)" from orders; ๐Ÿ’›
  • NULL๊ฐ’์ด 0์œผ๋กœ ๋ฐ”๋€Œ์—ˆ๋”ฐ!

  • ๐Ÿช“ ๊ทผ๋ฐ ๋‹ค์‹œ select ๊ตฌ๋ฌธ์„ ์ณ๋ณด๋ฉด NULL ๊ฐ’์€ ์—ฌ์ „ํžˆ NULL ๊ฐ’์ด๋‹ค. ์ด๊ฑด ์–ด์ฉ” ์ˆ˜ ์—†๋Š” ๊ฒƒ์ผ๊นŒ? ๊ถ๊ธˆ..

  • COALESCE
    ์š”๊ธฐ์„œ NULL๊ฐ’์„ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด COALESCE ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ๋” ์‰ฝ๋‹ค๊ณ  ํ•œ๋‹ค^^

๐Ÿ’› select address, coalesce(address,0) from orders; ๐Ÿ’›
# address๊ฐ€ null์ด ์•„๋‹ˆ๋ฉด address๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด(address๊ฐ€ null์ด๋ฉด 0 ์ถœ๋ ฅ!)
  • ๐Ÿช“ ๊ทผ๋ฐ ์ด๊ฒƒ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ... NULL๊ฐ’์€ ์—ฌ์ „ํžˆ NULL ๊ฐ’์ด๋‹ค. ์•„์˜ˆ ๋ฐ”๊ฟ€ ์ˆ˜๋Š” ์—†๋Š” ๊ฑฐ์‹ ๊ฐ€!!!
  1. ๋˜ ํ•˜๋‚˜์˜ CASE ๋ฌธ
  • ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ์ฝ”๋“œ๋ฅผ ์•Œ์•„๋ณด๊ธฐ ๋” ์‰ฝ๊ฒŒ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ case๋ฌธ์„ ๋งŽ์ด ์‚ฌ์šฉํ•จ.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, '๋‚จ์ž๋Š” 1, ์—ฌ์ž๋Š” 2'๋ผ๋Š” ์ฝ”๋“œ ์ฒด๊ณ„๊ฐ€ ์žˆ๋‹ค๋ฉด 1,2๋ผ๊ณ  ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚จ์ž/์—ฌ์ž ๋ผ๊ณ  ํ‘œ์‹œํ•˜๋Š”๊ฒŒ ๋” ์ดํ•ด๊ฐ€ ์‰ฝ๊ฒ ์ง€. ์ด๋ ‡๊ฒŒ ๐ŸŒฑ'๋ฌธ์žํ™”'ํ•˜๋Š” ๊ฒƒ์„ '๋””์ฝ”๋“œ'๋ผ๊ณ  ๋ถ€๋ฅด๊ณ  ๋ฐ˜๋Œ€๋กœ ์ˆ˜์น˜ํ™” ํ•˜๋Š” ๊ฒƒ์„ '์ธ์ฝ”๋“œ'๋ผ๊ณ  ๋ถ€๋ฆ„!๐ŸŒฑ
when a = 1 then '๋‚จ์ž'
when a = 2 then '์—ฌ์ž'
  • case๋ฌธ์—๋Š” '๊ฒ€์ƒ‰case'์™€ '๋‹จ์ˆœcase'์˜ ๋‘ ๊ฐœ ๊ตฌ๋ฌธ์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Œ!
  • ๊ฒ€์ƒ‰case: 'case when ์กฐ๊ฑด์‹ then ์‹...' ๊ตฌ๋ฌธ
  • ๋‹จ์ˆœcase: 'case ์‹ when ์‹ then ์‹...' ๊ตฌ๋ฌธ <- ์š”๊ธฐ๋Š” case๋’ค์— ๋จผ์ € ์‹์„ ๊ธฐ์ˆ ํ•จ!
case ์‹1
	when ์‹2 then ์‹3
    [when ์‹4 then ์‹5...]
    [else ์‹6]
end
  • ์ด๊ฑธ ์ ์šฉํ•ด๋ณด์žฅ...!
  • ๊ฒ€์ƒ‰ case
select address AS "์ฝ”๋“œ",
case
	when address = 1 then '๋‚จ์ž'
    when address = 2 then '์—ฌ์ž'
    else '๋ฏธ์ง€์ •'
end as '์„ฑ๋ณ„' from orders;

  • ๋‹จ์ˆœ case
select address AS "์ฝ”๋“œ",
case address		  # case ๋’ค์—๋Š” ๋Œ€์ƒ์„ ์ ๊ธฐ
	when 1 then '๋‚จ์ž' # when ๋’ค์—๋Š” ๊ฐ’๋งŒ ์ ๊ธฐ
    when 2 then '์—ฌ์ž' # ์š”๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€
    else '๋ฏธ์ง€์ •'
end as '์„ฑ๋ณ„' from orders;

  1. CASE๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ฃผ์˜ ์‚ฌํ•ญ
  • else ์ƒ๋žต
    else๋ฅผ ์ƒ๋žตํ•˜๋ฉด else null์ด ๋˜๋Š” ๊ฒƒ์— ์ฃผ์˜ํ•ด์•ผํ•จ. ๋Œ€์‘ํ•˜๋Š” when์ด ํ•˜๋‚˜๋„ ์—†์œผ๋ฉด else ์ ˆ์ด ์‚ฌ์šฉ๋จ. ์ด๋•Œ else๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์ƒ์ •ํ•œ ๊ฒƒ ์ด์™ธ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์™”์„ ๋•Œ Null์ด ๋ฐ˜ํ™˜๋จ. ๋”ฐ๋ผ์„œ else๋ฅผ ์ƒ๋žตํ•˜์ง€ ์•Š๊ณ  ์ง€์ •ํ•˜๋Š” ํŽธ์ด ๋‚˜์Œ. -> case ๋ฌธ์˜ else๋Š” ์ƒ๋žตํ•˜์ง€ ์•Š๋Š” ํŽธ์ด ๋‚ซ๋‹ค๋Š” ๋ง...!
  • when์— Null ์ง€์ •ํ•˜๊ธฐ
case address
	when '๋Œ€๊ตฌ ์–ด๋”˜๊ฐ€' then '๋‚จ์ž'
    when '์„œ์šธ ์–ด๋”˜๊ฐ€' then '์—ฌ์ž'
    when NULL then '๋ฐ์ดํ„ฐ ์—†์Œ'
    else '๋ฏธ์ง€์ •'
end

์ด๋Ÿด๋•Œ๋Š” 1. address = '๋Œ€๊ตฌ ์–ด๋”˜๊ฐ€', 2. address = '์„œ์šธ ์–ด๋”˜๊ฐ€', 3. address = NULL ์ด ์ˆœ์„œ๋กœ ์ฒ˜๋ฆฌ๋จ! ์š”๋•Œ ์ค‘์š”ํ•œ ๊ฒƒ์€ 2๊ฐ€์ง€!
โฃ๏ธ NULL ๊ฐ’์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” IS NULL์„ ์‚ฌ์šฉํ•จ.
โฃ๏ธ NULL ๊ฐ’์ธ์ง€๋ฅผ ํŒ์ •ํ•˜๋ ค๋ฉด ๊ฒ€์ƒ‰ CASE๋ฌธ์„ ์‚ฌ์šฉํ•ด์•ผํ•จ. (์™œ๋ƒ๋ฉด ๋‹จ์ˆœ CASE๋ฌธ์€ ํŠน์„ฑ์ƒ = ์—ฐ์‚ฐ์ž๋กœ ๋น„๊ตํ•˜๋‹ˆ๊นŒ!) ๋ฐ‘์— ์ฐธ์กฐ!

case
	when '๋Œ€๊ตฌ ์–ด๋”˜๊ฐ€' then '๋‚จ์ž'
    when '์„œ์šธ ์–ด๋”˜๊ฐ€' then '์—ฌ์ž'
    when address IS NULL then '๋ฐ์ดํ„ฐ ์—†์Œ'
    else '๋ฏธ์ง€์ •'
end

-> ๋‹จ์ˆœ case๋ฌธ์œผ๋กœ๋Š” NULL ๊ฐ’ ๋น„๊ต ๋ถˆ๊ฐ€!

๐Ÿฉ 3์žฅ ๋’ท๋ถ€๋ถ„ case๋ฌธ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ณต์”ํ•˜๊ธฐ...๐Ÿฉ ํž˜!

profile
๊ฐœ๋ฐœ ๊ธฐ๋ก

0๊ฐœ์˜ ๋Œ“๊ธ€