PostgreSQL - 테이블 생성: 초보자 가이드
안녕하세요, 미래의 데이터베이스 마법사 여러분! 오늘 우리는 PostgreSQL의 세계로 흥미로운 여정을 떠납니다. 특히 테이블을 어떻게 생성하는지에 대해 집중적으로 배울 것입니다. 코드를 한 줄도 작성해본 적이 없더라도 걱정하지 마세요 - 저는 친절한 가이드로서, 단계별로 이끌어드릴게요. 이 튜토리얼의 끝을 맺을 때, 당신은 프로처럼 테이블을 생성할 수 있을 것입니다!
PostgreSQL에서 테이블이란?
테이블 생성의 구체적인 내용에 뛰어들기 전에, 테이블이 무엇인지 이해해 보겠습니다. 스프레드시트를 상상해 보세요 - 그리드 형태의 행과 열을 아시죠? 데이터베이스 테이블은 매우 유사합니다. 관련 데이터를 행(또는 레코드)과 열(또는 필드)로 조직된 컬렉션입니다.
예를 들어, 작은 도서관을 운영하고 있다면, "Books"라는 테이블을 가질 수 있습니다. 이 테이블에는 "Title", "Author", "ISBN", "Publication Date"와 같은 열이 있을 수 있습니다. 이 테이블의 각 행은 도서관에 있는 단일 책을 나타냅니다.
CREATE TABLE 문법
이제 PostgreSQL에서 테이블을 생성하는 기본 문법을 살펴보겠습니다:
CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
column3 datatype constraints,
....
);
이것이 무서워하지 마세요! 보이는 것보다 간단합니다. 다음과 같이 설명해 보겠습니다:
-
CREATE TABLE
: 이는 PostgreSQL에게 새로운 테이블을 생성하려는 의도를 전달하는 명령어입니다. -
table_name
: 여기서는 테이블을 어떻게 부르고 싶은지 지정합니다. - 괄호 안에서는 테이블에 포함하고 싶은 모든 열을 나열합니다.
- 각 열에 대해 다음을 지정합니다:
- 열 이름
- 데이터 타입 (예: 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