데이터베이스란 여러 사람들이 공유할 목적으로 통합하여 관리하는 데이터의 집합을 의미합니다.
쉽게 말해 데이터를 쌓는 창고의 역할을 하는 셈입니다.
DBMS란 “DataBase Management System”의 약자로 데이터베이스를 관리하는 시스템이라는 의미입니다.
위의 그림은 DBMS를 나타냈습니다. “데이터베이스”라는 창고가 있고, 창고에는 “데이터”라는 화물이 쌓여있습니다. 하지만 창고가 화물을 옮길 수는 없기 때문에 “DBMS”라는 트럭의 도움을 받습니다.
데이터베이스라는 창고에 수많은 데이터가 쌓여있습니다. 이 중에 내가 원하는 데이터만 골라서 보고 싶다면 어떻게 해야할까요? 이때 사용하는 것이 SQL입니다.
SQL은 Structured Query Language의 약자이며 이름에서 알 수 있듯이 언어의 한 종류입니다. 데이터베이스에서 데이터를 추가, 조회, 수정, 삭제하는데 특화된 언어죠.
참고로 추가(Create), 조회(Read), 수정(Update), 삭제(Delete)의 앞 글자만 따서 CRUD
라고 부르기도 합니다.
데이터를 정의, 조작 제어하는데 각 목적에 맞게 크게 세가지로 구분할 수 있습니다.
속성 | 설명 | 주요 명령어 |
---|---|---|
DDL | 데이터베이스나 테이블 등을 생성, 삭제하거나 그 구조를 변경하기 위한 명령어 | CREATE, ALTER, DROP |
DML | 데이터베이스에 저장된 데이터를 처리하거나 조회, 검색하기 위한 명령어 | INSERT, UPDATE, DELETE, SELECT 등 |
DCL | 데이터베이스에 저장된 데이터를 관리하기 위하여 데이터의 보안성 및 무결성 등을 제어하기 위한 명령어 | GRANT, REVOKE 등 |
DBMS에는 PostgreSQL, MySQL, MariaDB 등 여러 종류가 있는데요. DBMS마다 데이터를 다루기 위한 언어가 다르다면 불편하겠죠. 하지만 SQL은 DBMS의 종류에 관계없이 동일한 문법을 사용합니다. SQL을 한 번 배워두면 어느 DBMS건 써먹을 수 있다는 의미죠.
RDBMS는 Relational Database Management System의 약자입니다. DBMS 앞에 Relational(관계형)이라는 단어가 추가되었습니다.
RDBMS는 관계형 데이터베이스라고 하며 데이터를 2차원의 테이블 구조로 저장합니다.
고객 정보를 저장하는 테이블의 예시를 한 번 보시죠.
고객 ID | 이름 | 주소 | 연락처 |
---|---|---|---|
1 | 동해물 | 서울 | 010-1234-5678 |
2 | 백두산 | 부산 | 010-8765-4321 |
테이블은 행(가로)과 열(세로)로 구성됩니다. 위의 테이블에는 2개의 행, 4개의 열이 있습니다.
이 테이블에서 행은 각 고객을 나타내며, 열은 고객의 속성을 나타냅니다. 예를 들어, 고객 ID
열은 고객의 고유 식별자를 나타내며, 이름
열은 고객의 이름을 나타냅니다.
테이블 형태이다보니 마치 엑셀을 다루는 듯한 느낌도 듭니다. 이처럼 관계형 데이터베이스는 사람이 쉽게 읽을 수 있는 형태로 데이터를 다루니 관리가 쉽다는 장점이 있습니다.
어떤 쇼핑몰에서 사용하는 관계형 데이터베이스가 있다고 가정해봅시다.
쇼핑몰에서 사용하는 수많은 데이터가 있겠지만 우리는 아래 두 가지 테이블만 고려해봅시다.
고객 정보와 주문 정보의 예시입니다.
고객 ID | 이름 | 주소 | 연락처 |
---|---|---|---|
1 | 동해물 | 서울 | 010-1234-5678 |
2 | 백두산 | 부산 | 010-8765-4321 |
주문번호 | 고객 ID | 주문일시 | 배송지 | 결제수단 | 총금액 | 배송비 |
---|---|---|---|---|---|---|
1 | 1 | 2023-11-12 | 서울 | 신용카드 | 10,000원 | 2,500원 |
2 | 1 | 2023-11-13 | 서울 | 신용카드 | 20,000원 | 2,500원 |
3 | 2 | 2023-11-12 | 부산 | 계좌이체 | 30,000원 | 3,000원 |
위의 테이블을 보면 고객 정보와 주문 정보는 어떠한 관계가 있다는 것을 알 수 있습니다. 고객 ID가 1번인 사람이 두 번의 주문을 했고, 고객 ID가 2번인 사람은 한 번의 주문을 했습니다.
한 명의 고객은 여러 개의 주문을 할 수 있고, 고객과 주문은 1:N 관계라고 할 수 있습니다.
이와 같이 관계형 데이터베이스는 테이블 간의 관계를 정의하여 데이터 사이의 연관성을 표현합니다. 테이블 간의 관계는 아래의 종류들이 있습니다.
뒤에 나오게될 데이터베이스 관련 설명을 이해하기 위해서는 몇 가지 데이터베이스 용어를 알아야합니다. 중요한 몇 가지만 잠깐 살펴볼게요.
테이블(table)은 데이터베이스에서 데이터를 구성하기 위한 가장 기본적인 단위 입니다. 테이블은 행과 열로 구성되며 행은 여러 속성으로 구성됩니다.
행(row)은 테이블의 구성 요소 중 하나이며 테이블의 가로로 배열된 데이터의 집합을 말합니다. 예를 들어 회원 테이블이 있다고 가정할 때 ID가 1번인 회원의 이메일, 나이 같은 정보가 모여 있는 집합을 1번 회원에 대한 행
이라고 할 수 있죠.
행은 반드시 고유한 식별자인 기본키를 가집니다. 행을 레코드(record) 라고 부르기도 합니다.
열(column)은 테이블의 구성 요소 중 하나이며, 행에 저장되는 유형의 데이터입니다. 예를 들어 회원 테이블이 있다고 할 때, 열은 각 요소에 대한 속성을 나타내며 무결성을 보장합니다. 지금의 경우 이메일은 문자열, 나이는 숫자 유형을 가집니다. 이메일 열에 숫자가 들어가거나, 나이 열에 문자열이 들어갈 수 없기 때문에 데이터에 대한 무결성을 보장합니다.
기본키(primary key)는 행을 구분할 수 있는 식별자입니다. 이 값은 테이블에서 유일해야하며 중복 값을 가질 수 없습니다. 보통 데이터를 수정하거나 삭제하고, 조회할 때 사용되며 다른 테이블과 관계를 맺어 데이터를 가져올 수도 있습니다. 또한 기본키의 값은 수정되어서는 안되며 유효한 값이어야합니다. 다시말해 null값이 될 수 없습니다.
쿼리(query)는 데이터베이스에서 데이터를 조회하거나 삭제, 생성, 수정 같은 처리를 하기 위해 사용하는 명령문입니다. SQL 이라는 데이터베이스 전용 언어를 사용하여 작성합니다.
자! 이제 실습에 들어가볼까요??