PostgreSQL 기초

PostgreSQL은 강력한 기능과 높은 안정성을 자랑하는 오픈소스 객체-관계형 데이터베이스 관리 시스템(ORDBMS)입니다. 복잡한 데이터 처리와 대용량 데이터 관리에 적합합니다.

개요

PostgreSQL은 SQL 표준을 잘 준수하며, 트랜잭션, 동시성 제어, 복구 등 데이터베이스의 핵심 기능을 강력하게 지원합니다. 또한, JSON, 배열, 사용자 정의 타입 등 다양한 데이터 타입을 지원하여 유연한 데이터 모델링이 가능합니다. 이로 인해 웹 서비스, 데이터 웨어하우스, GIS(지리 정보 시스템) 등 광범위한 분야에서 사용됩니다.

참고

PostgreSQL은 뛰어난 안정성과 성능으로 인해 'Postgres'라고도 불리며, Docker, Kubernetes 등 클라우드 환경에서도 널리 활용됩니다.

핵심 개념

PostgreSQL은 다음과 같은 특징을 가집니다:

개념 설명
객체-관계형 DB 객체 지향 개념(클래스, 상속 등)을 관계형 데이터베이스에 통합하여 더 풍부한 데이터 모델을 지원합니다.
트랜잭션 일련의 SQL 작업이 하나의 논리적 단위로 처리되도록 보장합니다. ACID(원자성, 일관성, 고립성, 지속성) 속성을 강력하게 지원합니다.
스키마 테이블, 뷰, 함수 등 데이터베이스 객체들을 논리적으로 그룹화하는 구조입니다. 사용자 계정과는 별개로 존재할 수 있습니다.
데이터 타입 정수, 문자열 같은 기본 타입 외에 JSONB, 배열, hstore 등 다양한 고급 데이터 타입을 지원합니다.

사용 예제

users 테이블을 생성하고 데이터를 삽입, 조회하는 예제입니다.

SQL
-- 테이블 생성
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

-- 데이터 삽입
INSERT INTO users (name, email) VALUES ('김민지', 'minji@example.com');

-- 데이터 조회
SELECT id, name, created_at FROM users WHERE email = 'minji@example.com';

주의사항 및 팁

  • SERIAL 데이터 타입은 MySQL의 AUTO_INCREMENT와 유사하게 자동으로 증가하는 정수형을 만듭니다.
  • PostgreSQL은 기본적으로 대소문자를 구분합니다. 특히 테이블명이나 컬럼명은 큰따옴표(")로 감싸면 대소문자가 유지됩니다.
  • PostgreSQL은 데이터 정합성과 안정성을 매우 중요시하므로, 트랜잭션과 데이터 타입에 대한 깊이 있는 이해가 필요합니다.
주의

PostgreSQL은 복잡한 쿼리와 대용량 데이터 처리에 강하지만, 초기 설정과 학습이 다른 경량 데이터베이스에 비해 복잡할 수 있습니다.