상세 컨텐츠

본문 제목

엑셀보다 쉽고 빠른 SQL 개념 정리

카테고리 없음

by 민도리 2025. 11. 4. 21:06

본문

Ⅰ. 기본 구조 및 데이터 조회

  • 테이블 (Table): 엑셀 시트 역할. 데이터가 저장되는 기본 단위.
  • 컬럼 (Column): , 목록명. 테이블의 속성 (Attribute).
  • SELECT / FROM 문:
SELECT 컬럼1, 컬럼2 FROM 테이블_이름;  
  • SELECT 조회할 데이터 (컬럼 리스트).
  • FROM 가져올 테이블 지정.
  • 쿼리 실행: 보통 Ctrl + Enter (환경에 따라 다름).
  • AS (Alias): 컬럼/테이블에 별칭 부여. AS는 생략 가능.
SELECT 이름 AS 고객명 FROM 고객;

Ⅱ. 데이터 필터링 및 논리 연산

  • WHERE: 특정 조건으로 행(Row) 필터링. [보충] 문자열은 작은 따옴표(' ')로 감싸야 함.
  • 필터링 유용한 표현:
    • 비교 연산: >, <=, =, != (같지 않음).
    • BETWEEN A AND B: A와 B 사이의 값 포함 (경계값 포함).
    • IN: 포함되는 값 리스트 지정.
    • LIKE: 특정 문자열 포함 조건. % (모든 문자) 와일드카드 사용 ('%'포함문자'%').
  • 논리 연산: 여러 조건 필터링.
    • AND: 두 조건 모두 참일 때.
    • OR: 두 조건 중 하나라도 참일 때.
    • NOT: 조건을 반전시킴.
  • NULL 처리:
    • NULL 값 제외: WHERE 컬럼 IS NOT NULL.
    • NULL 값 대체: COALESCE(컬럼, 대체값) (NULL일 경우 대체값 반환).
# 나이가 NULL이면 0으로 대체
COALESCE(나이, 0) 

Ⅲ. 집계, 정렬 및 그룹화

  • 집계 함수 (Aggregate Functions): 엑셀 대신 SQL로 한 번에 계산.
    • SUM(): 합계.
    • AVG(): 평균.
    • COUNT(): 개수.
      • COUNT(*)는 전체 행 개수
      • COUNT(컬럼명)은 NULL 제외 개수.
    • MIN(), MAX(): 최소값, 최대값.
  • GROUP BY: 범주별, 카테고리별 그룹을 나누어 집계 함수 연산.
    • SELECT 절에 집계 함수와 함께 쓰이는 모든 일반 컬럼은 GROUP BY에 포함되어야 함.
SELECT 범주_컬럼, SUM(매출) FROM 테이블 GROUP BY 범주_컬럼;
  • ORDER BY: 쿼리 결과를 정렬하기.
    • 오름차순: ASC (생략 가능).
    • 내림차순: DESC
ORDER BY 컬럼 DESC;  (내림차순)

Ⅳ. 데이터 가공 및 변환

  • 문자열 포맷 가공 함수:
    • REPLACE(컬럼, 현재값, 바꿀값): 지정 문자를 다른 문자로 변경.
    • SUBSTRING(컬럼, 시작위치, 글자수): 문자열 특정 부분만 추출.
    • CONCAT(값1, 값2, ...): 여러 문자를 합쳐 포맷팅.
REPLACE(): REPLACE  (주소, '서울시', '서울특별시')
SUBSTRING():SUBSTRING(코드, 1, 3) (첫 번째 위치에서 3글자 추출)
  • 조건에 따른 포맷 변경:
    • IF(조건, 참일시, 거짓일시): (MySQL 등) 조건 충족 여부에 따라 값 반환.
    • CASE WHEN: 여러 조건 처리.
CASE WHEN 조건1 THEN 값1 WHEN 조건2 THEN 값2 ELSE 기본값 END.
  • 데이터 타입 오류 해결:
    • CAST(컬럼 AS 데이터타입): 데이터 타입을 변환하는 함수.

Ⅴ. 고급 조회 및 조인 (JOIN)

  • 서브쿼리 (Subquery): 쿼리 안에 포함된 쿼리. 여러 번의 연산 수행이나 조건에 쿼리 결과를 사용하고 싶을 때 활용.
    • 메인 쿼리 실행 전에 서브쿼리가 먼저 실행되어 결과를 제공함.
# WHERE 조건 사용
WHERE 컬럼 IN (SELECT 컬럼 FROM 다른_테이블 WHERE 조건);

# SELECT 컬럼 사용
SELECT 컬럼1, (SELECT AVG(점수) FROM 점수) AS 평균 FROM 테이블;
  • JOIN: 두 테이블 연결. 필요한 데이터가 서로 다른 테이블에 있을 때 조회.
    • LEFT JOIN: 왼쪽 테이블 기준. 공통 컬럼(키값)이 없더라도 왼쪽 테이블의 행은 모두 조회.
    • (공통되지 않은 값은 NULL로 표시)
    • INNER JOIN: 공통 행만 조회. 공통 컬럼(키값)이 모든 테이블에 있는 경우만 조회. (교집합)
FROM 테이블A JOIN 테이블B ON 테이블 A.키 = 테이블B.키

 


Ⅵ. 결측치 및 오류 처리 (NULL & Error Handling)

  • NULL 값 제외: WHERE 컬럼 IS NOT NULL.
  • NULL 값 처리: 조회 데이터에 아무 값이 없을 때 (1. 테이블 오류 2. JOIN 시 값이 없는 경우).
    • 1. 없는 값 제거: WHERE 컬럼 IS NOT NULL로 연산에서 제외. (NULL일 때 해당 행 자체 제외됨).
      • [보충] 집계 함수는 NULL을 자동으로 연산에서 제외 (0으로 간주하지 않음).
    • 2. 다른 값 대신 사용:
      • COALESCE(컬럼, 대체값): NULL 값일 경우 대체값을 반환. (가장 널리 사용).
      • IFNULL(컬럼, 대체값): (MySQL) NULL일 때 대체값 반환.
  • 비상식적 값 처리: 조건문 (CASE WHEN 또는 IF)으로 비상식적 값을 필터링하거나 대체하여 사용.

Ⅶ. 심화 분석 기법

  • 피벗 테이블 구조 만들기: MAX(IF(조건, 값, 0)) 또는 **CASE WHEN**을 활용하여 행 데이터를 컬럼으로 변환 (집계와 결합).
  • 윈도우 함수 (Window Function): 업무 단축 문법. 그룹별 연산(순위, 합계 등)을 수행하지만 행을 줄이지 않고 결과에 추가.
    • 구문: 윈도우 함수명() OVER(PARTITION BY 그룹컬럼 ORDER BY 정렬컬럼).
# 순위 함수
RANK() OVER (PARTITION BY 그룹_컬럼 ORDER BY 기준_컬럼 DESC) 
# 집계 함수 : 지역별 누적 합계
SUM(매출) OVER (PARTITION BY 지역)
  • 기능명: RANK(), SUM(), AVG() 등 일반 집계 함수와 유사한 기능.
  • PARTITION BY: 그룹 나누는 기준.
  • ORDER BY: 그룹 내에서 적용 시 정렬 컬럼.
  • 날짜/시간 타입 (Date/Time Type): DATE_FORMAT(컬럼, 포맷) 등을 통해 데이터 포맷 변경 및 분석.

댓글 영역