이게 뭔 소린가 싶을 수도 있지만 DBMS를 오라클이 아니라 MySQL, MariaDB, PostgreSQL 같은 것들로 처음 접한 후에 오라클을 쓰려고 보면 이런 의문이 생긴다. “데이터베이스(스키마) 생성 명령어가 왜 없지?”
예를 들면 오라클에선
create database TEST;
같은 쿼리문을 쓰지 않는다.
그럼 어떻게 스키마를 만들고 그 스키마에 테이블을 생성하지? 생각이 들지만 오라클에선 사용자를 생성하는 것 자체를 스키마 생성으로 본다.
create user test identified by test;
이렇게 test라는 이름으로 계정을 만들면 test라는 데이터베이스도 함께 생성됐다고 보면 되는 것이다.
MySQL vs 오라클 데이터베이스 개념 차이
비슷한 상황을 두고 MySQL과 오라클을 비교해서 보면 그 차이를 이해할 수 있다.
목표
- test_db라는 이름의 데이터베이스 만들기
- test 라는 이름의 사용자 만들기
- test_db 데이터베이스 안에 test_table 이라는 이름의 테이블 만들기
MySQL
- 데이터베이스 생성
create database test_db;
- 사용자 생성
create user 'test'@'%' identified by [비밀번호];
- 사용자에 권한 부여
grant all on test_db.* to 'test'@'%';
- 테이블 생성
use test_db;
create table test_table (...);
오라클
- 사용자 생성
create user test_db identified by [비밀번호];
- 사용자에 권한 부여
grant connect, resource to test_db;
- 사용자로 로그인 후 테이블 생성
create table test_table (...);
정리하면 MySQL에선 사용자와 데이터베이스(스키마)를 각각 구분해서 보고 생성도 각각 하지만 오라클에선 그렇지 않고 사용자=스키마 처럼 본다.