MySQL 실습 예제

SQL 기본 실습 정리

Jul 1, 2025

1. Selection, Projection, 집합연산, 연산자 실습

1️⃣ 데이터베이스 및 테이블 구조 확인

  • 데이터베이스 및 테이블 목록 확인
SHOW DATABASES;
USE world;
SHOW TABLES;

USE wntrade;
SHOW TABLES;

DESCRIBE 고객;
SHOW COLUMNS FROM 고객;

2️⃣ 행 단위 추출 (Selection)

  • 전체 행 수 확인
SELECT COUNT(*) FROM 고객;  -- 93건
SELECT COUNT(*) FROM 주문;  -- 830건
  • 특정 조건의 행 추출
SELECT *
FROM 고객
WHERE 담당자명 = '이은광';

SELECT *
FROM 주문
WHERE 사원번호 = 'E04';

SELECT *
FROM 제품
WHERE 단가 < 1500;
  • 계산 및 별칭 사용
SELECT 고객회사명,
       담당자명 AS 이름,
       담당자직위 AS 직위,
       마일리지,
       마일리지 * 1.1 AS '인상된 마일리지'
FROM 고객
WHERE 마일리지 > 100000
ORDER BY 마일리지 DESC;

4️⃣ 기본 출력 및 정렬

  • 상위 3명만 보기
SELECT * FROM 고객 LIMIT 3;
  • 마일리지 상위 3명
SELECT * FROM 고객
ORDER BY 마일리지 DESC
LIMIT 3;
  • 중복 제거
SELECT DISTINCT 도시 FROM 고객;

5️⃣ 산술, 비교, 논리 연산자 실습

  • 산술 연산
SELECT 23 + 5 AS 더하기,
       23 - 5 AS 빼기,
       23 / 5 AS 실수나누기,
       23 DIV 5 AS 정수나누기,
       23 % 5 AS 나머지1,
       23 MOD 5 AS 나머지2;
  • 비교 연산
SELECT
23 >= 5
, 23 <= 5
, 23 > 23
, 23 < 23
, 23 = 23
, 23 != 23
, 23 <> 23;
  • 논리 연산 및 조건 실습
SELECT * FROM 고객
WHERE 담당자직위 <> '대표 이사';

SELECT * FROM 고객
WHERE 도시 = '부산광역시'
AND 마일리지 < 1000;

SELECT * FROM 고객
WHERE 도시 <> '서울특별시'
AND 마일리지 >= 5000
ORDER BY 마일리지 DESC;

6️⃣ 날짜 조건 필터링

  • 특정 날짜 이전
SELECT * FROM 주문
WHERE 주문일 < '2020-03-16';
  • 특정 기간 내 주문
SELECT * FROM 주문
WHERE 주문일 BETWEEN '2020-06-01' AND '2020-06-30';

7️⃣ 집합 연산 실습

  • UNION, UNION ALL
SELECT 고객회사명, 주소, 도시
FROM 고객
WHERE 도시 = '부산광역시'
AND 마일리지 > 5000
UNION
SELECT 고객회사명, 주소, 도시
FROM 고객
WHERE 도시 = '서울특별시'
AND 마일리지 > 5000
ORDER BY 1;

SELECT 도시 FROM 고객
UNION ALL
SELECT 도시 FROM 사원;
  • INTERSECTION, EXCEPT (우회 방식)
-- 교집합
SELECT DISTINCT 도시 FROM 고객
WHERE 도시 IN (SELECT 도시 FROM 사원);

-- 차집합
SELECT DISTINCT 도시 FROM 고객
WHERE 도시 NOT IN (SELECT 도시 FROM 사원);

8️⃣ NULL 처리

  • NULL과 빈 문자열 구분
SELECT * FROM 고객
WHERE 지역 IS NULL;

UPDATE 고객
SET 지역 = NULL
WHERE 지역 = '';

9️⃣ IN, BETWEEN, LIKE 연습

  • IN과 BETWEEN
SELECT 담당자명, 마일리지
FROM 고객
WHERE 마일리지 BETWEEN 100000 AND 200000;

SELECT 이름, 도시, 주소
FROM 사원
WHERE 도시 IN ('서울특별시', '부천시', '부산광역시');
  • LIKE 패턴 검색
SELECT * FROM 고객
WHERE 도시 LIKE '%광역시'
AND (고객번호 LIKE '_C%' OR 고객번호 LIKE '__C%');

SELECT * FROM 고객
WHERE 전화번호 LIKE '%45%';

2. 실전 조건 실습

-- 서울에 거주하고 마일리지가 15000 이상 20000 이하인 고객

SELECT * FROM 고객
WHERE 도시 = '서울특별시'
AND 마일리지 BETWEEN 15000 AND 20000;


-- 광역시, 특별시 제외 마일리지 상위 3명
SELECT * FROM 고객
WHERE 도시 NOT LIKE '%광역시' AND 도시 NOT LIKE '%특별시'
ORDER BY 마일리지 DESC
LIMIT 3;


-- 지역 값이 있는 고객 중 '대표 이사' 제외
SELECT * FROM 고객
WHERE 지역 IS NOT NULL
AND 담당자직위 <> '대표 이사';

3. SQL 실습 오답노트 (틀린 구문 정리)

틀린 구문 이유 및 수정
SELECT DISTINCT FROM 고객 DISTINCT 사용 시 컬럼명을 반드시 명시해야 함 → SELECT DISTINCT 도시 FROM 고객
BETWEEN 2020-06-01 AND 2020-06-30 날짜는 작은따옴표로 감싸야 함 → BETWEEN '2020-06-01' AND '2020-06-30'
AND LIKE '%C%' LIKE 사용 시 컬럼명을 명시해야 함 → AND 고객회사명 LIKE '%C%'
IN '서울특별시' IN 사용 시 괄호 사용 → IN ('서울특별시')
마일리지 (BETWEEN 15000 AND 20000) BETWEEN 구문은 괄호 없이 사용 → 마일리지 BETWEEN 15000 AND 20000
지역 NOT NULL NULL 비교는 IS NOT NULL 사용 → 지역 IS NOT NULL
담당자직위 <> 대표 이사 문자열 비교 시 작은따옴표 사용 → 담당자직위 <> '대표 이사'
도시 NOT LIKE '%광역시' OR 도시 NOT LIKE '%특별시' 항상 TRUE가 됨, AND 사용으로 수정 → 도시 NOT LIKE '%광역시' AND 도시 NOT LIKE '%특별시'