Database/SQL

[SQL] ๋ฐ์ดํ„ฐ ํ™œ์šฉ๋ฒ•(LIKE์—ฐ์‚ฐ์ž, Wildcard, ์ •๋ ฌ, ์ค‘๋ณต์ œ๊ฑฐ, If, CASE WHEN ~ THEN, CAST)

jpocket 2025. 4. 3. 12:40
๋ฐ˜์‘ํ˜•

๐Ÿ“‘ ํ•™์Šต ๋‚ด์šฉ


  • โœ… ํŠน์ • ๋ฐ์ดํ„ฐ ์กฐ๊ฑด๊ณผ ๋ณ„์นญ
    • ํŠน์ • ๋ฐ์ดํ„ฐ ์กฐ๊ฑด์ฃผ๊ธฐ(LIKE, Wildcard)
    • ๋ณ„์นญ ์‚ฌ์šฉํ•˜๊ธฐ(Alias)
  • โœ… ๋ฐ์ดํ„ฐ ์ •๋ ฌ๊ณผ ์ค‘๋ณต ์ œ๊ฑฐ
    • ๋ฐ์ดํ„ฐ ์ •๋ ฌํ•˜๊ธฐ(ORDER BY)
    • ์ค‘๋ณต์ œ๊ฑฐํ•˜๊ธฐ(DISTINCT)
  • โœ… ์กฐ๊ฑด๋ฌธ ํ™œ์šฉํ•˜๊ธฐ(IF, CASE WHEN ~ THEN ~)
    • ๋‹จ์ผ ์กฐ๊ฑด๋ฌธ(IF)
    • ๋‹ค์ค‘ ์กฐ๊ฑด๋ฌธ(CASE WHEN ~ THEN)
  • โœ… ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€ํ™˜ํ•˜๊ธฐ(CAST)

 

 

 


๐Ÿ›  LIKE ์—ฐ์‚ฐ์ž

  • ์กฐํšŒ ์กฐ๊ฑด ๊ฐ’์ด ๋ช…ํ™•ํ•˜์ง€ ์•Š์„ ๋•Œ ํŠน์ • ๋‚ด์šฉ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ
  • ์กฐ๊ฑด์— ๋ฌธ์ž๋‚˜ ์ˆซ์ž๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ
  • ์ฃผ๋กœ Wildcard์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ

 

๐Ÿ›  Wildcard

  • % : ์กฐ๊ฑด์„ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์˜๋ฏธ(0๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ž)
  • ๐Ÿ”ฅ _ : ํ•œ๊ธ€์ž๋ฅผ ์˜๋ฏธ
    • _์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ๋’ค์— ์˜ค๋Š” ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ์Œ
mysql("""

SELECT *
FROM bike
WHERE hr = 0
AND weekday LIKE '%ur%' # ur ์ด ๋“ค์–ด๊ฐ€๋Š” weekday ์ฐพ๊ธฐ

""")
mysql("""

SELECT *
FROM bike
WHERE hr = 0
AND mnth LIKE 'ma_' # ma๋’ค์— ํ•œ ๊ธ€์ž๊ฐ€ ๋” ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ฐพ๊ธฐ

""")

 

 

 

 

๐Ÿ›  ๋ณ„์นญ ์‚ฌ์šฉํ•˜๊ธฐ(Alias)

์ž„์‹œ๋กœ ์ปฌ๋Ÿผ๋ช…์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด, ์ปฌ๋Ÿผ๋ช…์ด ๋„ˆ๋ฌด ๊ธธ๊ฑฐ๋‚˜ ๋ณต์žกํ•  ๋•Œ ๋“ฑ ์ปฌ๋Ÿผ๋ช…์„ ์‚ฌ์šฉ์žํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

mysql("""

SELECT temp, hum AS 'h'
FROM bike
LIMIT 5

""")

 

 

 


๐Ÿ›  ORDER BY

SELECT
FROM 
WHERE
ORDER BY 
LIMIT
  • ์˜ค๋ฆ„์ฐจ์ˆœ : ASC ํ˜น์€ ์ƒ๋žต (์•„๋ฌด๊ฒƒ๋„ ์ ํ˜€์žˆ์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ)
  • ๋‚ด๋ฆผ์ฐจ์ˆœ : DESC
  • SELECT ๊ตฌ๋ฌธ์— ์ง€์ •ํ•œ ์ปฌ๋Ÿผ์˜ ์ˆœ์„œ๋ฅผ ์ž…๋ ฅํ•ด๋„ ์‹คํ–‰ ๊ฐ€๋Šฅ
# ์ปฌ๋Ÿผ๋ช…1์— ๋Œ€ํ•ด์„œ ๋‚ด๋ฆผ์ฐจ์ˆœ, ๊ฐ™์€ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด, ์ปฌ๋Ÿผ๋ช…2์— ๋Œ€ํ•ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ 
order by ์ปฌ๋Ÿผ๋ช…1 DESC, ์ปฌ๋Ÿผ๋ช…2

# select์ ˆ์— ์ž‘์„ฑ๋œ ์ฒซ ๋ฒˆ์งธ ์ปฌ๋Ÿผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ, ๊ฐ™์€ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด, ๋‘ ๋ฒˆ์งธ ์ปฌ๋Ÿผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ
order by 1 DESC, 2

 

 

 


๐Ÿ›  DISTINCT

  • ์ถœ๋ ฅ์—์„œ ๊ณ ์œ ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค์›Œ๋“œ
  • DISTINCT ํ‚ค์›Œ๋“œ๋Š” ์˜†์— ์˜จ ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ๊ณ ๋ คํ•˜์—ฌ ์ค‘๋ณต์ œ๊ฑฐ
  • ์ง‘๊ณ„ํ•จ์ˆ˜์—๋„ DISTINCT ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๐Ÿ”ฅ select์ ˆ์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ปฌ๋Ÿผ๋ช… ์•ž์— ํ•œ ๋ฒˆ๋งŒ ๋ช…์‹œํ•œ๋‹ค.

 

 

 


๐Ÿ›  ๐Ÿ”ฅ IF

  • ๋‹จ์ผ ์กฐ๊ฑด๋ฌธ
  • ์—‘์…€์˜ IF ํ•จ์ˆ˜์™€ ๋™์ผ
  • SELECT, WHERE์ ˆ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • IF ๋‚ด์— ์กฐ๊ฑด์„ ์ค„ ๋•Œ ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • [์ฐธ๊ณ ] pandasql์—์„œ๋Š” ifํ•จ์ˆ˜๋ฅผ iif (i๊ฐ€ 2๊ฐœ) ๋กœ ํ‘œํ˜„ 
mysql("""
 
SELECT customerName AS "๊ณ ๊ฐ๋ช…", birthday AS "์ƒ๋…„์›”์ผ",
iif(birthday >= '1990-01-01' , '์ดํ›„', '์ด์ „') AS "1990๋…„ ๊ธฐ์ค€"
FROM customers

""")

"1990๋…„ ๊ธฐ์ค€" ์ปฌ๋Ÿผ๋ช…์— ์ƒ์ผ์ด 1990๋…„ 01์›” ์ดํ›„์ธ ์‚ฌ๋žŒ์€ "์ดํ›„"๊ฐ€ ์ถœ๋ ฅ, ๊ทธ๋ ‡์ง€ ์•Š์€ ์‚ฌ๋žŒ์€ "์ด์ „" ์ถœ๋ ฅ

 

 

 


๐Ÿ›  ๐Ÿ”ฅ CASE WHEN ~ THEN

  • ๋‹ค์ค‘ ์กฐ๊ฑด๋ฌธ
  • ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ๊ฐ’์„ ๋‹ค๋ฅด๊ฒŒ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์‚ฌ์šฉ
    CASE WHEN '์กฐ๊ฑด1' THEN '์กฐ๊ฑด1 ๋ฐ˜ํ™˜๊ฐ’' 
         WHEN '์กฐ๊ฑด2' THEN '์กฐ๊ฑด2 ๋ฐ˜ํ™˜๊ฐ’' 
         ELSE '๋งŒ์กฑํ•˜๋Š” ์กฐ๊ฑด์ด ์—†์„ ๋•Œ ๋ฐ˜ํ™˜ ๊ฐ’'
    END

 

๐Ÿ“Œ CASE๋ฌธ์€ WHEN์˜ ์กฐ๊ฑด์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒดํฌํ•˜๊ณ  ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋ฉด THEN์— ๋ช…์‹œ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜

  • WHEN๊ณผ THEN์€ ํ•œ ์Œ์œผ๋กœ ์กด์žฌํ•˜๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Œ
  • ELSE๋Š” ์•ž์˜ ์กฐ๊ฑด๋“ค์— ๋ชจ๋‘ ํ•ด๋‹นํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ์ •ํ•ด์ค„ ๊ธฐ๋ณธ ๊ฐ’
  • ELSE๊ฐ€ ์—†๊ณ  ์กฐ๊ฑด์— ๋งž๋Š” ๊ฐ’์ด ์—†์œผ๋ฉด NULL๊ฐ’ ๋ฐ˜ํ™˜
mysql("""

SELECT customerName, creditLimit
   , CASE WHEN creditLimit <= 50000 THEN '5๋งŒ์›์ดํ•˜'
           WHEN creditLimit <= 100000 THEN '10๋งŒ์›์ดํ•˜'
           ELSE '10๋งŒ์›์ดˆ๊ณผ'
   END  AS '๊ณ ๊ฐํ•œ๋„๋ถ„๋ฆฌ'
FROM customers

""")

 


๐Ÿ›  ๐Ÿ”ฅ CAST

  • ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

 

 

๐Ÿ“Œ ํ˜•ํƒœ

CAST(์ปฌ๋Ÿผ AS ๋ณ€ํ™˜ํ•  ํƒ€์ž…

 

 

 

mysql("""

SELECT CAST(yr AS varchar) AS yr_varchar
FROM bike
LIMIT 5

""")
  • ๋ณ€ํ™˜ํ•  ํƒ€์ž…์—๋Š” int, float, varchar, datetime ๋“ฑ ์ž‘์„ฑ
๋ฐ˜์‘ํ˜•