2026년 9월 16일 MySQL 교육 내용을 복습하면서 정리해 봅니다.
오늘 교육에서는 MySQL을 이용해 데이터를 집계하고 그룹별로 나누어 조회하는 방법부터 조건에 따라 데이터를 처리하는 방법, 여러 가지 내장 함수까지 배웠습니다.
교육에서 배운 내용을 다시 정리해 보니 각각의 문법이 따로 있는 것 같지만, 실제로는 조회 → 그룹화 → 집계 → 조건 처리 → 데이터 가공이라는 흐름으로 연결해서 이해할 수 있었습니다.
📌 2일차 교육 내용 마인드맵
오늘 배운 내용을 정리한 마인드맵입니다. 전체적인 내용을 다시 확인할 때 활용하려고 함께 정리해 두었습니다.
※ 마인드맵은 Whimsical에서 Embed 기능으로 생성한 주소를 사용해야 정상적으로 확대·축소 및 탐색이 가능합니다.
1. 집계 함수
오늘 교육에서 먼저 집계 함수에 대해 배웠습니다. 여러 행의 데이터를 하나의 결과로 계산할 때 사용하는 함수라고 이해했습니다.
| 함수 | 제가 정리한 의미 |
|---|---|
| SUM() | 합계 |
| AVG() | 평균 |
| COUNT() | 개수 |
| MAX() | 최댓값 |
| MIN() | 최솟값 |
교육에서 사용한 형태를 다시 적어보면 다음과 같습니다.
SELECT
COUNT(*) AS 국가수,
SUM(Population) AS 총인구,
AVG(Population) AS 평균인구,
MAX(Population) AS 최대인구,
MIN(Population) AS 최소인구
FROM country;
여러 행의 데이터를 하나의 값으로 요약할 때 SUM, AVG, COUNT, MAX, MIN을 사용한다는 것을 우선 기억해 두려고 합니다.
2. GROUP BY
다음으로 GROUP BY를 배웠습니다. 특정 컬럼의 값이 같은 데이터끼리 묶어서 그룹별 통계를 계산할 때 사용하는 문법입니다.
예를 들어 국가 데이터를 대륙별로 묶은 뒤 국가 수나 총인구 등을 계산할 수 있습니다.
SELECT
Continent AS 대륙,
COUNT(*) AS 국가수,
SUM(Population) AS 총인구수,
AVG(LifeExpectancy) AS 평균기대수명
FROM country
GROUP BY Continent
ORDER BY 총인구수 DESC;
GROUP BY → 같은 값끼리 묶기
SUM / AVG / COUNT → 묶은 데이터를 계산하기
3. WHERE와 HAVING
GROUP BY를 배우면서 WHERE와 HAVING의 차이도 함께 정리했습니다.
| 구분 | 교육에서 정리한 내용 |
|---|---|
| WHERE | 그룹화하기 전 개별 데이터를 조건으로 필터링 |
| HAVING | GROUP BY 이후 그룹화된 결과를 조건으로 필터링 |
예제로는 대륙별 총인구를 구한 다음 총인구가 일정 수준 이상인 대륙만 조회하는 형태를 확인했습니다.
SELECT
Continent AS 대륙,
SUM(Population) AS 총인구수
FROM country
GROUP BY Continent
HAVING 총인구수 >= 500000000
ORDER BY 총인구수 DESC;
WHERE → 데이터를 먼저 걸러냄
HAVING → 그룹으로 묶은 후 결과를 걸러냄
4. 조건부 데이터 입력과 수정
교육에서는 데이터를 입력할 때 기본키가 중복되는 경우를 처리하는 방법도 배웠습니다.
① INSERT IGNORE
중복으로 인해 오류가 발생하는 경우 해당 입력을 무시하고 넘어가는 방식입니다.
INSERT IGNORE INTO member_point
VALUES ('KIM', '김철수', 100);
② ON DUPLICATE KEY UPDATE
기본키가 중복되지 않으면 데이터를 입력하고, 중복되는 경우에는 지정한 컬럼을 수정하는 방식입니다.
INSERT INTO member_point
VALUES ('KIM', '김철수', 100)
ON DUPLICATE KEY UPDATE
point = point + 100;
INSERT IGNORE → 중복이면 무시
ON DUPLICATE KEY UPDATE → 중복이면 UPDATE
5. 사용자 정의 변수
MySQL에서 @변수명 형태로 사용자 정의 변수를 만들어 SQL문에서 사용할 수 있다는 것도 배웠습니다.
SET @target_continent = 'Asia';
SELECT Name, Continent, Population
FROM country
WHERE Continent = @target_continent
ORDER BY Population DESC
LIMIT 3;
이번 교육에서는 변수를 먼저 지정하고,
이후 SQL문에서 @변수명을 사용하는 흐름으로 이해했습니다.
6. 명시적·묵시적 형변환
데이터 타입을 변경하는 형변환도 배웠습니다. 직접 변환 함수를 사용하는 방법과 MySQL이 상황에 따라 자동으로 변환하는 방법으로 나누어 정리했습니다.
① 명시적 형변환
CAST() 또는 CONVERT()를 이용해 개발자가 직접 데이터 타입을 변경하는 방식입니다.
SELECT CAST('100' AS SIGNED) + CAST('200' AS SIGNED) AS 합계;
SELECT CAST(123.456 AS SIGNED) AS 정수변환;
② 묵시적 형변환
별도의 형변환 함수를 사용하지 않아도 MySQL이 상황에 따라 자동으로 데이터 타입을 변환하는 경우입니다.
SELECT '100' + '200' AS 묵시적합계;
직접 변환 → CAST / CONVERT
자동으로 변환 → 묵시적 형변환
7. 문자열 처리 함수
문자열 데이터를 가공하는 함수도 실습했습니다. 이번에는 국가 이름과 대륙 정보를 연결하거나, 국가명을 대문자로 변경하고 문자열 일부를 추출하는 형태를 확인했습니다.
| 함수 | 제가 정리한 용도 |
|---|---|
| CONCAT() | 문자열 연결 |
| UPPER() | 대문자 변환 |
| SUBSTRING() | 문자열 일부 추출 |
SELECT
CONCAT(Name, ' (', Continent, ')') AS 국가정보,
UPPER(Name) AS 대문자국가명,
SUBSTRING(Name, 1, 3) AS 약어
FROM country
LIMIT 5;
8. 날짜와 시간 처리 함수
날짜와 시간을 처리하는 함수도 확인했습니다. 현재 시간 확인부터 날짜 계산, 날짜 차이 계산, 날짜 형식 변경까지 여러 함수가 있었습니다.
| 함수 | 용도 |
|---|---|
| NOW() | 현재 날짜와 시간 |
| DATE_ADD() | 날짜 계산 |
| DATEDIFF() | 두 날짜의 차이 |
| DATE_FORMAT() | 날짜 표시 형식 변경 |
SELECT
NOW() AS 현재시간,
DATE_ADD(NOW(), INTERVAL 7 DAY) AS 일주일후,
DATEDIFF('2026-12-31', CURDATE()) AS 남은일수,
DATE_FORMAT(NOW(), '%Y년 %m월 %d일 %H시') AS 포맷변환;
9. IF · IFNULL · CASE
마지막으로 조건에 따라 결과를 다르게 표시하는 함수들을 정리했습니다.
① IF()
조건이 참인지 거짓인지에 따라 서로 다른 값을 반환하는 형태입니다.
IF(조건식, 참일 때 값, 거짓일 때 값)
② IFNULL()
값이 NULL인 경우 다른 값으로 대체할 때 사용하는 함수입니다.
IFNULL(값, NULL일 경우 대체값)
③ CASE
여러 조건에 따라 서로 다른 결과를 만들 때 사용하는 구문으로 정리했습니다.
CASE
WHEN 조건식1 THEN 결과1
WHEN 조건식2 THEN 결과2
ELSE 기본값
END
IF → 단순한 조건 처리
IFNULL → NULL 처리
CASE → 여러 조건 처리
10. 2일차 교육 내용 한눈에 보기
| 배운 내용 | 복습하면서 정리한 내용 |
|---|---|
| 집계 함수 | SUM · AVG · COUNT · MAX · MIN |
| GROUP BY | 같은 값끼리 그룹화 |
| WHERE | 그룹화 전 조건 처리 |
| HAVING | 그룹화 후 조건 처리 |
| INSERT IGNORE | 중복 입력 무시 |
| ON DUPLICATE KEY UPDATE | 중복 시 UPDATE |
| @변수 | 사용자 정의 변수 |
| CAST · CONVERT | 명시적 형변환 |
| 문자열 함수 | CONCAT · UPPER · SUBSTRING |
| 날짜 함수 | NOW · DATE_ADD · DATEDIFF · DATE_FORMAT |
| 조건 함수 | IF · IFNULL · CASE |
마무리
9월 16일 교육에서는 단순한 데이터 조회에서 한 단계 더 나아가 데이터를 묶고, 계산하고, 조건을 적용하고, 필요한 형태로 가공하는 방법을 배웠습니다.
특히 GROUP BY와 HAVING의 차이, 그리고 CAST, 문자열 함수, 날짜 함수, IF·IFNULL·CASE처럼 데이터를 원하는 형태로 가공하는 함수들을 함께 정리해 두니 전체적인 흐름을 이해하는 데 도움이 되었습니다.
아직 모든 문법이 익숙한 것은 아니지만, 교육에서 배운 내용을 다시 SQL문으로 직접 작성해 보면서 하나씩 익혀가려고 합니다.