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 '%특별시' |