SQL 공부

SQL 기초, case when (집계함수 포함), DELETE vs TRUNCATE vs DROP

myun0506 2026. 1. 10. 22:44

 

- 작성 순서

SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY

 

- MySQL에서는 일반적으로 AND가 OR보다 우선순위가 높음

→ OR가 섞이면 괄호로 의도를 고정하는게 실무 습관!

 

- IN ('KR', 'JP', "CH')

 

- LIKE

  • %: 글자 0개 이상 (아무 길이)
  • _: 글자 1개 (정확히 한 글자)

- NULL은 무조건 IS NULL / IS NOT NULL로 비교

 

- CASE WHEN

select
   logid,
   game_account_id,
   level as lv,
   case 
   	when level >= 30 then 'high'
   	when level >= 15 then 'mid'
   	else 'low'
   end as level_group
from basic.game_logs
order by 
	case level_group
		when 'high' then 1
		when 'mid' then 2
		when 'low' then 3
	end
limit 100;
  • level_group 열에서 알파벳 순서가 아닌 직접 순서를 설정하고 싶다면
    • order by 절에서 case level_group 을 따로 작성하여 각각의 순서를 정해줄 수 있음
    • 단, 이건 MySQL 전용 (다른 DB에선 안되는 경우 있음)
  • 조건부 카운트 (case를 '집계'에 섞어보기)
SELECT
COUNT(*)AS total_enrollments,
SUM(CASE WHEN coupon_code IS NOT NULL THEN 1 ELSE 0 END)AS coupon_used_cnt,
SUM(CASE WHEN coupon_code IS NULL THEN 1 ELSE 0 END)AS no_coupon_cnt
FROM basic.enrollments;

 

 

 

- 테이블 데이터 삭제 (DELETE vs. TRUNCATE vs. DROP)

  • DELETE FROM table;
    • DML (데이터 조작어) 
    • 한 줄씩, 조건에 따라 삭제 가능 (WHERE 사용 가능)
    • AUTO_INCREMENT 초기화되지 않음
    • 트랜잭션 내에서 ROLLBACK 가능
  • TRUNCATE TABLE table;
    • DDL (데이터 정의어)
    • 테이블 전체를 한 번에 삭제 (WHERE 사용 불가)
    • AUTO_INCREMENT 1부터 다시 시작하도록 초기화됨
    • ROLLBACK 불가능
  • DROP TABLE table;
    • 테이블 존재 자체를 삭제
    • CREATE TABLE부터 다시 해야함

'SQL 공부' 카테고리의 다른 글

Ifnull / Coalesce 함수, 윈도우 함수  (0) 2026.01.10
서브쿼리(상관/FROM), IN, EXISTS 함수, CTE(WITH)  (0) 2026.01.10
UNION, JOIN  (0) 2026.01.10
DBeaver 설치하기 (MySQL 연결)  (0) 2026.01.10
날짜 포맷, 날짜 함수  (0) 2026.01.10