SQL 기초 입문 – 데이터베이스 조회 배우기 (실습 예제 포함)

SQL(Structured Query Language)은 데이터베이스에서 데이터를 조회하고 관리하는 언어입니다. 개발자뿐 아니라 마케터, 기획자, 데이터 분석가도 SQL을 알면 직접 데이터를 뽑아볼 수 있어 업무 효율이 크게 올라갑니다. SQL은 프로그래밍 언어 중 가장 배우기 쉬운 편에 속합니다.

SQL이 필요한 이유

  • 개발자: 웹/앱에서 데이터 저장/조회 (필수)
  • 마케터: 고객 데이터 직접 분석, “이번 달 신규 가입자 중 구매한 비율은?”
  • 기획자: 사용자 행동 데이터 조회, 의사결정에 활용
  • 데이터 분석가: 모든 분석의 기본 도구
  • 채용 시장: 비개발 직군에서도 “SQL 가능” 우대 증가 추세

기본 개념

데이터베이스는 엑셀과 비슷합니다:

엑셀데이터베이스
파일 (.xlsx)데이터베이스 (Database)
시트 (Sheet)테이블 (Table)
열 (Column)컬럼/필드 (Column)
행 (Row)레코드/로우 (Row)

예시 테이블 users:

idnameemailagecitycreated_at
1홍길동hong@mail.com28서울2025-01-15
2김영희kim@mail.com35부산2025-02-20
3이철수lee@mail.com22서울2025-03-10
4박민수park@mail.com41대전2025-06-01
5최수진choi@mail.com29서울2025-08-15

핵심 SQL 문법 (CRUD)

1. SELECT – 데이터 조회 (가장 많이 사용)

-- 모든 컬럼 조회
SELECT * FROM users;

-- 특정 컬럼만 조회
SELECT name, email, age FROM users;

-- 조건 검색 (WHERE)
SELECT * FROM users WHERE city = '서울';

-- 여러 조건 (AND, OR)
SELECT * FROM users WHERE city = '서울' AND age >= 25;

-- 정렬 (ORDER BY)
SELECT * FROM users ORDER BY age DESC;  -- 나이 내림차순
SELECT * FROM users ORDER BY created_at ASC;  -- 가입일 오름차순

-- 결과 개수 제한 (LIMIT)
SELECT * FROM users ORDER BY age DESC LIMIT 3;  -- 상위 3명만

2. 집계 함수 – 통계 내기

-- 전체 사용자 수
SELECT COUNT(*) FROM users;
-- 결과: 5

-- 평균 나이
SELECT AVG(age) FROM users;
-- 결과: 31.0

-- 최대/최소 나이
SELECT MAX(age), MIN(age) FROM users;
-- 결과: 41, 22

-- 도시별 사용자 수 (GROUP BY)
SELECT city, COUNT(*) as user_count
FROM users
GROUP BY city
ORDER BY user_count DESC;
-- 결과:
-- 서울 | 3
-- 부산 | 1
-- 대전 | 1

3. INSERT – 데이터 추가

INSERT INTO users (name, email, age, city)
VALUES ('정유나', 'jung@mail.com', 27, '인천');

4. UPDATE – 데이터 수정

-- 특정 사용자의 도시 변경
UPDATE users SET city = '대구' WHERE id = 3;

-- ⚠️ WHERE 없이 UPDATE하면 모든 행이 변경됨! 주의!

5. DELETE – 데이터 삭제

-- 특정 사용자 삭제
DELETE FROM users WHERE id = 4;

-- ⚠️ WHERE 없이 DELETE하면 모든 데이터 삭제! 매우 주의!

실전 예제: 쇼핑몰 데이터 분석

orders 테이블이 있다고 가정합니다:

-- Q1: 이번 달 총 매출은?
SELECT SUM(amount) as total_sales
FROM orders
WHERE created_at >= '2026-03-01';

-- Q2: 상위 고객 5명 (총 구매액 기준)?
SELECT user_id, SUM(amount) as total_spent
FROM orders
GROUP BY user_id
ORDER BY total_spent DESC
LIMIT 5;

-- Q3: 월별 매출 추이
SELECT
    DATE_FORMAT(created_at, '%Y-%m') as month,
    SUM(amount) as monthly_sales,
    COUNT(*) as order_count
FROM orders
GROUP BY month
ORDER BY month;

-- Q4: 서울 고객 중 10만원 이상 구매한 사람
SELECT u.name, u.email, SUM(o.amount) as total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.city = '서울'
GROUP BY u.id
HAVING total >= 100000;

SQL 연습 사이트 (무료)

사이트특징난이도
SQLBolt (sqlbolt.com)인터랙티브 튜토리얼, 단계별 학습초급
W3Schools SQL브라우저에서 바로 SQL 실행초급
LeetCode SQL면접 대비 SQL 문제초급~고급
프로그래머스 SQL한국어, 코딩 테스트 대비초급~중급
HackerRank SQL체계적 SQL 문제초급~고급

SQL 치트시트

키워드용도예시
SELECT조회할 컬럼SELECT name, age
FROM테이블 지정FROM users
WHERE조건 필터WHERE age > 25
ORDER BY정렬ORDER BY age DESC
LIMIT결과 개수 제한LIMIT 10
GROUP BY그룹별 집계GROUP BY city
HAVING그룹 조건HAVING COUNT(*) > 5
JOIN테이블 연결JOIN orders ON users.id = orders.user_id
COUNT/SUM/AVG집계 함수SELECT COUNT(*), SUM(amount)
LIKE패턴 검색WHERE name LIKE ‘김%’
IN목록 검색WHERE city IN (‘서울’, ‘부산’)
BETWEEN범위 검색WHERE age BETWEEN 20 AND 30

마무리

SQL의 핵심은 SELECT, FROM, WHERE, ORDER BY, GROUP BY 다섯 키워드입니다. 이것만 알면 실무 데이터 조회의 80%를 할 수 있습니다. 오늘 할 일: SQLBolt(sqlbolt.com)에 접속해서 첫 번째 레슨을 완료하세요. 30분이면 SELECT 문을 마스터할 수 있습니다.

Leave a Comment