데이터베이스란 정해진 구조로 모아 둔 데이터의 묶음이고, 이 데이터를 넣고 꺼내고 지키는 일을 맡는 프로그램을 DBMS(데이터베이스 관리 시스템)라고 부릅니다. 저도 SQL 을 처음 배우면서 「엑셀에 잘 쌓아 두면 그게 데이터베이스 아닌가?」 하는 의문부터 들었는데요, 이번 글에서는 엑셀 시트와 데이터베이스가 어디서 갈라지는지 예시 표로 함께 알아보겠습니다.
SQL 기초 시리즈 0/12 · 전체 커리큘럼
오늘 배울 개념
먼저 세 단어를 구분해 두겠습니다.
- 데이터: 주문 한 건, 회원 이름 하나처럼 기록해 둔 값입니다.
- 데이터베이스(Database): MySQL 매뉴얼은 「구조화된 데이터의 모음」이라고 설명하는데요, 장보기 목록처럼 작은 것부터 회사 전체 정보까지 크기는 상관없다고 합니다.
- DBMS(Database Management System): 데이터베이스에 데이터를 넣고, 꺼내고, 처리하려면 필요한 프로그램입니다. PostgreSQL·MySQL 같은 이름이 여기에 해당하죠.
비유하자면 데이터베이스는 도서관 서고이고, DBMS 는 서고를 지키는 사서입니다. 엑셀 파일은 제 책상 위의 공책에 가까운데요, 공책은 제가 펴서 직접 쓰지만 서고의 책은 이용자가 사서에게 요청하고 사서가 정해진 규칙대로 꺼내 주고 꽂아 줍니다. PostgreSQL 튜토리얼도 같은 구조를 설명하는데요, 데이터베이스 파일을 관리하는 서버 프로그램이 따로 있고 사용자의 프로그램(클라이언트)은 이 서버에 접속해 작업을 요청하며, 서버는 여러 클라이언트의 동시 접속을 처리할 수 있다고 합니다.
개념 그림: 사용자는 파일을 직접 열지 않고 DBMS 에 요청합니다
그렇다면 공책으로도 충분해 보이는데, 사서는 왜 필요한 걸까요?
예시로 이해하기
작은 온라인 문구점의 주문을 엑셀 시트 한 장에 쌓아 왔다고 해 보겠습니다(가상 데이터).
| 주문번호 | 주문일 | 회원 이름 | 회원 연락처 | 상품 | 금액 |
|---|---|---|---|---|---|
| 1001 | 2026-10-01 | 김하늘 | 010-1111-2222 | 머그컵 | 12000 |
| 1002 | 2026-10-01 | 이도윤 | 010-3333-4444 | 텀블러 | 18000 |
| 1003 | 2026-10-02 | 김하늘 | 010-1111-2222 | 텀블러 | 18000 |
| 1004 | 2026-10-03 | 박서연 | 010-5555-6666 | 머그컵 | 12000 |
| 1005 | 2026-10-03 | 김하늘 | 010-9999-2222 | 컵받침 | 5000 |
| 1006 | 2026-10-04 | 이도윤 | 010-3333-4444 | 머그컵 | 1만2천 |
여섯 줄인데도 벌써 세 가지가 보입니다.
- 같은 정보가 되풀이됩니다. 김하늘 님의 연락처가 세 번 적혀 있어서, 번호가 바뀌면 세 군데를 모두 고쳐야 합니다.
- 어느 값이 맞는지 모릅니다. 1005번 주문의 연락처만 다른데, 번호를 바꾼 것인지 잘못 적은 것인지 시트만 봐서는 알 수 없죠.
- 규칙이 없습니다. 1006번 금액은 「1만2천」이라는 글자인데, SUM 함수는 글자를 건너뛰고 숫자만 더하기 때문에 이 주문은 합계에서 빠집니다. 비슷한 문제는 텍스트로 저장된 숫자 글에서도 다뤘습니다.
관계형 데이터베이스에서는 이런 시트를 회원 표와 주문 표로 나눠 담도록 설계합니다. 연락처는 회원 표에 한 번만 적고, 주문 표에는 「누가 주문했는지」를 가리키는 회원 번호만 남기는 방식인데요, 이렇게 하면 번호가 바뀌어도 한 곳만 고치면 됩니다.
개념 그림: 연락처는 회원 표에 한 번만, 주문 표에는 회원 번호만 남깁니다
금액 열에는 숫자만, 회원 번호에는 실제로 있는 회원만 들어가도록 규칙을 걸어 둘 수도 있습니다. PostgreSQL 제약 조건 문서는 상품 가격 열이라면 양수만 받아야 하고, 상품 표에는 상품 번호마다 한 줄만 있어야 한다는 예를 드는데요, 이런 규칙은 데이터베이스가 직접 지킵니다. 표끼리 잇는 열(키)은 2회, 나누는 기준(정규화)은 3회에서 다룹니다.
엑셀 시트와 데이터베이스는 무엇이 다를까요?
엑셀이 부족하다는 뜻은 아니고, 잘하는 일이 다릅니다.
| 기준 | 엑셀 시트 | 관계형 데이터베이스 |
|---|---|---|
| 담는 방식 | 시트 한 장에 자유롭게 | 주제별 표로 나눠, 열마다 정해진 데이터 타입 |
| 크기 | 워크시트 한 장에 1,048,576행 × 16,384열 | 표를 나눠 담고 서버가 파일을 관리 |
| 규칙 | 사람이 지키거나 유효성 검사로 일부 | 제약 조건을 데이터베이스가 강제 |
| 여러 명이 동시에 | 공동 작성 시 같은 셀은 마지막에 저장한 변경이 남음 | 트랜잭션으로 작업을 통째로 반영하거나 취소 |
| 꺼내는 방법 | 필터·피벗·함수를 손으로 | SQL 로 원하는 조건을 문장처럼 요청 |
동시 수정은 조금 더 짚어 볼 만한데요, 엑셀 공동 작성 도움말은 Microsoft 365 구독과 OneDrive·SharePoint 저장이 필요하고, 두 사람이 같은 셀을 고치면 몇 가지 예외를 빼고 마지막에 저장된 변경이 남는다고 안내합니다.
데이터베이스는 이 문제를 트랜잭션으로 다룹니다. PostgreSQL 트랜잭션 튜토리얼은 A 계좌에서 100달러를 빼 B 계좌에 넣는 예를 드는데요, 여러 단계를 하나의 「전부 아니면 전무」 작업으로 묶어서 중간에 실패하면 어떤 단계도 반영되지 않고, 끝나기 전의 중간 상태는 동시에 돌고 있는 다른 트랜잭션에 보이지 않는다고 합니다.
개념 그림: 빼기와 넣기 중 하나만 반영되는 일이 없도록 한 덩어리로 묶습니다
그래서 제 기준으로는 이렇게 고르려고 합니다.
- 엑셀로 충분할 때: 혼자 또는 소수가 보는 보고서, 한 번 분석하고 끝나는 데이터
- 데이터베이스를 생각할 때: 같은 정보가 여러 시트에 반복될 때, 여러 사람이나 프로그램이 동시에 쓰고 고칠 때, 값이 틀리면 안 되는 주문·결제 기록일 때
왜 관계형 데이터베이스부터 배울까요?
PostgreSQL 튜토리얼은 PostgreSQL 을 관계형 데이터베이스 관리 시스템(RDBMS)이라고 소개하면서, 릴레이션(relation)은 표(table)를 가리키는 수학 용어라고 설명합니다. 표에 담는 방식이 흔해서 당연해 보이지만 다른 구성 방법도 여럿 있다고 덧붙이는데요, 관계형 방식을 먼저 배우는 이유는 세 가지로 볼 수 있습니다.
- 표라서 읽기 쉽습니다: 각 표는 이름이 있는 행의 모음이고, 행마다 같은 이름의 열을 가지며, 열마다 데이터 타입이 정해져 있습니다. 엑셀 표를 써 본 분이라면 익숙한 모양이죠.
- 규칙을 데이터베이스가 지킵니다: MySQL 매뉴얼은 일대일·일대다 같은 관계, 중복 불가·필수 같은 규칙을 정해 두면 데이터베이스가 이를 강제하고, 잘 설계했다면 앱이 중복되거나 빠진 데이터를 보지 않게 된다고 설명합니다.
- SQL 이라는 공통 언어가 있습니다: MySQL 매뉴얼은 SQL 을 데이터베이스에 접근할 때 가장 흔히 쓰는 표준 언어라고 하고, ANSI/ISO SQL 표준이 정의한다고 밝힙니다. 다만 PostgreSQL 문서는 작성 시점 기준으로 최신 표준(SQL:2023)의 핵심 기능을 모두 따른다고 밝힌 DBMS 는 없다고 적고 있는데요, 그래서 이 시리즈는 표준 SQL 을 기준으로 배우고 제품별 차이는 그때그때 짚겠습니다.
연습 문제
1. (쉬움) 데이터, 데이터베이스, DBMS 를 각각 한 줄로 설명해 보세요.
정답 보기
데이터는 기록해 둔 값 하나하나, 데이터베이스는 그 값을 정해진 구조로 모아 둔 묶음, DBMS 는 데이터베이스에 데이터를 넣고 꺼내고 지키는 프로그램입니다. 도서관으로 치면 책, 서고, 사서입니다.
2. (보통) 위 예시 표에서 김하늘 님의 연락처가 주문마다 다르게 적히지 않게 하려면 표를 어떻게 바꾸면 좋을까요?
정답 보기
회원 정보(회원 번호·이름·연락처)를 회원 표로 따로 빼서 회원마다 한 줄만 두고, 주문 표에는 회원 번호만 남깁니다. 연락처가 한 곳에만 있으니 번호가 바뀌어도 한 번만 고치면 되고, 주문마다 다른 번호가 적힐 일이 없습니다.
3. (보통) 엑셀 공동 작성에서 두 사람이 같은 셀을 동시에 고치면 어떻게 되나요? 데이터베이스의 트랜잭션은 이와 무엇이 다른가요?
정답 보기
엑셀 공동 작성 도움말에 따르면 몇 가지 예외를 빼고 마지막에 저장된 변경이 남습니다. 트랜잭션은 여러 단계를 한 덩어리로 묶어 전부 반영하거나 전부 취소하고, 끝나기 전의 중간 상태를 다른 트랜잭션이 보지 못하게 합니다.
헷갈리기 쉬운 것
- 데이터베이스와 DBMS 는 다른 말입니다: 일상에서는 섞어 쓰지만, 데이터베이스는 데이터 묶음이고 PostgreSQL·MySQL 은 그것을 관리하는 프로그램(DBMS)입니다.
- 시트 여러 장이 곧 관계형 데이터베이스는 아닙니다: 엑셀에서도 시트를 나눌 수는 있지만, 표끼리 이어지는 규칙과 값의 규칙을 프로그램이 강제한다는 점이 다릅니다.
- 표 안의 행 순서는 보장되지 않습니다: PostgreSQL 튜토리얼은 열의 순서는 정해져 있어도 SQL 은 표 안 행의 순서를 보장하지 않는다고 설명합니다. 원하는 순서로 보려면 조회할 때 정렬을 따로 요청해야 하는데요, 이 방법은 8회에서 다룹니다.
마치며
데이터베이스는 정해진 구조로 모은 데이터이고, DBMS 는 여러 사람이 그 데이터를 규칙대로 안전하게 쓰게 해 주는 프로그램입니다. 엑셀 시트 한 장에 모든 것을 적으면 같은 정보가 반복되고 어느 값이 맞는지 흐려지는데, 관계형 데이터베이스는 표를 나누고 규칙을 걸어 이 문제를 줄입니다. 저도 이 시리즈를 따라가며 하나씩 공부해 보려고 하니, 전체 커리큘럼을 참고해 주세요. 다음 글에서는 관계형 데이터베이스의 기본 구조인 테이블·행·열·스키마를 다룹니다.
자주 묻는 질문
- 데이터베이스란 무엇인가요?
- 정해진 구조로 모아 둔 데이터의 묶음입니다. MySQL 매뉴얼은 장보기 목록처럼 작은 것부터 회사 전체 정보까지 크기와 상관없이 구조화된 데이터 모음을 데이터베이스라고 설명합니다. 이 데이터를 넣고 꺼내는 프로그램은 DBMS 라고 따로 부릅니다.
- 엑셀과 데이터베이스의 차이는 무엇인가요?
- 엑셀은 시트 한 장에 자유롭게 적고 사람이 직접 고치는 도구이고, 관계형 데이터베이스는 주제별 표로 나눠 담고 값의 규칙과 동시 작업을 DBMS 가 관리합니다. 혼자 보는 보고서나 한 번 쓰는 분석은 엑셀로 충분하고, 여러 사람이 같은 데이터를 계속 쓰고 고친다면 데이터베이스를 검토해 볼 만합니다.
- SQL 을 배우려면 엑셀을 잘해야 하나요?
- 꼭 그렇지는 않습니다. 다만 엑셀 표의 행·열, 필터, 피벗 테이블에 익숙하다면 SQL 의 표, 조건, 집계 개념이 비슷하게 느껴져 이해가 빠를 수 있습니다.
관련 글 더 보기
- 엑셀 피벗테이블이란? 뜻부터 만들기·새로고침까지 - 엑셀 안에서 표를 기준별로 요약하는 방법
- 엑셀 중복 값 제거와 찾기 - 시트에 반복된 데이터를 찾아 정리하는 방법
- 구글 시트 QUERY 함수 기초 - 시트 안에서 SQL 과 닮은 문장으로 데이터를 꺼내는 함수
