Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 스키마(Schema)와 데이터베이스(Database)의 차이점은 무엇일까?

MySQL에서 스키마와 데이터베이스는 같은 개념일까?

MySQL에서 스키마(schema)와 데이터베이스(database)는 사실상 동의어입니다. 데이터베이스를 생성하는 쿼리를 작성하듯이, 스키마를 생성하는 쿼리도 똑같은 방식으로 작성할 수 있습니다.

다만 개념적으로 살펴보면 다음과 같은 차이가 있습니다.

  • 스키마: 데이터를 저장하기 위한 논리적 구조(logical structure)를 정의하며, 여러 테이블(table)의 집합으로 구성됩니다.
  • 데이터베이스: 실제 데이터를 저장하는 메모리·저장 공간(memory component)을 담당하며, 여러 스키마의 집합이라고 볼 수 있습니다.

데이터베이스 생성 방법

개념을 명확히 이해하기 위해 실제로 데이터베이스와 스키마를 하나씩 생성해 보겠습니다.

먼저 데이터베이스를 생성하는 기본 문법은 다음과 같습니다.

create database yourDatabaseName;

위 문법을 실제 쿼리에 적용한 예시입니다.

mysql> create database DatabaseSample;
Query OK, 1 row affected (0.14 sec)

스키마 생성 방법

스키마를 생성하는 문법 역시 거의 동일합니다.

create schema yourSchemaName;

실제 쿼리에 적용하면 다음과 같습니다.

mysql> create schema SchemaSample;
Query OK, 1 row affected (0.19 sec)

이제 데이터베이스와 스키마가 모두 생성되었습니다.

SHOW 명령어로 목록 확인하기

생성된 데이터베이스와 스키마를 확인하려면 show databases; 명령어를 사용합니다.

mysql> show databases;

위 쿼리의 실행 결과는 다음과 같습니다.

+--------------------+
| Database           |
+--------------------+
| business           |
| databasesample     |
| hello              |
| information_schema |
| mybusiness         |
| mysql              | 
| performance_schema |
| sample             |
| schemasample       |
| sys                | 
| test               |
+--------------------+
11 rows in set (0.07 sec)

출력 결과에서 databasesampleschemasample이 모두 목록에 포함되어 있는 것을 확인할 수 있습니다. 이는 MySQL에서 두 명령어가 동일한 대상을 생성한다는 것을 보여주는 좋은 예입니다.

참고: 오라클(Oracle)에서의 스키마

반면 오라클(Oracle) 데이터베이스에서는 상황이 조금 다릅니다. 오라클에서 스키마는 특정 사용자(user)가 소유한 객체들의 집합을 의미하며, 데이터베이스 전체가 아닌 데이터베이스의 일부분(part of the database)을 나타내는 데 사용됩니다. 즉, MySQL처럼 스키마와 데이터베이스를 혼용해서 사용할 수 없으므로, DBMS별 용어 차이를 이해하고 있는 것이 중요합니다.