반응형
✅ 1. 기초 SELECT 문법 및 조건 검색
목적 | SQL 예제 | 설명 |
전체 데이터 조회 | SELECT * FROM book; | 모든 컬럼 출력 |
특정 컬럼 조회 | SELECT bookname, price FROM book; | 필요한 열만 출력 |
조건 검색 | WHERE price >= 20000 WHERE bookid = 1 |
가격 또는 ID 조건 |
부분 일치 검색 | LIKE '축구%', LIKE '_구%' | 문자열 패턴 검색 |
특정 범위 검색 | BETWEEN 10000 AND 20000 | 가격 범위 지정 |
OR 조건 검색 | publisher = '굿스포츠' OR publisher = '대한미디어' | 여러 값 중 하나 |
✅ 2. 정렬 (ORDER BY)
목적 | SQL 예제 | 설명 |
이름순 정렬 | ORDER BY bookname ASC | 알파벳/가나다순 정렬 |
가격 → 이름 정렬 | ORDER BY price ASC, bookname ASC | 다중 정렬 조건 |
가격 내림차순, 출판사 오름차순 | ORDER BY price DESC, publisher ASC | 혼합 정렬 가능 |
✅ 3. JOIN (다중 테이블 연결)
목적 | SQL 예제 | 설명 |
고객 + 주문 연결 | FROM customer, orders WHERE customer.custid = orders.custid | INNER JOIN 형태 |
고객 + 주문 + 도서 | FROM customer, orders, book WHERE custid=orders.custid AND bookid=orders.bookid | 3테이블 조인 |
도서를 구매하지 않은 고객 포함 | LEFT OUTER JOIN | 비구매 고객까지 포함 가능 |
✅ 4. 실전 응용 쿼리
목적 | SQL 예제 | 설명 |
박지성의 총 구매액 | SELECT SUM(saleprice) ... WHERE name='박지성' | 고객 특정 조건 활용 |
박지성의 구매 도서 수 | COUNT(DISTINCT orderid) | 중복 주문 제외 |
박지성이 구매한 출판사 수 | COUNT(DISTINCT book.publisher) | 조인으로 출판사 추출 |
박지성이 구매하지 않은 도서 | (예시 누락) | NOT IN 혹은 LEFT JOIN WHERE IS NULL 활용 가능 |
구매 도서 이름/가격/차액 | (미완성) | SELECT bookname, price, saleprice, (price - saleprice) |
✅ 5. 집계 함수 + 그룹별 분석 (GROUP BY)
목적 | SQL 예제 | 설명 |
고객별 총 판매액 | SUM(saleprice) GROUP BY customer.name | 집계 기본 |
평균/최저/최고가 포함 | AVG(), MIN(), MAX() | 다양한 통계 활용 |
도서 판매 건수 | (오류) SUM(DISTINCT orderid) ❌ → COUNT(*)가 정확 | |
고객별 주문 수량/총액 | COUNT(*), SUM(saleprice) | 수량/금액 동시 분석 |
주문 도서 날짜 그룹 | GROUP_CONCAT(orderdate) | 날짜 문자열 합치기 |
조건부 그룹 필터 | HAVING COUNT(*) >= 2 | 2권 이상 주문한 고객만 필터 |
🧠 핵심 키워드 요약
문법 | 설명 |
SELECT | 데이터 조회 |
FROM | 테이블 지정 |
WHERE | 조건 필터 |
JOIN | 테이블 연결 |
GROUP BY | 그룹화 집계 |
HAVING | 그룹 결과 조건 필터 |
ORDER BY | 결과 정렬 |
DISTINCT | 중복 제거 |
SUM(), AVG(), COUNT() | 집계 함수 |
✨ 권장 학습 흐름
- SELECT + WHERE + ORDER BY
- JOIN 기본 → 다중 JOIN
- GROUP BY + 집계 함수
- HAVING + 서브쿼리 + OUTER JOIN
❗추가 팁
- HAVING은 GROUP BY 이후 필터에만 사용됩니다.
- JOIN 시에는 반드시 ON 조건 또는 WHERE로 관계를 명시해야 정확한 결과가 나옵니다.
- COUNT(*)는 행 수를 셈, COUNT(DISTINCT)는 중복 제거된 값 수를 셉니다.
반응형
'MySQL' 카테고리의 다른 글
MySQL 설치 가이드 Windows용 다운로드 (0) | 2025.06.11 |
---|