데이터와 테이블

수많은 데이터를 효율적으로 관리하기 위한 방법으로 데이터베이스는 테이블이라는 형식을 사용합니다. 테이블이란 행(row)과 열(column)로 구조화된 형식을 말하며 행은 데이터 객체들이 되고 열은 데이터 객체의 속성들을 나타내게 됩니다. 열 대신 필드라고 부르기도 하고 행은 레코드라고 부르기도 합니다. 특히, 이러한 테이블들간의 관계를 가지고 데이터를 관리하는 시스템을 RDBMS(Relational Database Management System)라고 하며 SQL이라는 언어를 사용하여 데이터 및 관계를 조작합니다. 대표적으로 이 시리즈에서 다루게 될 MySQL이 있습니다. 이 후 이 포스트에서 사용되는 데이터베이스는 특별히 언급하지 않는 한 RDBMS를 말하게 됩니다. MySQL 설치 및 실행 방법은 다루지 않습니다.

관계형 데이터베이스의 계층

데이터베이스는 인스턴스, 데이터베이스, 스키마, 테이블 순으로 계층이 나뉘어 있습니다. 즉, 인스턴스에는 여러개의 데이터베이스가 속해있고, 데이터베이스에 스키마, 그리고 스키마에 테이블이 속해있는 구조입니다. 인스턴스란 DBMS 동작 그 자체를 말하며 DBMS 프로세스를 의미한다고 볼 수 있습니다. 데이터베이스는 DB를 관리하는 전체 시스템을 의미하기도 하지만 계층을 표시하는 의미로도 사용됩니다. 스키마는 테이블의 '틀'입니다. 그리고 그 틀에 맞춰진 테이블을 저장하는 '폴더' 같은 개념으로 이해할 수도 있습니다. 이 4계층이 데이터베이스의 기본 계층 구조이지만 DBMS의 구현 방법에 따라 각 DBMS는 다른 계층 구조를 갖고 있기도 합니다. 우리가 사용할 MySQL은 스키마와 데이터베이스를 동일한 것으로 간주하는 3계층을 사용하고 있습니다.

테이블 생성하기

MySQL은 3 계층으로 구현되어 있기 때문에 테이블을 생성하기 위해서 데이터베이스를 먼저 생성해야 합니다. 인스턴스는 DBMS 프로세스 자체를 의미하기 때문에 따로 생성할 필요가 없습니다. 콘솔에 아래와 같이 입력하여 데이터베이스를 생성합니다. 참고로 SQL 명령어는 대소문자를 구별하지 않지만 관례상 대문자를 사용합니다.

   CREATE DATABASE library_db;

그리고 이 데이터베이스를 사용하겠다고 MySQL에게 알려줍니다.

   USE library_db;

그럼 이제 이 데이터베이스에 테이블을 생성해봅시다.

   CREATE TABLE book
   (
     title VARCHAR(32),
     author VARCHAR(32)
   );

아주 간단한 book 테이블입니다. 열(column) 즉, 속성으로는 title 과 author가 있고 이 속성의 값들은 VARCHAR(32)라는 데이터 타입을 갖습니다. VARCHAR는 Variable Character를 의미하며 텍스트를 저장하는데 이용되는 타입입니다. 32는 32바이트까지 저장할 수 있다는 것을 의미합니다. 여러 종류의 데이터를 저장하기 위해서는 더 많은 데이터 타입이 필요합니다. 다양한 데이터 타입에 대해서는 다음 포스트에서 다루겠습니다. 지금은 효율적인 디스크 관리와 데이터 관리를 위해 신중하게 데이터 타입을 결정해야 한다는 것만 기억해주세요.

테이블 정보 보기

테이블이 잘 만들어졌는지 확인해봅시다. 테이블 정보를 확인하는 명령어는 다음과 같습니다.

   DESC book;

테이블 삭제하기

이제 테이블을 생성했으니 삭제를 해봅시다. 테이블을 삭제할때는 신중해야 합니다. 테이블 삭제는 테이블에 데이터가 있건 없건 테이블과 데이터를 모두 지워버리기 때문입니다.

   DROP TABLE book;

다시 테이블 정보를 확인해서 잘 삭제되었는지 확인해봅니다.

여기까지 데이터베이스에 대한 간단한 개념과 테이블 조작을 알아봤습니다. 다음 포스트에서는 MySQL에서 자주 사용하는 데이터 타입을 정리해볼게요. 안뇽~