데일리 미션/Article

Article : SQL 가독성을 높이는 다섯 가지 사소한 습관

pipiiiiii 2023. 12. 19. 09:59

https://datarian.io/blog/good-sql-code?utm_source=home-copy&utm_medium=home-copy

 

SQL 가독성을 높이는 다섯 가지 사소한 습관

지독하게 읽기 힘든 SQL문을 해석해 본 적 있으신가요?

datarian.io

 

<아티클 내용 요약>

- SQL은 띄어쓰기, 들여 쓰기에 거의 규칙이 없다시피 한 언어라서 자유롭다고 느낄 수 있지만 남이 써놓은 SQL문을 해독하면서 가독성이 좋지 않아 어려움을 느낄 수 있다. 

 

1. 예약어는 대문자로

- SELECT, FROM 같은 SQL 예약어들을 대문자로 쓰는 습관이 좋다. 

- SQL 언어를 지원하는 에디터를 쓰는 경우 예약어를 다른 색으로 하이라이팅 해서 대문자가 아니어도 잘 보이지만 에디터마다 하이라이팅 규칙이 다르고, 함수들 이름도 약간씩 달라 하이라이팅이 제대로 되지 않는 경우가 있다. 그래서 예약어, 함수 이름 등은 대문자로 써주는 습관을 가지면 좋다. 

 

 

2. 행갈이를 자주 하자

- SELECT, FROM, GROUP BY 등 다른 절이 한 라인에 있는 코드보다는 절마다 행을 나누면 예약어만 눈으로 봐도 작성자의 의도와 코드의 구조를 알 수 있다. 

 

 

3. 행갈이를 더 자주 하자

- 행갈이를 자주 하면 필요 없는 컬럼 혹은 절을 주석 처리해서 제외할 수 있다. 

더보기

EX)

SELECT day
   -- , time
      , SUM(total_bill)
FROM tips
WHERE sex = 'Female'
AND smoker = 'Yes'
GROUP BY day
     -- , time

- WHERE절에서도 AND, OR이 붙을 때마다 행갈이를 해주면 주석 처리할 수 있어서 좋다. 

 

 

4. 주석을 쓰자

- 주석으로 코드를 쓴 의도를 짤막하게라도 적어놓는 습관을 들이면 좋다. 특히 서브쿼리가 많아지고 코드가 길어질수록 각 코드 단락이 어떤 의도로 작성되었는지 디테일을 적어놓아야 다음에 이해할 수 있다. 

- 주석은 서브쿼리 단위로 쓸 수도 있고, CASE, IF 등 조건문 또는 WHERE절 필터링 조건을 쓸 때도 좋다.

- 주석에 적으면 좋은 것

  1. 서브쿼리의 단위로 의미 적으면 좋다. 
  2. 조건에 적은 주석의 경우, 단순히 ' 이 조건은 이거다 '라고 쓰면 컬럼 이름만 보고 해석을 할 때 오해를 할 수 있으니 추가 설명이 필요한 경우에는 적는 것이 좋다.
  3. 조건이 왜 필요한지, 어떻게 동작하는지 같은 디테일을 적어놓으면 추후에 코드를 이해할 때 도움을 준다.  

 

5. ALIAS를 잘 쓰자 

- 주석을 잘 적어 놓는 것도 중요하지만, 코드를 잘 써야 전체를 빠르게 이해할 수 있다. 

- 서브쿼리, 컬럼 AILAS를 X, A, F 등으로 대충 쓰면 나중에 그 코드가 어떤 동작을 하는지 알기 위해 작성한 서브쿼리까지 가서 봐야 하는 불상사가 생긴다. 처음 작성할 때 변수명을 잘 써놓으면 나중에 튀어나와도 쉽게 알 수 있다. 

- 어렵다면 구글에 ' 변수명 짓기 팁 '을 검색해서 알아보는 것도 좋다. 

 

마무리

- 여러 규칙을 말했지만 가장 중요한 것은 같이 일하는 사람들과 합의된 규칙이다. 아무리 좋은 방법이라도 팀에서 사용하는 규칙에 위배된다면 사용하지 않는 것이 좋다.

- 코드를 작성할 때 나 말고 다른 사람도 이 코드를 볼 거라고 생각하면서 작성하고 정리하는 것이 중요하다. 

 

<알게 된 개념>

- SQL을 사용하면서 내가 하는 습관도, 안 하는 습관도 있어서 신기했다. 행갈이 같은 경우에는 강의를 들으면서 강사님의 습관을 따라가 자연스럽게 했지만, 예약어 대문자는 안 하고 있었는데 예시를 보고 차이를 크게 느끼게 됐다. 

 

그리고 주석에 대해 어렴풋이 알고 있었지만 추측으로 알고 있어서 애매했는데 이번에 잘 알 수 있었다. 쿼리문 앞에 ' -- '를 넣는 것이 주석인 것을 알았으니 앞으로 잘 활용해야겠다. 

 

소소해 보이지만 SQL을 사용하면서 도움이 되는 ARTICLE을 읽을 수 있어 좋았다.