오늘의 아티클 : SQL 가독성을 높이는 다섯 가지 사소한 습관
[내용정리]
남이 작성한 SQL이 아니더라도 과거의 내가 작성한 SQL이 현재의 내 발목을 붙잡는 경우가 있다.
(예전에 작성한 SQL문을 나중에 다시 활용될 수도 있는 경우가 있기에)
-> 그래서 가독성 있는 SQL 코드를 쓸 수 있는 5가지 습관에 대해서 CHECK
1. 예약어는 대문자로 쓰는 습관
- SELECT, FROM, GROUP BY, HAVING, AS, AND 등과 같은 예약어들을 대문자로 쓰는 습관
* SQL 에디터 중에서 예약어, 칼럼, 테이블 등 하이라이팅을 해주기 때문에 굳이 일수도 있으나 에디터마다 하이라이팅 규칙이 다르고 DB종류마다 함수들 이름도 약간씩 다르기 때문에 대문자로 써주는 습관을 가지는 것이 좋다고 함.
2. 행갈이를 자주하자 -> 구조 파악 용이
EX)
SELECT day, time, SUM(total_bill)
FROM tips
GROUP BY day, time
EX)
SELECT day, time, SUM(total_bill) FROM tips GROUP BY day, time
> 위의 예시가 한 눈에 구조 파악하기 좋음
3. 행갈이를 더 자주하자
ex.
SELECT day
, time
, SUM(total_bill)
FROM tips
WHERE sex = 'Female'
AND smoker = 'Yes'
GROUP BY day
, time
SELECT day, time, SUM(total_bill)
FROM tips
WHERE sex = 'Female' AND smoker = 'Yes'
GROUP BY day, time
> 이는 나중에 상황에 따라 주석 처리할 때 용이
ex. time을 잠깐 제외하는 경우
SELECT day
-- , time
, SUM(total_bill)
FROM tips
WHERE sex = 'Female'
AND smoker = 'Yes'
GROUP BY day
-- , time
이를 응용해서 어떤 분들은 where 절에 1=1 아무 의미없는 조건을 넣고 행갈이를 한다고 합니다.
SELECT day
, time
, SUM(total_bill)
FROM tips
WHERE 1 = 1
-- AND sex = 'Female'
AND smoker = 'Yes'
GROUP BY day
, time
4. 주석을 쓰자
코드 쓴 의도를 짤막하게라도 적어놓는 습관을 들이는 게 좋다. 특히 서브쿼리가 많아지고 코드가 길어질수록 각 코드 단락이 어떤 의도로 작성되었는지 디테일을 적어놓아야 나중에 그 코드를 읽었을 때 더 쉽게 이해할 수 있다.
SELECT AVG(sales) avg_sales
FROM (
-- 요일별 매출액 합계 계산
SELECT day -- 일별 X 요일별 O
, SUM(total_bill) sales
FROM tips
WHERE sex = 'Female' -- 결제자의 성별이 여성인 경우
GROUP BY day
) daily_sales
다음과 같은 것들은 주석에 적어주면 좋다고 해요.
1) 서브쿼리의 단위로 의미를 적기
2) 조건에 적은 주석의 경우 단순히 '이 조건은 이거다(What)라고 서술하는 건 별로 의미가 없다. 그러나 칼럼 이름만 보고 해석에 오해가 있을 수 있으니 추가 설명이 필요한 경우에는 적어주는 것이 좋다.
3. 조건이 왜 필요한지(Why), 어떻게 동작하는지(How) 같은 디테일을 적어놓으면 추후 코드를 이해하는데 도움을 줌
5. Alias를 잘 쓰자
주석을 잘 적어놓는 것도 중요하지만, 결국 코드를 잘 써야 전체를 빠르게 이해할 수 있다. 서브쿼리, 컬럼 Alias를 x, y, t, df, a등으로 대충 쓰고 있다면..! 다음에 코드를 다시 볼 일이 생길 때 힘들 수 있음.
+) 여러 규칙에 대해 이야기를 했지만, 가장 중요한 것은 같이 일하는 사람들과의 합의된 규칙이라고 함.
+) 코드를 작성할 때 나 말고 누군가가 볼 거라고 생각하면서 작성하고 정리하는 것이 좋다고 함.
SQL 가독성을 높이는 다섯 가지 사소한 습관
지독하게 읽기 힘든 SQL문을 해석해 본 적 있으신가요?
datarian.io
'아티클 읽기' 카테고리의 다른 글
[아티클 스터디] 23.12.13 (0) | 2023.12.13 |
---|---|
[아티클 스터디] 23.12.12 (0) | 2023.12.12 |
[아티클 스터디]23.12.11 (0) | 2023.12.11 |
[아티클 스터디] 23.12.06 (0) | 2023.12.06 |
[아티클 스터디] 23.12.05 (0) | 2023.12.05 |