Створення таблиць
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...' |
| BOOLEAN | true/false | TRUE, FALSE |
| DATE | Дата | '2024-01-15' |
| TIMESTAMP | Дата і час | '2024-01-15 14:30:00' |
| DECIMAL(p,s) | Точне число | 99.99 |
| JSON/JSONB | JSON дані | {"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 щоб уникнути помилки,
якщо таблиця не існує.