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)
출력 결과에서 databasesample과 schemasample이 모두 목록에 포함되어 있는 것을 확인할 수 있습니다. 이는 MySQL에서 두 명령어가 동일한 대상을 생성한다는 것을 보여주는 좋은 예입니다.
참고: 오라클(Oracle)에서의 스키마
반면 오라클(Oracle) 데이터베이스에서는 상황이 조금 다릅니다. 오라클에서 스키마는 특정 사용자(user)가 소유한 객체들의 집합을 의미하며, 데이터베이스 전체가 아닌 데이터베이스의 일부분(part of the database)을 나타내는 데 사용됩니다. 즉, MySQL처럼 스키마와 데이터베이스를 혼용해서 사용할 수 없으므로, DBMS별 용어 차이를 이해하고 있는 것이 중요합니다.