PostgreSQL - 테이블 생성: 초보자 가이드

안녕하세요, 미래의 데이터베이스 마법사 여러분! 오늘 우리는 PostgreSQL의 세계로 흥미로운 여정을 떠납니다. 특히 테이블을 어떻게 생성하는지에 대해 집중적으로 배울 것입니다. 코드를 한 줄도 작성해본 적이 없더라도 걱정하지 마세요 - 저는 친절한 가이드로서, 단계별로 이끌어드릴게요. 이 튜토리얼의 끝을 맺을 때, 당신은 프로처럼 테이블을 생성할 수 있을 것입니다!

PostgreSQL - Create Table

PostgreSQL에서 테이블이란?

테이블 생성의 구체적인 내용에 뛰어들기 전에, 테이블이 무엇인지 이해해 보겠습니다. 스프레드시트를 상상해 보세요 - 그리드 형태의 행과 열을 아시죠? 데이터베이스 테이블은 매우 유사합니다. 관련 데이터를 행(또는 레코드)과 열(또는 필드)로 조직된 컬렉션입니다.

예를 들어, 작은 도서관을 운영하고 있다면, "Books"라는 테이블을 가질 수 있습니다. 이 테이블에는 "Title", "Author", "ISBN", "Publication Date"와 같은 열이 있을 수 있습니다. 이 테이블의 각 행은 도서관에 있는 단일 책을 나타냅니다.

CREATE TABLE 문법

이제 PostgreSQL에서 테이블을 생성하는 기본 문법을 살펴보겠습니다:

CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
column3 datatype constraints,
....
);

이것이 무서워하지 마세요! 보이는 것보다 간단합니다. 다음과 같이 설명해 보겠습니다:

  1. CREATE TABLE: 이는 PostgreSQL에게 새로운 테이블을 생성하려는 의도를 전달하는 명령어입니다.
  2. table_name: 여기서는 테이블을 어떻게 부르고 싶은지 지정합니다.
  3. 괄호 안에서는 테이블에 포함하고 싶은 모든 열을 나열합니다.
  4. 각 열에 대해 다음을 지정합니다:
  • 열 이름
  • 데이터 타입 (예: INTEGER는 정수, TEXT는 문자열 등)
  • 제약 조건 (예: NOT NULL은 열이 항상 값을 가지도록 합니다)

예제: 테이블을 생성해 보자!

예제 1: 간단한 책 테이블

먼저 간단한 예제로 시작해 보겠습니다. 우리의 가상 도서관을 위한 테이블을 생성해 보겠습니다:

CREATE TABLE books (
book_id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
author VARCHAR(50) NOT NULL,
publication_date DATE,
isbn VARCHAR(13) UNIQUE
);

이를 구성해 보겠습니다:

  • book_id: 각 책에 대한 고유 식별자입니다. SERIAL은 새로운 책이 추가될 때 자동으로 증가합니다.
  • title: 최대 100자까지 가능하며, 비어 있지 않아야 합니다 (NOT NULL).
  • author: 최대 50자까지 가능하며, 비어 있지 않아야 합니다.
  • publication_date: 선택 사항입니다 (NOT NULL을 지정하지 않음).
  • isbn: 각 책에 고유한 값입니다.

예제 2: 더 복잡한 고객 테이블

이제 약간 더 복잡한 고객 테이블을 생성해 보겠습니다:

CREATE TABLE customers (
customer_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
phone VARCHAR(20),
registration_date DATE DEFAULT CURRENT_DATE,
loyalty_points INTEGER DEFAULT 0 CHECK (loyalty_points >= 0)
);

이 테이블은 몇 가지 새로운 개념을 도입합니다:

  • DEFAULT: registration_date에 대해 사용하여 새로운 고객이 추가될 때 자동으로 현재 날짜를 설정합니다.
  • CHECK: loyalty_points가 음수가 되지 않도록 합니다.

PostgreSQL의 데이터 타입

PostgreSQL은 다양한 데이터 타입을 제공합니다. 여기 몇 가지 흔한 타입을 소개합니다:

데이터 타입 설명 예제
INTEGER 정수 42
SERIAL 자동 증가 정수 자동으로 할당됨
VARCHAR(n) 최대 n자리 문자열 'Hello, World!'
TEXT 최대 길이 무제한 문자열 '아주 긴 텍스트...'
DATE 날짜 (시간 없음) '2023-06-15'
TIMESTAMP 날짜와 시간 '2023-06-15 14:30:00'
BOOLEAN 참/거짓 값 TRUE 또는 FALSE
NUMERIC(p,s) 정밀 수치, p자리(p 소수점 이하 s자리) 123.45

PostgreSQL의 제약 조건

제약 조건은 열에 설정하는 규칙입니다. 몇 가지 흔한 제약 조건을 소개합니다:

제약 조건 설명
NOT NULL 열이 NULL 값을 포함할 수 없음
UNIQUE 열의 모든 값이 고유해야함
PRIMARY KEY 테이블의 각 행을 고유하게 식별하는 열
FOREIGN KEY 두 테이블 간의 참조 통합을 보장함
CHECK 열의 모든 값이 특정 조건을 만족해야함
DEFAULT 열의 기본 값을 설정함

몇 가지 더 예제

예제 3: 외래 키를 포함한 테이블

'orders' 테이블을 생성하여 'customers' 테이블을 참조하도록 합시다:

CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
customer_id INTEGER REFERENCES customers(customer_id),
order_date DATE DEFAULT CURRENT_DATE,
total_amount NUMERIC(10,2) CHECK (total_amount > 0)
);

이 테이블은 외래 키(customer_id)를 가지고 있어, 모든 주문이 유효한 고객과 연결되어 있습니다.

예제 4: 복합 주요 키를 포함한 테이블

때로는 여러 열로 구성된 주요 키가 필요할 수 있습니다:

CREATE TABLE book_authors (
book_id INTEGER REFERENCES books(book_id),
author_id INTEGER REFERENCES authors(author_id),
PRIMARY KEY (book_id, author_id)
);

이 테이블은 여러 저자가 있는 책이나 동일한 저자가 여러 책을 쓴 경우에 사용될 수 있습니다.

결론

축하합니다! PostgreSQL 테이블 생성의 첫 걸음을 냈습니다. 연습이 완벽을 만듭니다. 다양한 시나리오에 맞는 테이블을 생성해 보세요 - 예를 들어 음악 라이브러리, 레시피 책, 또는 좋아하는 비디오 게임의 데이터베이스 등입니다.

실험하고 실수를 하지 마세요 - 이게 우리가 배우는 방법입니다! 그리고 항상 기억하세요: 데이터베이스의 세계에서, 당신은 CREATE, ALTER, 그리고 심지어 DROP하는 힘을 가지고 있습니다. 이 힘을 지혜롭게 사용하십시오, 젊은 Padawan!

快乐的编码,愿 PostgreSQL 与你同在!

Credits: Image by storyset