WIL2주차

아뇨 민균데요·2025년 5월 23일
0

💻 WIL: SQL 배우며 깨달은 점들 (Feat. 집중력과의 싸움)

📌 1. SQL은 결국 SELECT부터 정복하는 것

  • SQL 쿼리는 쓰는 순서랑 실행 순서가 다름. FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY 순서로 실행됨.
  • WHERE에서 집계 함수 못 쓰는 이유는 GROUP BY 이후에 계산되기 때문임. 그래서 HAVING 써야 함.

📌 2. JOIN은 관계형 데이터베이스의 핵심

  • JOIN에는 INNER, LEFT, RIGHT, FULL 있음. 근데 실무에선 거의 INNER JOIN 아니면 LEFT JOIN 씀.
  • PK와 FK를 기준으로 조인해야 중복이나 누락 없이 안정적임.
  • 일반 칼럼끼리도 조인 되긴 하는데, 무결성이 깨질 수 있어서 추천 안 함.
  • CROSS JOIN은 진짜 잘 안 씀. 모든 경우의 수 다 곱하는 거라서 실수하면 큰일 남.

📌 3. 서브쿼리, CTE는 다 이유가 있음

  • 서브쿼리는 SELECT 안에 SELECT 넣는 것. 괄호 꼭 써야 함.
  • FROM 안에 들어가는 서브쿼리는 테이블처럼 쓰이고, WHERE 절에는 조건 줄 때 자주 씀.
  • CTE(Common Table Expression)는 WITH 구문. 가독성 좋아지고 재귀 쿼리도 가능함.

📌 4. GROUP BY + 집계 함수 제대로 쓰는 법

  • count(), sum(), avg() 등 집계 함수는 GROUP BY 이후에 써야 함.
  • HAVING 절은 GROUP BY 다음에 필터링할 때 씀. alias를 HAVING에서 바로 쓰는 건 MySQL에선 가능하지만, 다른 DBMS에선 안 되는 경우도 있어서 조심.

📌 5. 윈도우 함수는 신세계였음

  • row_number(), rank(), dense_rank() 등은 PARTITION BY랑 ORDER BY 조합해서 쓰면 됨.
  • 집계 함수랑 다르게 윈도우 함수는 필터링이 아니라 순위 매기거나 누적합 같은 걸 구할 때 씀.
  • 윈도우 함수랑 GROUP BY는 같이 쓰기 가능. 쓰는 목적이 다르다는 걸 인지할 것.

📌 6. 집중력 떨어질 땐, 문제 나눠서 보기

  • 긴 쿼리는 조인 단계별로 나눠서 확인하는 게 좋았음.
  • 괄호 하나라도 틀리면 에러 나니까, 조인이나 서브쿼리 쓸 땐 들여쓰기 꼭 하자.
  • 내가 쓴 쿼리를 내가 못 읽으면 무조건 리팩토링하기.

📌 7. 놓치기 쉬운 개념들

  • NULL값 조심할 것. IS NULL / IS NOT NULL로 체크해야 함.
  • COALESCE 써서 NULL을 다른 값으로 바꿔주는 것도 기억할 것.
  • '중복된 값 제거'는 DISTINCT, '갯수 세기'는 COUNT(DISTINCT 컬럼)로 구분해서 써야 함.
profile
this man을 꿈 속에서 보신 적이 있으신가요?

0개의 댓글