
1강에서는 SQL의 WITH 절을 활용한 CTE(Common Table Expressions)에 대해 상세히 다룹니다. 하나의 WITH 문 내에서 여러 임시 테이블을 선언하고 활용하는 방법을 배울 수 있습니다. 임시 테이블 생성문 내부에서 또 다른 임시 테이블을 생성하여 사용하는 고급 기법까지 다루어 CTE의 다양한 활용 가능성을 제시합니다.
2강에서는 SQL에서 WHERE 절 없이 JOIN을 사용했을 때 발생하는 CROSS JOIN 또는 카테시안 조인에 대해 설명합니다. 두 테이블의 모든 가능한 조합을 결과로 반환하는 N x M 건의 데이터 생성 원리를 이해할 수 있습니다. tbl_a와 tbl_b와 같은 예제 테이블을 통해 실제 CROSS JOIN의 작동 방식을 명확하게 보여줍니다.
강의 3은 SQL의 WITH RECURSIVE CTE(Common Table Expression) 문에 대해 심층적으로 다룹니다. 재귀 쿼리의 기본 문법과 동작 원리를 설명하며, n 값을 증가시키는 간단한 예제를 통해 이해를 돕습니다. 피보나치 수열 생성 및 24시간 데이터 생성 등 다양한 응용 예제를 통해 재귀 쿼리의 활용법을 학습할 수 있습니다.
강의 3 "SQL 한 문장으로 반복/순환/루프 처리"에서 이어지는 강좌입니다. 강좌 상세내용은 강의 3에 첨부된 파일을 참고하세요.
5강에서는 SQL에서 더미 테이블을 사용하여 구구단을 생성하는 기본적인 방법을 설명합니다. urlcodemap과 같은 실제 테이블을 더미 테이블로 활용하여 구구단을 세로 및 가로 방향으로 출력하는 예제를 제시합니다. CONCAT 함수를 사용하여 문자열을 결합하고, 테이블 조인을 통해 데이터를 조합하는 방법을 배울 수 있습니다.
테이블로 만드는 경우~ urlcodemap.sql 참고
구구단 만들기~ 세로로 구구단 만들기 / 가로로 구구단 만들기
6강은 SQL 더미 테이블을 활용하여 구구단을 생성하는 고급 기법을 소개합니다. FROM 절의 인라인 뷰, WITH RECURSIVE 구문, 그리고 Sequence 테이블을 이용하여 반복적인 데이터를 효율적으로 생성하는 방법을 다룹니다. 이를 통해 SQL에서 루프 처리 및 데이터 생성을 위한 다양한 접근 방식을 이해할 수 있습니다.
7강에서는 SQL에서 주어진 범위 안에서 랜덤 숫자를 생성하는 방법을 다룹니다. RAND() 함수를 사용하여 0부터 1 사이의 임의의 실수를 추출하고, 특정 범위의 임의의 정수를 생성하는 방법을 학습합니다. FLOOR() 함수를 활용하여 소수점 이하를 내림 처리하는 방법과 이를 랜덤 숫자 생성에 적용하는 예제를 제시합니다.
강의 8에서는 SQL에서 다양한 일자 및 기간 데이터를 생성하고 다루는 방법을 설명합니다. 이전 달의 마지막 날, 이번 달의 첫날과 마지막 날, 총 일수를 계산하는 LAST_DAY, DATEDIFF 함수를 활용합니다. DATE_SUB, DATE_ADD, DAYNAME 함수를 통해 특정 날짜로부터의 기간 계산 및 요일 정보 추출 방법을 배울 수 있습니다.
9강은 쉼표로 구분된 문자열 데이터를 여러 행으로 분리하는 SQL 기법을 다룹니다. SUBSTRING_INDEX 함수와 WITH RECURSIVE 또는 더미 테이블을 활용하여 데이터를 분해하는 방법을 배웁니다. 또한, 여러 건의 레코드를 쉼표로 구분된 하나의 레코드로 변환하는 GROUP_CONCAT 함수 사용법도 함께 소개합니다.
10, 11강은 행 데이터를 열 데이터로 변경하는 기본적인 SQL 기법을 설명합니다. 학생들의 과목별 점수 데이터를 예시로 들어 class 데이터 값을 컬럼으로 올리는 과정을 보여줍니다. CASE WHEN 문과 SUM 집계 함수, GROUP BY를 활용한 행-열 변환 SQL의 기초를 탄탄히 다질 수 있습니다.
10강에 이어 11강에서는 SQL에서 행(레코드) 데이터를 열(컬럼)로 변경하는 방법을 깊이 있게 다룹니다. 자동차 브랜드의 월별 판매량 데이터를 사용하여 yyyymm 행 값을 컬럼으로 올리는 실전 예제를 제공합니다. CASE WHEN 문과 SUM 함수, GROUP BY를 활용하여 데이터를 효과적으로 피벗하는 방법을 배울 수 있습니다.
강좌 12는 SQL에서 컬럼명을 레코드로, 즉 가로 데이터를 세로 데이터로 변경하는 기본 원리를 소개합니다. colnm1, colnm2, colnm3, colnm4와 같은 컬럼명을 로우로 내리는 과정을 통해 데이터 구조 변경의 핵심을 이해할 수 있습니다. CASE문과 GROUP BY, UNION ALL을 사용한 컬럼-행 변환 SQL 쿼리 작성법을 학습합니다.
13강에서는 이전 강좌에 이어 SQL에서 열(컬럼) 데이터를 행(레코드)으로 변환하는 방법을 다룹니다. 특히, 자동차 브랜드별 월별 판매량 데이터를 예제로 사용하여 실제 데이터 처리 과정을 상세히 설명합니다. MAX(CASE WHEN ... THEN ... ELSE 0 END)와 UNION ALL을 활용한 복잡한 데이터 변환 기법을 배울 수 있습니다.
마지막 14강에서는 SQL에서 날짜 및 기간 데이터를 다루는 고급 기법을 소개합니다. WITH RECURSIVE를 활용하여 현재 일자를 기준으로 주 단위, 월 단위의 기간 리스트를 생성하는 방법을 배울 수 있습니다. DAYOFWEEK, DAYNAME, DATE_FORMAT 등 다양한 날짜 관련 함수를 사용하여 스케줄링 및 기간 분석에 필요한 데이터를 효율적으로 가공하는 실전 팁을 제공합니다.
"그동안 SQL을 열심히 배웠는데 어디다 어떻게 써먹어야 할지 모르겠어요."
"이런 경우는 이렇게, 저런 경우는 저렇게. 공식처럼 쓸 수 있는 쿼리 어디 없나요?"
오픈소스 데이터베이스인 MariaDB와 HeidiSQL 환경을 통해 실전에 가까운 SQL을 공부해 보세요!
실무 상황에 유용한 사전처럼 찾아쓰는 SQL 쿼리북
다양한 데이터베이스 환경과 SQL을 배경으로 열심히 공부해 온 여러분께 격려와 응원을 보냅니다. 하지만 언제부터인지 배우는 것 따로 경험한 것 따로, 개발까지 전부 따로 가는 것은 아닌가 싶습니다. 기초를 배우고 나면 심화 학습을 공부하고, 실전 경험을 쌓으라 하며, 또 다른 분야에 도전해 보라 합니다. 끝이 없죠?
잠시 멈춰 가면 좋겠습니다. 더 강력하다는 무수한 프로그래밍 언어나 도구들은 잠시 덮어두고, 지금껏 차근차근 배우고 다듬어 온 SQL을 바탕으로 자신의 업무부터 세심히 살피는 거죠. 과연 내 업무가 신기술을 만나면 한층 더 빛을 발할 것인가, 새로운 길이 열릴 것인가 자문해 보세요.
강좌 특징
이론과 실습을 2:8 비율로 구성했습니다.
데이터를 처리하는 중간 과정을 상세히 다룹니다.
웹 서버 부하를 줄이는 방법을 알게 됩니다.
실전 업무에서 필수인 '반복 처리'를 중심으로 학습합니다.
한눈에 흐름을 볼 수 있는 마인드맵 형식의 교안을 활용합니다.
데이터 내부 변환 과정을 엑셀 표를 통해 보기 쉽게 설명합니다.
상세 학습 내용
SQL 한 문장으로 임시테이블 만들고 SELECT 하기
WHERE 절 없이 JOIN 하면 어떻게 돼요?
SQL 한 문장으로 반복/순환/루프 처리
더미 테이블 및 인라인뷰/RECURSIVE/시퀀스 테이블을 활용한 구구단
주어진 범위 내에서 랜덤 숫자 발생시키기
다양한 일자들과 기간 만들기 I
쉼표로 구분된 데이터를 N개 행으로 나열하기
행 데이터를 열로 변경하기
열 데이터를 행으로 변경하기
스케줄을 위한 기간 리스트 가져오기
이 강의는 새로운 SQL 문법이나 신기술에 대한 내용은 다루지 않습니다. 여러분이 열공해 온 SQL을 그저 조금 다른 방식으로 사용했을 뿐입니다. 알고 나면 별거 아니지만, 알기 전이라면 애가 탔을 종류의 것들일지도 모릅니다.
궁금하시죠?
Q. 왜 배워야 하죠?
모든 소프트웨어 개발자가 들을 필요는 없습니다. 하지만 데이터를 다루는 업무 담당자라면 꼭 들어두시길 권장합니다.
Q. 비전공자에게는 어려울까요?
SQL은 전공/비전공으로 나눌 수 없습니다. 호기심만 있다면 조금의 실력과 노력만 있다면 가능합니다.
Q. 어느 수준까지 설명하나요?
결과 쿼리를 내기까지의 내부적 데이터 변환 과정을 엑셀시트 수준으로 설명합니다.
실습 환경
운영 체제 및 버전(OS): Windows, macOS, Linux 등
사용 도구: MariaDB 10.x 버전 이상(일부 기능 10.8 이상) / HeidiSQL
PC 사양: 메모리 최소 4G/권장 6G 이상
강좌에서 제공되는 모든 pdf 파일의 내용은 모두 복사 가능한 형식입니다. 소스 파일을 따로 제공하지 않습니다.
잠시 멈춘 채 시원한 바람을 느낄 수 있는 그런 기회와 시간이 되었으면 합니다. 더 폭넓고 광범위한 내용들은 유튜브 채널, 『SQL뱅크』를 통해 이야기하고 있습니다.