PostgreSQL 기초: 데이터베이스 및 테이블 생성, 삭제, 스키마 관리

데이터베이스 생성 방법

PostgreSQL에서 데이터베이스를 생성하는 세 가지 주요 방식은 다음과 같습니다:

  • SQL 명령어 사용: CREATE DATABASE
  • 명령줄 도구 사용: createdb
  • GUI 도구 사용: pgAdmin

예를 들어, psql 클라이언트를 통해 다음 명령을 실행하면 이름이 shulanxtdb인 데이터베이스가 생성됩니다.

postgres=# CREATE DATABASE shulanxtdb;

pgAdmin을 이용할 경우, 탐색기에서 데이터베이스 항목을 우클릭하고 "새 데이터베이스"를 선택해 간단히 생성할 수 있습니다.

데이터베이스 확인 및 연결

현재 존재하는 모든 데이터베이스 목록을 확인하려면 \l 명령을 사용합니다.

postgres=# \l

특정 데이터베이스에 연결하려면 \c 명령어를 사용합니다.

postgres=# \c test

데이터베이스 삭제

데이터베이스 삭제는 신중하게 수행해야 하며, 삭제된 데이터는 복구되지 않습니다. 삭제 방법은 아래와 같습니다:

  • DROP DATABASE SQL 문 사용
  • dropdb 명령줄 도구 사용
  • pgAdmin에서 직접 삭제

DROP DATABASE의 구문은 다음과 같습니다:

DROP DATABASE [ IF EXISTS ] database_name;

IF EXISTS: 해당 데이터베이스가 존재하지 않아도 오류 없이 처리되며, 단순히 경고 메시지만 출력됩니다.
database_name: 삭제할 데이터베이스의 이름입니다.

예시:

postgres=# DROP DATABASE shulanxtdb;

테이블 생성

테이블을 생성하기 위한 기본 구문은 다음과 같습니다:

CREATE TABLE table_name (
    column1 datatype CONSTRAINT,
    column2 datatype CONSTRAINT,
    ...
    PRIMARY KEY (column_list)
);

이 명령어는 현재 데이터베이스 내에 새로운 빈 테이블을 생성하며, 해당 테이블은 실행자에게 소유권이 부여됩니다.

예시: COMPANY라는 테이블을 생성하고, ID 컬럼을 기본키로 지정하며 NOT NULL 제약 조건을 적용합니다.

CREATE TABLE COMPANY (
    ID INT PRIMARY KEY NOT NULL,
    NAME TEXT NOT NULL,
    AGE INT NOT NULL,
    ADDRESS CHAR(50),
    SALARY REAL
);

생성된 테이블을 확인하려면 \d 명령어를 사용합니다.

shulanxtdb=# \d

특정 테이블의 스키마 정보를 보려면 \d table_name을 입력합니다.

shulanxtdb=# \d company

테이블 삭제

DROP TABLE 명령어는 테이블 자체뿐 아니라 관련된 인덱스, 규칙, 트리거 등도 모두 삭제합니다. 따라서 삭제 시 신중이 필요합니다.

기본 구문:

DROP TABLE table_name;

여러 테이블을 동시에 삭제할 수도 있습니다.

shulanxtdb=# DROP TABLE department, company;

스키마(Schema) 개념

스키마는 논리적 그룹으로, 하나의 데이터베이스 내에서 여러 개의 객체(테이블, 뷰, 인덱스, 함수 등)를 조직화하는 데 사용됩니다.

스키마의 장점:

  • 다수의 사용자가 동일한 데이터베이스를 공유하면서 충돌 없이 작업 가능
  • 객체들을 계층적으로 관리하여 구조화된 접근 제공
  • 제3자 애플리케이션의 객체를 별도 스키마에 배치해 이름 충돌 방지

스키마는 디렉터리처럼 작동하지만, 중첩 구조는 지원하지 않습니다.

스키마 생성 예시

다음과 같이 myschema라는 스키마를 생성할 수 있습니다.

shulanxtdb=# CREATE SCHEMA myschema;

생성된 스키마 내에 테이블을 생성합니다.

shulanxtdb=# CREATE TABLE myschema.company (
    ID INT NOT NULL,
    NAME VARCHAR(20) NOT NULL,
    AGE INT NOT NULL,
    ADDRESS CHAR(25),
    SALARY DECIMAL(18,2),
    PRIMARY KEY (ID)
);

스키마 삭제

비어 있는 스키마 삭제:

DROP SCHEMA myschema;

스키마 내 모든 객체를 포함하여 강제 삭제:

DROP SCHEMA myschema CASCADE;

태그: PostgreSQL SQL Database Management Schema Table Operations

5월 28일 02:16에 게시됨