[강동7기 전Z전능 AI PM] 코멘토 청년취업사관학교 DAY 33
DAY 33 | SQL 기초 — SELECT부터 LIKE까지 직접 짜보기
오늘은 SQL 기초를 다뤘다. SELECT, WHERE, 비교 연산자, NULL 처리, AND/OR/NOT, LIKE까지 하나씩 쿼리를 짜서 실행해보는 하루였다. SQLD를 따로 공부하고 있어서 문법 자체가 처음은 아니었는데, 손으로 돌려보니 책으로 볼 때와는 확실히 다르게 남았다.
PM에게 데이터 분석이 왜 필요한가
수업의 출발점은 “기획자가 왜 SQL까지 봐야 하느냐”였다. 결론은 가설과 기획을 논리적으로 검증하기 위해서다. 같은 기획도 “이게 좋을 것 같다”보다 “이 화면 이탈률이 40%라서 이 기능이 필요하다”처럼 숫자가 붙으면 설득력이 확연히 달라진다. 데이터에서 정보를 뽑고, 정보에서 통찰을 얻고, 통찰이 행동으로 이어지는 DIKW 흐름을 짚었는데, 결국 그 첫 단추인 데이터에 직접 접근할 수 있어야 한다는 이야기였다.
직무별 R&R도 정리했다. 프론트엔드가 수집 지점을 만들고, 백엔드가 데이터를 쌓고, 데이터 엔지니어가 파이프라인을 놓고, 데이터 사이언티스트가 모델링을, 데이터 애널리스트가 분석을 맡는다. 그리고 이 파이프라인 전체를 관통해서 “무엇을 왜 보는지”를 정의하는 허브가 PM이라는 관점이 인상적이었다. 각 직무가 다루는 데이터의 언어를 어느 정도는 알아야 그 허브 역할을 할 수 있다.
데이터 분석 프로세스는 5단계로 봤다. 문제 정의 → 데이터 수집 → 데이터 전처리 → 데이터 모델링 → 시각화 및 탐색. 이 중 문제 정의가 가장 중요하고, 실제 작업 시간의 70~80%는 전처리에 쓰인다는 점이 현실적이었다. 뭘 볼지 잘못 정하면 아무리 깔끔하게 시각화해도 소용없고, 막상 손이 가장 많이 가는 건 데이터를 다듬는 일이라는 뜻이다.
SELECT와 WHERE — 무엇을, 어디서, 어떤 조건으로
본격적인 실습은 SELECT부터였다. *로 전체 컬럼을 가져오거나, 필요한 컬럼만 골라서 가져온다.
SELECT * FROM sample21;
SELECT name, address FROM sample21;WHERE는 그 결과에서 조건에 맞는 행만 걸러내는 필터다. 비교 연산자로 같다(=), 같지 않다(<> 또는 !=)를 표현한다.
SELECT * FROM sample21 WHERE no = 2;
SELECT * FROM sample21 WHERE no <> 2; /* != 도 같지 않다는 의미 */
SELECT * FROM sample21 WHERE name = "박준용";NULL은 =로 비교하지 않는다
NULL 처리가 첫 번째 포인트였다. NULL은 “값이 없음”이라서 = NULL로는 걸러지지 않고, IS NULL / IS NOT NULL을 써야 한다.
SELECT * FROM sample21 WHERE birthday IS NULL;
SELECT * FROM sample21 WHERE birthday IS NOT NULL;AND가 OR보다 먼저 계산된다
AND/OR/NOT을 조합할 때 우선순위가 두 번째 포인트였다. AND가 OR보다 먼저 계산되기 때문에, 의도한 조건 묶음이 있으면 괄호로 명시해야 한다.
SELECT * FROM sample24 WHERE a <> 0 AND b <> 0;
-- AND를 OR보다 먼저 계산하므로 의도한 조건은 괄호로 묶는다
SELECT * FROM sample24 WHERE (a = 1 OR a = 2) AND (b = 1 OR b = 2);
SELECT * FROM sample24 WHERE NOT (a <> 0 OR b <> 0);괄호 없이 a = 1 OR a = 2 AND b = 1이라고 쓰면 a = 1 OR (a = 2 AND b = 1)로 해석돼서 의도와 다른 결과가 나온다. 이 부분은 책으로 볼 때 늘 헷갈렸는데, 괄호를 넣은 쿼리와 안 넣은 쿼리를 나란히 돌려서 결과 행이 달라지는 걸 눈으로 보니 확실히 정리됐다.
LIKE와 와일드카드
세 번째는 LIKE 패턴 매칭이었다. %는 임의의 문자열을 뜻하는 와일드카드다.
SELECT * FROM sample25 WHERE text LIKE 'SQL%'; -- SQL로 시작
SELECT * FROM sample25 WHERE text LIKE '%\%%'; -- % 문자 자체를 검색 (이스케이프)% 자체를 검색해야 할 때는 \%로 이스케이프한다는 것도 다뤘다. 와일드카드로 쓰이는 문자를 값으로 찾으려면 이스케이프가 필요하다는, 실무에서 한 번쯤 걸리는 지점이었다.
Chinook 샘플 DB로 실전 연습
마지막은 Chinook 샘플 DB로 실전 연습이었다. Customer, Track, Invoice, Employee 같은 실제 테이블에 지금까지 배운 문법을 적용해봤다.
-- Email에 gmail.com이 포함된 고객
SELECT * FROM Customer WHERE Email LIKE '%gmail.com';
-- FirstName이 'A'로 시작하는 고객
SELECT * FROM Customer WHERE FirstName LIKE 'A%';
-- Track 이름에 'Love'가 포함된 트랙
SELECT * FROM Track WHERE Name LIKE '%Love%';
-- Company가 입력 안 된 고객
SELECT * FROM Customer WHERE Company IS NULL;
-- Title이 'Sales Support Agent'인 직원
SELECT * FROM Employee WHERE Title = 'Sales Support Agent';책으로 볼 때와 손으로 짤 때
오늘 가장 남는 건 실습 방식 자체였다. SQLD를 공부하면서 IS NULL/IS NOT NULL, AND/OR 우선순위, LIKE 와일드카드 같은 개념을 책으로 여러 번 봤는데도 머리에 잘 안 붙었다. 특히 연산자 우선순위는 볼 때마다 “AND가 먼저였나 OR가 먼저였나”를 다시 확인하곤 했다.
그런데 오늘처럼 직접 쿼리를 짜서 실행하고 결과 행이 어떻게 달라지는지 눈으로 확인하니 훨씬 잘 남았다. 괄호를 뺐을 때 안 나와야 할 행이 딸려 나오는 걸 보면 우선순위가 그냥 외워진다. 이론을 암기하는 것보다 손으로 돌려보고 결과를 확인하는 게 체득에는 확실히 낫다는 걸 다시 느낀 하루였다.
취업 부트캠프 청년취업사관학교 새싹 aipm dx교육 ai교육 실무프로젝트 실무경험 취업포트폴리오 포트폴리오 전z전능 코멘토 모비니티