본문 바로가기
카테고리 없음

(9/17) MySQL 공부 3일차|JOIN·인덱스·VIEW·PyMySQL 정리

by proprocess-manager 2026. 9. 17.
반응형

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문으로 직접 작성해 보면서 하나씩 익혀가려고 합니다.

MySQL SQL GROUP BY HAVING 집계함수 CAST 문자열함수 날짜함수 IF CASE 데이터베이스
반응형