💡 Tech Note

[DB/SQL] 자주 쓰는 SQL 명령어

this.Serena 2026. 2. 19. 00:57

⚡ 데이터 조회 (SELECT)

가장 빈번하게 사용하는 데이터 조회 및 필터링 패턴

  • 기본 조회 및 중복 제거
    • SELECT *: 전체 열 조회
    • SELECT DISTINCT: 중복된 값 제외 후 유니크한 데이터만 출력
  • WHERE 조건 활용
    • IN: 여러 값 중 하나라도 일치하는 데이터 필터링
    • LIKE: 문자열 패턴 매칭 (예: %@gmail.com)
    • BETWEEN: 특정 범위 내의 데이터 추출
    • IS NOT NULL: 데이터가 비어있지 않은 행만 선택
  • 정렬 및 페이징
    • ORDER BY: ASC(오름차순), DESC(내림차순) 정렬
    • LIMIT & OFFSET: 대량 데이터 중 필요한 구간만 끊어서 조회 (페이징 필수 기법)

🛠️ 데이터 조작 (DML)

데이터를 삽입, 수정, 삭제하는 명령어 및 주의사항.

  • INSERT: 단일 행 또는 여러 행의 데이터를 한 번에 삽입 가능
  • UPDATE: 기존 데이터 변경 시 반드시 WHERE 절을 사용하여 대상 지정
  • DELETE: 데이터 삭제 시 WHERE 절 누락 주의 (전체 삭제 위험 예방)

📊 집계 및 그룹화 (Aggregate)

데이터의 통계적 수치를 도출하는 방법.

  • 주요 함수: COUNT (개수), SUM (합계), AVG (평균), MAX/MIN (최대/최소)
  • GROUP BY & HAVING
    • 특정 열을 기준으로 데이터를 그룹화하여 집계
    • HAVING: 그룹화된 결과에 대한 필터링 조건 (WHERE와 구분 필요)

🔗 조인 (JOIN)

서로 다른 테이블 간의 관계를 활용한 데이터 결합.

  • INNER JOIN: 양쪽 테이블에 공통된 값이 존재하는 데이터만 결합
  • LEFT JOIN: 왼쪽 테이블의 모든 데이터를 포함하며, 오른쪽 테이블에 일치하는 값이 없으면 NULL 처리
  • 다중 JOIN: 3개 이상의 테이블을 체인 형태로 연결하여 복합 정보 추출

💡 유용한 패턴

  • CASE 문: SQL 내에서 조건별로 값을 변경하여 출력하는 로직 (조건부 업데이트 등)
  • 서브쿼리: 쿼리 안의 쿼리를 통해 동적인 조건 지정 (예: 평균보다 높은 값 찾기)
  • COALESCE: NULL 값을 만났을 때 지정한 기본값으로 대체하는 처리

⚠️ 보안 및 성능 최적화

❌ 위험 명령어 주의

  • TRUNCATE: 테이블의 모든 데이터를 삭제하며 롤백이 불가능하므로 주의
  • DROP: 테이블 구조 자체를 완전히 제거함
  • WHERE 절 누락: UPDATE, DELETE 시 WHERE 절이 없으면 전체 데이터가 오염됨

✅ 안전한 실행 프로세스

  1. SELECT 확인: 변경 전 대상 데이터를 반드시 먼저 조회
  2. 트랜잭션 활용: START TRANSACTION 후 작업 수행, 문제 발생 시 ROLLBACK

🚀 성능 향상 팁

  • 인덱스(Index): 자주 조회되는 열(WHERE 절에 자주 쓰이는 열)에 인덱스 생성하여 속도 개선
  • SELECT * 지양: 필요한 열만 명시하여 네트워크 트래픽 및 메모리 낭비 방지
  • 대량 조회 제한: 테스트 시에는 항상 LIMIT를 사용하여 부하 방지

📝 빠른 참조 테이블 (Cheat Sheet)

구분 명령어 설명
조회 SELECT 데이터 추출 및 확인
추가 INSERT INTO 새로운 데이터 생성
수정 UPDATE SET 기존 정보 변경
삭제 DELETE FROM 조건부 데이터 삭제
그룹 GROUP BY 데이터 통계 및 그룹화
필터 HAVING 그룹화된 결과의 조건 지정