안녕! 오늘부터 우리 SQL에 대한 멋진 새 강의를 시작할 거야.
이 강의는 SQL을 전혀 모르는 사람들(너 진짜 로봇 아니지?)을 위한 거야. 근데 진짜 배우고 싶다면 완전 딱이야🧠. 완전 기초부터 시작해서, 나중엔 stored procedure, nested transaction, trigger, 그리고 report 자동화까지 다뤄볼 거야.
강의에는 수백 개의 실전 과제가 준비되어 있어서, 이론과 실제 SQL 활용 사이의 연결고리를 튼튼하게 만들어줄 거야. 그리고 마지막엔 100개가 넘는 테이블로 이루어진 대형 최종 프로젝트😅가 기다리고 있어.
우리 목표는 — 어떤 데이터 문제든 해결할 수 있을 만큼 SQL을 자신 있게 다루게 해주는 거야. 강의 끝나면 SQL이 너한테 직관적인 도구가 될 거야. 쿼리 작성, 데이터베이스 설계, 복잡한 분석 문제도 고민 오래 안 하고 자연스럽고 빠르게 할 수 있게 될 거야.
자료 전달 방식
강의 중에 어떤 주제들은 짧게 언급하고, 나중에 별도 강의에서 자세히 다룰 거야. 예를 들어, relational model을 소개할 때 table 사이의 관계를 안 짚고 넘어갈 수 없지. 마찬가지로, 초반엔 데이터베이스 schema나 예시를 아주 단순하게 보여줄 수도 있어. 괜히 머리 아프게 하지 않으려고.
이런 방식이 필요한 이유는, 한 번에 다 알려주기보단 단계별로 익히는 게 훨씬 좋아서야 — 한 주제를 제대로 알려면 다른 기본 개념도 조금씩 알아야 하거든. 그러니까 걱정하지 마, 빈틈은 다 채워줄 거야.
강의 구조
강의는 여러 단계로 나뉘어 있고, 각 단계마다 여러 개의 강의가 있어. 강의마다 이론, 실습 문제, 그리고 복습용 테스트가 준비되어 있어.
초반 단계에선 모든 문제를 사이트에서 바로 풀 수 있어 — 추가 프로그램 설치 필요 없어. 몇 단계 지나면 PostgreSQL, 전문 IDE, 필요한 플러그인까지 차근차근 설치해볼 거야. 순서대로 하나씩!
왜 PostgreSQL일까?
PostgreSQL은 진짜 강력하고 인기 많은 데이터베이스야. 어떤 프로젝트든 충분히 쓸 수 있어. 은행, 스타트업, 쇼핑몰, 게임 스튜디오까지 다 써. 이걸로 Instagram도 만들 수 있고, 커피머신 제어하는 원자력 발전소도 만들 수 있어. 만약 더 큰 걸 원하면, PostgreSQL 배우고 나면 Microsoft SQL Server나 Oracle DB(!)로 넘어가는 것도 쉬워.
우리는 PostgreSQL 17 버전으로 예제 다룰 거야. 너도 그렇게 해보는 걸 추천해!
이 모든 건 앞으로 할 거고, 오늘은 완전 처음부터 시작할 거야...
그럼 데이터베이스가 뭐야?
상상해봐, 네가 모든 중요한 데이터 — 비밀번호, 장보기 목록, 전 남친/여친 번호, 좋아하는 레시피 — 이걸 다 "jizn.xlsx"라는 거대한 Excel 파일에 저장한다고 해📉. 근데 이 파일은 점점 커지고, 느려지고, 깨지고, 어느 순간 '이제 어른이 될 때가 됐구나, 더 좋은 방식으로 데이터 저장해야겠다'는 생각이 들어. 그때 데이터베이스로 넘어가는 거지.
데이터베이스는 그냥 표가 아니야. Excel이랑 비슷하지만, 슈퍼 Excel 같은 거지: 빠르게 검색, 필터, 데이터 업데이트 다 할 수 있어. 수백만 줄도 거뜬하고, 느려지지도 않고, "파일이 손상되었습니다" 이런 소리도 안 해 💔. 한마디로, 네가 2019년 코로나 전 그 시절에 만난 그 사람 번호를 어디 저장했는지 절대 안 까먹는 업그레이드된 비서 같은 존재야.
왜 필요한데?
— 라고 물을 수도 있지. 진짜 필요해? 난 데이터베이스 안 쓰는데... 진짜 그럴까?
네 핸드폰에 있는 모든 게 데이터베이스에 저장돼. 사진, 메시지, 이메일, 메모 — 전부 데이터베이스에 있어. 이미 클라우드로 옮겼어도 방심 금지 — 이제 네 데이터는 클라우드에 있는 데이터베이스에 저장돼😬. 인터넷 전체, 세상 모든 데이터가 데이터베이스에 있어. 그리고 너가 IT쟁이라면, 이 사실로 돈도 벌 수 있어 💰.
진짜야, 봐봐:
- 온라인 쇼핑몰: 장바구니에 상품 추가하면, 데이터베이스가 네 선택을 저장하고, 나중에 결제 정보로 넘겨줘.
- 소셜 네트워크: 좋아요, 댓글, 친구 — 전부 데이터베이스에 저장돼.
- 은행 시스템: 데이터베이스 덕분에 잔액 확인, 거래 처리, 정보 즉시 접근이 가능해.
이 모든 게 데이터베이스 덕분에 가능한 거야. 데이터베이스는:
- 저장: 데이터가 문서 상자처럼 사라지지 않아.
- 관리: 데이터가 정리되고, 구조화되고, 접근 가능해.
- 추출: 원하는 정보를 빠르고 쉽게 꺼낼 수 있어.
데이터베이스의 기본 요소
데이터베이스는 몇 가지 기본 블록으로 만들어져 있어. 지금부터 그걸 알아볼 거야. 이 단계에선 간단하게 비교해보자 — 데이터베이스는 Excel 표랑 비슷해(근데 훨씬 더 좋아!).
테이블
Excel 표를 생각해봐: 행과 열이 있고, 다 정리되어 있지. 데이터베이스의 테이블도 비슷하게 동작해. 테이블은 데이터베이스에서 데이터를 저장하는 기본 구조야.
각 테이블은:
- 자기만의 이름이 있어(예:
students또는courses). - 행과 열로 구성돼.
행
행은 네가 저장하는 기록 또는 객체야. 한 행은 하나의 객체/엔티티, 예를 들면 학생 정보 같은 거지.
학생 데이터베이스의 행 예시:
id: 1, name: 알렉스, age: 20, group: A1
열
열은 객체의 속성 또는 attribute야. column이라고도 해. 예를 들면:
id— 학생의 고유 번호.name— 이름.age— 나이.group— 소속 그룹 이름.
이런 방식 덕분에 데이터를 나눠서, 어디에 뭐가 있는지 딱 알 수 있어.
이게 우리 students 테이블 모습이야:
실제로 어떻게 동작할까?
Excel 표는 프로그램(Microsoft Excel)과 그 파일로 다루지. 데이터베이스도 마찬가지야. 데이터베이스 프로그램을 DBMS(데이터베이스 관리 시스템)라고 부르고, 그 "문서"는 그냥 데이터베이스라고 해.
DBMS는 이렇게 할 수 있어:
- 테이블에 새 행 추가(예: 새 학생).
- 아무 열의 데이터 수정.
- 정보 검색, 예: "A1 그룹 학생 다 찾아줘".
- 필요 없어진 행 삭제.
DBMS로 데이터 다루는 과정
너(사용자나 개발자)는 데이터가 저장된 파일을 직접 만지는 게 아니야. 대신 "쿼리"를 만들어 — 뭘 얻거나 바꿀지 정해서 — 그걸 DBMS에 넘겨. 보통 이럴 때 쓰는 게 query language고, 그중 제일 많이 쓰는 게 SQL이야. 우리도 이걸 배울 거야. DBMS는 네 SQL 쿼리를 받아서 "이해"하고, 데이터베이스에 접근해서 필요한 작업을 하고, 결과를 돌려줘.
데이터베이스 작업의 아주 간단한 흐름:
- 사용자가 쿼리 생성.
- 쿼리가 DBMS로 전달됨.
- DBMS가 데이터베이스에 접근.
- 데이터베이스가 정보를 DBMS에 반환.
- DBMS가 쿼리 기반으로 데이터 처리.
- 결과가 사용자에게 반환됨.
왜 데이터베이스가 필요할까?
지금쯤 누군가는 "그냥 Excel 업그레이드 버전 같은데, 왜 이렇게 복잡하게 해?"라고 생각할 수도 있어.
데이터베이스가 필요한 이유 몇 가지:
- 대용량 데이터 처리. 수백만 명의 사용자 데이터를 관리해야 한다고 상상해봐. Excel 표로는 절대 못 버텨.
- 정보에 쉽게 접근. "A1 그룹에서 20살 넘는 학생 다 찾아줘" 같은 쿼리도 데이터베이스는 몇 ms만에 해줘. Excel에선... 행운을 빌어야지.
- 데이터 정리와 일관성. 데이터베이스는 정보가 항상 정리되고, 모순 없이 유지되게 해줘.
- 여러 명이 동시에 접근. 너랑 동료가 같은 데이터베이스를 동시에 써도 충돌 없이 잘 돼. 구조가 그걸 가능하게 해줘.
예를 들어, 네가 온라인 쇼핑몰을 만든다고 해보자. 상품 정보(이름, 가격, 카테고리), 고객 정보(이름, 연락처), 그리고 주문 정보(누가, 뭘, 언제 샀는지)를 저장해야 해. 이걸 한 표에 다 넣으면 금방 복잡해지고, 데이터가 중복되고, 찾거나 수정할 때 실수하기 쉬워져.
데이터베이스는 더 똑똑한 방법을 제공해: 정보를 논리적 블록(테이블)으로 나누는 거지. 각 테이블은 한 가지 객체(예: 상품, 사용자)만 저장해. 중요한 건, 이 테이블들을 서로 연결해서 실제 관계(예: 어떤 사용자가 어떤 상품을 주문했는지)를 표현할 수 있다는 거야.
이걸 왜 배워야 할까?
백엔드 개발이든 데이터 다루는 일이든 — 데이터베이스는 항상 옆에 있을 거야.
이런 사람들한테 특히 필요해:
- 💻 웹 개발자 — 사용자, 게시글, 장바구니 등 모든 걸 저장하려면 필요해.
- 📊 분석가 — 필요한 숫자 뽑고, 리포트 만들려면 필수.
- 🛠️ 관리자 — 데이터베이스가 느려지거나 멈추지 않게 하려면 꼭 알아야 해.
- 🧠 프로그래머 — 앱이 그냥 돌아가는 게 아니라, 똑똑하고 동적으로 만들려면 데이터베이스가 필요해.
그리고 — 면접에서 데이터베이스 엄청 좋아해. 거의 항상 SQL 쿼리 한 번 써보라고 하거나, JOIN이 뭔지 설명해보라고 할 거야.
그러니까, 더 성장하고 싶으면 — 데이터베이스랑 친해지는 게 좋아. 이건 진짜 너를 자신감 있는 개발자로 만들어주는 핵심 스킬 중 하나야.
GO TO FULL VERSION