Featured image of post 11.7.2 스키마 조작(DDL) - 데이터베이스 변경

11.7.2 스키마 조작(DDL) - 데이터베이스 변경

Real MySQL 8.0

MySQL에서 하나의 인스턴스는 1개 이상의 데이터베이스를 가질 수 있다.

  • 다른 RDBMS에서는 스키마와 데이터베이스를 구분해서 관리하지만 MySQL 서버에서는 스키마와 데이터베이스는 동격 개념이므로 굳이 스키마를 명시적으로 사용하지는 않는다.
  • MySQL의 데이터베이스는 디스크의 물리적인 저장소를 구분하기도 하지만 여러 데이터베이스의 테이블을 묶어서 조인 쿼리를 사용할 수도 있기 때문에 단순히 논리적인 개념이기도 하다.
  • 데이터베이스는 객체에 대한 권한을 구분하는 용도로 사용되기도 하지만 그 이상의 큰 의미를 가지지는 않는다.

데이터베이스 생성

데이터베이스에 설정할 수 있는 옵션은 기본 문자 집합이나 콜레이션을 설정하는 정도이므로 간단하다.

1
2
3
4
CREATE DATABASE [IF NOT EXISTS] employees;
CREATE DATABASE [IF NOT EXISTS] employees CHARACTER SET utf8mb4;
CREATE DATABASE [IF NOT EXISTS] employees
    CHARACTER SET utf8mb4 COLLATE utf8mb_general_ci;

데이터베이스 목록

1
2
SHOW DATABASES;
SHOW DATABASES LIKE '%emp%';

접속된 MySQL 서버가 가지고 있는 데이터베이스의 목록을 나열한다.

  • 권한을 가지고 있는 데이터 베이스 목록만 표시한다.
  • SHOW DATABASES 권한이 있어야 한다.

데이터베이스 선택

1
USE employees;

기본 데이터베이스를 선택하는 명령이다.

  • SQL 문장에서 데이터베이스를 명시하지 않고 테이블 이름이나 프로시저의 이름만 명시하면 현재 커넥션의 기본 데이터베이스에서 주어진 테이블이나 프로시저를 검색한다.
  • 기본 데이터베이스에 존재하지 않는 테이블이나 프로시저를 사용하려면 이름 앞에 데이터베이스 이름을 반드시 명시해야한다.

데이터베이스 속성 변경

1
2
ALTER DATABASE employees CHARACTER SET = euckr;
ALTER DATABASE employees CHARACTER SET = euckr COLLATE = euckr_korean_ci;

생성할 때 지정한 문자 집합이나 콜레이션을 변경한다.

데이터베이스 삭제

1
DROP DATABASE [IF EXISTS] employees;

데이터베이스를 삭제한다.

  • 지정한 이름의 데이터베이스가 존재하지 않는다면 에러가 발생한다.
  • IF EXISTS 키워드를 사용하면 존재할 때만 삭제한다.