우리가 일상에서 다루는 데이터는 정말 다양합니다. 컴퓨터 안에 기록된 모든 파일, 사진, 문서, 심지어는 메모까지 전부 다 데이터입니다. 그런데 이렇게 방대한 데이터를 그냥 마구잡이로 쌓아두면, 나중에 필요한 정보를 찾기가 쉽지 않을것이다
마치 책이 아무렇게나 쌓여 있는 도서관에서 원하는 책을 찾으려는 것과 같습니다.
그래서 필요한 것이 바로 데이터베이스(Database)입니다. 데이터베이스는 특정 데이터를 쉽게 찾아 활용할 수 있도록 체계적으로 정리한 데이터의 집합을 말합니다. 책의 주제, 저자, 출판 연도별로 분류된 도서관을 상상하면 이해가 쉽습니다.
DB와 DBMS
그렇다면 데이터베이스(DB)와 DBMS(Database Management System)는 어떻게 다를까요?
간단히 말해, DB는 ‘정리된 데이터 그 자체’이고, DBMS는 그 데이터를 관리하고 다룰 수 있는 ‘도구’입니다.
DBMS가 필요한 이유
- 생산성 향상 – 수많은 데이터를 빠르고 효율적으로 조회하고 수정할 수 있습니다.
- 기능성 확보 – 데이터 검색, 수정, 삭제, 보안 등 다양한 기능을 제공합니다.
- 신뢰성 확보 – 데이터 손상 방지, 동시 접근 관리 등 안정성을 보장합니다.
좋은 DBMS가 있으면 데이터 관리가 훨씬 편리해집니다. 그런데, 여기서 중요한 점은 DBMS와 대화할 수 있는 언어가 필요하다는 것입니다. 그 언어가 바로 SQL(Structured Query Language)입니다.
DBMS 의 종류
DBMS에는 여러가지 종류가 존재하는데, 가장 중요한것은 RDBMS 이다. 다른것들은 넘어갈수 있어도 RDBMS 는 더욱 집중해서 볼 필요가 있다.
계층형 DBMS(Hierarchical DBMS)
- 데이터를 트리(tree) 구조로 저장합니다.
- 부모-자식 관계가 뚜렷하며, 경로가 고정되어 있습니다.
- 예시: 옛날 은행 시스템, 메인프레임 환경.
- 장점: 데이터 접근 속도가 빠름.
- 단점: 구조 변경이 어렵고 유연성이 낮음.
관계형 DBMS(Relational DBMS) (중요)
- 데이터를 행(row)과 열(column)로 구성된 테이블 형태로 저장합니다.
- 서로 다른 테이블은 ‘관계(Relationship)’로 연결됩니다.
- 예시: MySQL, PostgreSQL, Oracle, SQL Server.
- 장점: 구조가 이해하기 쉽고, 표준 SQL로 다룰 수 있음.
객체지향 DBMS(Object-Oriented DBMS)
- 객체지향 프로그래밍(OOP) 개념을 DB에 적용.
- 데이터와 그 동작(메서드)을 하나의 객체로 저장.
- 예시: db4o, ObjectDB.
- 장점: 복잡한 데이터 구조 표현에 유리.
- 단점: 범용성 부족, 표준화 미흡.
XML DBMS
- 데이터를 XML 형식으로 저장·관리.
- 문서 중심 데이터 관리에 적합.
- 예시: eXist-db, BaseX.
- 장점: 다양한 시스템 간 데이터 교환에 유리.
키-값(Key-Value) DBMS
- 데이터를 키(Key)와 값(Value) 쌍으로 저장.
- NoSQL 계열, 매우 단순하고 빠름.
- 예시: Redis, Amazon DynamoDB.
- 장점: 성능 우수, 대규모 분산 처리에 강점.
- 단점: 관계형 쿼리 기능 부족.
RDBMS와 표준 SQL
앞서 말했듯 이 많은 DB들 중 **가장 널리 쓰이는 것이 관계형 데이터베이스(RDBMS)**입니다.
RDBMS의 가장 큰 특징은 데이터를 **행(Row)**과 **열(Column)**로 구성된 테이블 형태로 저장한다는 점이다.
서로 다른 테이블들은 ‘관계(Relationship)’를 통해 연결되기 때문에,
필요한 정보를 여러 테이블에서 동시에 가져와 조합할 수 있다
예를 들어, ‘고객’ 테이블과 ‘주문’ 테이블이 있다고 해봅시다.
고객 정보와 주문 내역은 별도의 표로 저장되지만,
고객 ID라는 공통 키를 통해 두 테이블의 데이터를 하나로 묶어 조회할 수 있습니다.
이런 구조 덕분에 데이터의 중복을 줄이고, 관리 효율을 높일 수 있다.
SQL, RDBMS의 언어
그리고 RDBMS와 소통하기 위해 쓰는 언어가 바로 SQL(Structured Query Language)이다.
SQL은 국제 표준이 정해져 있다.
MySQL이든, Oracle이든, PostgreSQL이든—기본적인 명령어 구조는 거의 같다.
물론 각 DBMS마다 조금씩 다른 “방언(Dialect)”이 존재하지만,
표준 SQL을 익혀두면 대부분의 RDBMS에서 그대로 활용할 수 있다. 그러니 표준 SQL (My SQL) 을 기준으로 학습을 하자.
SQL 명령어는 크게 세 가지로 나눌 수 있다. 앞으로 계속 배울 내용이니 이런것이 있다 정도로만 알면 될듯 싶다
DML (Data Manipulation Language) – 데이터 조작
데이터베이스에 새롭게 데이터를 추가하거나 삭제, 내용을 갱신하는등 데이터를 조작할때 사용된다.
SQL 의 가장 기본이 되는 명령 set 이다.
DDL (Data Definition Language) – 구조 정의
데이터베이스는 데이터 베이스 객체 라는 데이터 그릇을 이용하여 데이터를 관리하는데,
이 같은 객체를 만들거나 삭제하는 명령어 이다.
DCL (Data Control Language) – 권한 제어
DCL 에는 트랜잭션을 제어하는 명령과 데이터 접근권한을 제어하는 명령이 포함되어 있다
결국, RDBMS는 데이터를 가장 체계적으로 다룰 수 있는 시스템이고,
SQL은 그 시스템과 대화하는 ‘공용어’로 알고 있으면 이해가 쉬울 것이다.
SQL 첫걸음 ~p39