일단 ν•˜κ³  λ³΄λŠ” μ‚¬λžŒ

λ‚˜μ€‘λ³΄λ‹¨ μ§€κΈˆμ— μ§‘μ€‘ν•˜λ˜, μ§€κΈˆλ³΄λ‹¨ λ‚˜μ€‘μ— μ™„λ²½ν•΄μ§€μžπŸ’ͺ🏻

πŸ—žοΈ IT 동ν–₯ νŒŒμ•… 및 λ‚˜μ˜ 생각 정리

SQL μŠ€νƒ€μΌ κ°€μ΄λ“œ: 가독성 높은 SQL μ½”λ“œ μž‘μ„± 방법

JanginTech 2024. 11. 15. 15:56

1. SQL Style Guide

https://www.sqlstyle.guide/

 

SQL style guide by Simon Holywell

A consistent code style guide for SQL to ensure legible and maintainable projects

www.sqlstyle.guide

 

 

[μš”μ•½μ •λ¦¬]

SQL μž‘μ„± μ‹œ 일관성과 가독성은 μ½”λ“œ μœ μ§€λ³΄μˆ˜μ™€ ν˜‘μ—…μ—μ„œ 핡심 μš”μ†Œλ‹€. 특히 μ—¬λŸ¬ μ‚¬λžŒμ΄ ν˜‘μ—…ν•˜λŠ” ν”„λ‘œμ νŠΈμ—μ„œλŠ” ν†΅μΌλœ μŠ€νƒ€μΌλŒ€λ‘œ ν•˜λŠ” 것이 μ€‘μš”ν•œλ°, ν”„λ‘œκ·Έλž˜λ° μ½”λ“œλΏλ§Œ μ•„λ‹ˆλΌ SQL도 λ§ˆμ°¬κ°€μ§€λ‹€.

 

였늘 λ‚΄κ°€ 읽은 SQL μŠ€νƒ€μΌ κ°€μ΄λ“œλŠ” μ΄λŸ¬ν•œ μΌκ΄€λœ μŠ€νƒ€μΌμ„ μœ μ§€ν•˜λŠ” 데 ν•„μš”ν•œ λΆ€λΆ„κ³Ό κ°€μ΄λ“œ 라인을 μ œμ‹œν•œλ‹€. 

SQL μŠ€νƒ€μΌ κ°€μ΄λ“œμ˜ μ£Όμš” λ‚΄μš©κ³Ό 이λ₯Ό 톡해 얻을 수 μžˆλŠ” νš¨κ³Όμ— λŒ€ν•΄ 정리해보겠닀. 

 

 

 

1. SQL μŠ€νƒ€μΌ κ°€μ΄λ“œλž€?

  • SQLλ¬Έ μž‘μ„±μ‹œ 따라야 ν•  μΌκ΄€λœ μ½”λ”© κ·œμΉ™μ„ μ œκ³΅ν•˜λŠ” κ°€μ΄λ“œ
  • 넀이밍 κ·œμΉ™λΆ€ν„° λ‹€μ–‘ν•œ μŠ€νƒ€μΌ μš”μ†Œλ₯Ό ν¬ν•¨ν•œ SQL μ½”λ“œμ˜ 일관성을 높이고 가독성을 κ°œμ„ ν•΄ μ€€λ‹€
  • κ°€μ΄λ“œμ— 맞좰 μž‘μ„±ν•˜λ©΄ SQL 쿼리가 ν•œλˆˆμ— λ“€μ–΄μ˜€κ³  ν˜‘μ—…μ΄ μˆ˜μ›”ν•΄μ§„λ‹€!

 

 

2. μ£Όμš” μŠ€νƒ€μΌ κ°€μ΄λ“œ

2.1. λŒ€μ†Œλ¬Έμž μ‚¬μš©

  • ν‚€μ›Œλ“œλŠ” λŒ€λ¬Έμž: SELECT, FROM, WHERE와 같은 SQL ν‚€μ›Œλ“œλŠ” λŒ€λ¬Έμžλ‘œ κ°•μ‘°
  • ν…Œμ΄λΈ”, μ—΄ 이름은 μ†Œλ¬Έμž: 일관성 μœ μ§€
SELECT student_id, first_name, last_name
FROM student
WHERE sex = 'F';

 

2.2. μΈλ΄νŠΈμ™€ 쀄 λ°”κΏˆ

  • μ •λ ¬λœ 인덴트: 각 μ ˆλ§ˆλ‹€ 쀄을 λ°”κΏ” μž‘μ„±ν•˜κ³ , ν•„μš”ν•œ 경우 νŠΉμ • 뢀뢄을 μΈλ΄νŠΈν•œλ‹€
  • 쑰건뢀 쀄 λ°”κΏˆ: AND, OR 같은 쑰건이 λΆ™λŠ” 경우 μƒˆ 쀄에 μž‘μ„±ν•˜μ—¬ 가독성을 μ±™κΈ΄λ‹€
SELECT student_id, first_name, last_name
FROM student
WHERE sex = 'F'
  AND enroll_date > '2023-03-02';

 

2.3. ν…Œμ΄λΈ”, μ—΄ 이름

  • λ‹¨μˆ˜ν˜• ν…Œμ΄λΈ” 이름: λ³΅μˆ˜ν˜• λŒ€μ‹  λ‹¨μˆ˜ν˜• μ‚¬μš©ν•˜μ—¬ κ°„κ²°ν•˜κ²Œ ν‘œν˜„ν•˜κΈ°
  • λͺ…ν™•ν•œ μ—΄ 이름: id, name보단 student_id, student_nameκ³Ό 같이 λͺ…ν™•ν•œ 이름을 λΆ™μ—¬ 의미λ₯Ό λΆ„λͺ…νžˆ ν•˜κΈ°

2.4. 주석 처리

  • 단일 쀄 주석: '--'λ₯Ό μ‚¬μš©ν•˜μ—¬ ν•„μš”ν•œ 뢀뢄에 주석 μΆ”κ°€. μ½”λ“œ λͺ©μ μ„ μ„€λͺ…ν•΄ μ£Όμ–΄ μœ μ§€λ³΄μˆ˜κ°€ 쉽닀
-- 2023λ…„ 3μ›” 2일 이후 μž…ν•™ν•œ 여학생 κ°€μ Έμ˜€λŠ” 쿼리
SELECT student_id, first_name, last_name
FROM student
WHERE sex = 'F'
  AND enroll_date > '2023-03-02';

 

 

 

3. SQL μŠ€νƒ€μΌ κ°€μ΄λ“œ 효과

1. 가독성 ν–₯상: μΌκ΄€λœ μ½”λ“œλ‘œ 인해 더 μ‰½κ²Œ 읽고 이해할 수 μžˆμ–΄, 디버깅과 μ½”λ“œ 리뷰 μ‹œκ°„μ„ 쀄일 수 μžˆλ‹€

2. ν˜‘μ—… νš¨μœ¨μ„± 증가: λ™μΌν•œ μŠ€νƒ€μΌμ„ μœ μ§€ν•˜λ©΄ νŒ€μ› κ°„ μ½”λ“œ 이해가 μ‰¬μ›Œμ Έ, ν˜‘μ—…μ΄ 더 μ›ν™œν•˜κ²Œ μ§„ν–‰λœλ‹€

3. 였λ₯˜ κ°μ†Œ: λͺ…ν™•ν•œ μΈλ΄νŠΈμ™€ μΌκ΄€λœ 넀이밍 κ·œμΉ™μ„ 톡해 μ½”λ“œ 였λ₯˜λ₯Ό 사전에 막을 수 μžˆλ‹€

4. μœ μ§€λ³΄μˆ˜μ„± κ°•ν™”: μ§κ΄€μ μ΄κ³  κΉ”λ”ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄ ν–₯ν›„ μˆ˜μ •ν•  λ•Œ μ‰½κ²Œ μ ‘κ·Όν•  수 있

 

 

 


 

πŸ€” 이에 λŒ€ν•œ λ‚˜μ˜ 생각

SQL μŠ€νƒ€μΌ κ°€μ΄λ“œλ₯Ό 톡해 SQL μ½”λ“œ μž‘μ„± μ‹œ 가독성과 일관성을 μœ μ§€ν•˜λŠ” 것이 μ–Όλ§ˆλ‚˜ μ€‘μš”ν•œμ§€ λ‹€μ‹œκΈˆ λŠλ‚„ 수 μžˆμ—ˆλ‹€.

μž‘μ€ κ·œμΉ™λ“€μ΄μ§€λ§Œ 이λ₯Ό 잘 μ§€ν‚€λ©΄ ν˜‘μ—…ν•  λ•Œ 훨씬 더 효율적으둜 μž‘μ—…ν•  수 μžˆμ„ 것이라 μƒκ°ν•œλ‹€.

κ·Έλ™μ•ˆ SQL λŠ” μ½”λ“œκ°€ μ•„λ‹ˆλΌκ³  μƒκ°ν•΄μ„œ κ·ΈλŸ°μ§€.. κ°„λ‹¨ν•œ κ·œμΉ™λ“€μž„μ—λ„ 잘 μ§€ν‚€μ§€ μ•Šμ•„ μ™”λ˜ κ·Έλ™μ•ˆμ˜ λ‚˜λ₯Ό λ°˜μ„±ν•˜κ²Œ λ˜μ—ˆλ‹€

μ•žμœΌλ‘œ SQL μž‘μ„± μ‹œ 이 κ°€μ΄λ“œλΌμΈμ„ μ€€μˆ˜ν•˜μ—¬ λ”μš± κΉ”λ”ν•˜κ³  직관적인 μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆλ„λ‘ μ‹ κ²½ 써야겠닀!γ…Žγ…Ž