Створення таблиць

CREATE TABLE

Команда CREATE TABLE створює нову таблицю:

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

Основні типи даних PostgreSQL

ТипОписПриклад
INTEGERЦіле число42, -17
SERIALАвтоінкремент1, 2, 3...
VARCHAR(n)Рядок до n символів'Hello'
TEXTРядок без обмежень'Long text...'
BOOLEANtrue/falseTRUE, FALSE
DATEДата'2024-01-15'
TIMESTAMPДата і час'2024-01-15 14:30:00'
DECIMAL(p,s)Точне число99.99
JSON/JSONBJSON дані{"key": "value"}

Обмеження (Constraints)

PRIMARY KEY

Унікальний ідентифікатор запису:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100)
);

NOT NULL

Поле обов'язкове для заповнення:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  email VARCHAR(255) NOT NULL
);

UNIQUE

Унікальне значення в колонці:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  email VARCHAR(255) UNIQUE NOT NULL
);

DEFAULT

Значення за замовчуванням:

CREATE TABLE posts (
  id SERIAL PRIMARY KEY,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  is_published BOOLEAN DEFAULT FALSE
);

FOREIGN KEY

Зв'язок з іншою таблицею:

CREATE TABLE orders (
  id SERIAL PRIMARY KEY,
  user_id INTEGER REFERENCES users(id),
  total DECIMAL(10,2)
);

Повний приклад

CREATE TABLE products (
  id SERIAL PRIMARY KEY,
  name VARCHAR(200) NOT NULL,
  description TEXT,
  price DECIMAL(10,2) NOT NULL CHECK (price >= 0),
  category VARCHAR(50) DEFAULT 'Other',
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

ALTER TABLE

Зміна структури існуючої таблиці:

-- Додати колонку
ALTER TABLE users ADD COLUMN phone VARCHAR(20);

-- Видалити колонку
ALTER TABLE users DROP COLUMN phone;

-- Змінити тип
ALTER TABLE users ALTER COLUMN age TYPE SMALLINT;

DROP TABLE

DROP TABLE IF EXISTS old_table;
Порада: Використовуй IF EXISTS щоб уникнути помилки, якщо таблиця не існує.

У наступному уроці навчимося об'єднувати дані з кількох таблиць.

Наступний урок: JOIN →