SQL 어떻게 공부해요? : 나만의 연습법과 SQL연습 사이트 추천
작년 9월 SQLD 자격증 시험을 목표로 공부 시작했다가 코로나때문에 시험응시 포기ㅠㅠ 그리고 한동안 공부를 안했습니다. 그러다 업무때문에 다시 독학을 시작하게 되었는데요. 확실히 책으로 공부한거랑 실제 사용하는거랑 어느정도 온도차가 존재하더라구요. 마치 토익 고득점인데도 외국인 앞에만 서면 한없이 작아지는 것처럼요....(눈물)
저는 제로베이스에서 시작하는 걸 선호하는 사람이라 이미 만들어진 샘플DB를 이용하지 않고 설계부터 직접했습니다. 몸이 고생해야 쉽게 안 잊어먹는 것 같거든요^^;
1. DB설계하기
가장 먼저 어떤 DB를 만들건지 결정합니다. 저는 가장 익숙한 쇼핑몰 DB를 만들기로 했어요. 쇼핑몰 회원정보(아이디, 비밀번호, 주소, 핸드폰번호 등)과 고객에게 광고문자를 보내기 위해 필요한 정보(문자수신동의여부), 그리고 고객은 어떤 구매활동을 했는지(주문일자, 주문상품, 주문금액), 구매한 상품은 무엇인지(상품명, 상품가격, 상품카테고리 등)... 어차피 실습이니까 이 정도로만 정리했습니다.
각각의 정보는 그룹(=테이블) 지어놓고 서로 어떻게 연결시킬지 알아봅니다.
저는 [쇼핑몰ERD]로 구글링해서 참고자료를 얻었습니다. 기본적인 쇼핑몰DB의 골격은 모두 비슷하므로 적당한 걸로 참고하면 됩니다.
2. 다이어그램 그리기
저는 MySQL을 공부하고 있기 때문에 워크벤치의 다이어그램 그리는 기능을 이용했습니다. 도식화하면 이해도 빠르고 헷갈리지 않아요. 다이어그램 그리는 방법은 지난번(아주 오래 전) 추천한 책을 보고 따라했어요.
나 혼자 공부한다 : 비전공자의 SQL 독학하기+SQL 추천도서
대부분의 직장인들이 그러듯이 유난히 회사에서 팍팍했던 날은 잡코리아 어플을 열어봅니다. 요즘 마케터 지원자격이나 우대사항 보면 이게 개발자를 뽑는건지, 마케터를 뽑는건지 헷갈리더군
roundheng.tistory.com
다이어그램을 그리다 보면 SQL책 초반에 나오는 테이블 생성에 대한 내용(Primary Key, Unique 등)을 자연스럽게 숙지하게 됩니다. 이렇게 직접 DB구조를 짜게 되면 나중에 단순 추출/조회 작업할 때에도 내가 만든 구조를 떠올리게 돼요.
"고객한테 문자 보내려면 userinfo 테이블하고 channel 테이블을 조인해서 뽑아야겠네" 같은거요. 초반이 좀 개고생이긴하지만 확실한 공부법입니다.
3. 샘플 데이터 붓기
그럴싸한 실습을 위해선 데이터가 많으면 많을수록 좋습니다. 엑셀파일 통으로 부을 예정이기 때문에 엑셀 작업이 필요합니다. 랜덤함수를 써서 가라 데이터를 만들어 주세요. 그리고 csv엑셀파일을 Import하면 됩니다.
위 엑셀파일을 임포트한 뒤, 아래 주문테이블을 유저키순으로 조회하니 아래처럼 결과가 나타납니다.
4. 마음껏 추출해보기
그리고 스스로 문제를 내고 쿼리를 만들어 봅니다. 저는 일반적인 마케터들이 주로 보는 데이터를 문제로 내봤어요.
-문자수신동의한 고객은?
-특정일 구매자 중 메일발송 가능한 고객은?
-구매건수 15건 이상 고객은 GOLD, 9-14건은 SILVER, 8건 이하는 BRONZE로 업데이트 하자!
-고객별 주문건수와 메일수신동의한 고객의 메일주소는?
-판매개수 내림차순 상품을 나열해보자!
-휴면고객 중 30만원 이상 구매한 이력 있는 고객에게 쿠폰DM 보내기 위한 메일주소는?
-일별 매출 및 구매자수는?
-건강 관련 상품 구매한 고객의 정보는?
정답은 없습니다! 직접 만든 데이터이므로 실제로 데이터가 맞는지 검증도 직접 해봐야 합니다. (엑셀 노가다 작업...) 꽤 시간이 많이 걸리는 공부방법이지만 실무에서 데이터를 마음대로 사용할 수 없는 사람에겐 유익한 공부법이라고 생각해요.
"나는 그냥 데이터 조회만 할 수 있으면 되는데?"
테이블 생성이나 데이터 삽입같은 업무는 회사의 데이터 담당자가 할테니 마케터는 그저 추출/조회 정도만으로도 충분하다고 한다면 굳이 먼 길 돌아갈 필요 없죠. 잘 차려놓은 밥상에 수저만 뜨면 됩니다.
코딩테스트 연습
기초부터 차근차근, 직접 코드를 작성해 보세요.
programmers.co.kr
프로그래머스라는 사이트인데요. 개발자를 위한 사이트이지만 코딩테스트와 SQL실습을 할 수 있는 메뉴도 있어요.
가장 기본적인 SELECT문부터 가장 많이 사용하게 되는 JOIN까지 실습해 볼 수 있습니다.
MySQL과 오라클 두 버전으로 실습 가능합니다. 샘플데이터는 해외 유기동물보호소 데이터를 사용하고 있다고 합니다.
다음 문제로 넘어갈수록 완료자수가 줄어드네요...ㅋㅋ
문제풀이 화면입니다. 답이 보이지만 1번 문제니까..괜찮겠죠? ㅎ
어려울 땐 아래 [질문하기]에서 다른 사용자가 공유한 쿼리를 참고할 수도 있습니다.
끝!