CREATE TABLE: типы и ограничения
1810 мин
Теперь учимся не читать базу, а строить её. Команды этого урока пробуйте в своей личной базе: Практика → Свободный режим — там можно создавать и удалять любые таблицы.
Создание базы
CREATE DATABASE kutubxona;Подключиться к новой базе в PostgreSQL: \c kutubxona. Список баз: \l.
Создание таблицы
CREATE TABLE books (
id ..., -- первичный ключ (ниже)
title varchar(200) NOT NULL,
author varchar(100) NOT NULL,
year int,
price decimal(10, 2) DEFAULT 0,
isbn varchar(20) UNIQUE
);Для каждого столбца: имя, тип и при необходимости ограничения.
Основные типы
| Тип | Что хранит | Пример |
|---|---|---|
int / bigint |
целое число | 42 |
decimal(p, s) |
точное дробное число (для денег) | 18000.50 |
varchar(n) |
текст до n символов | 'Otabek' |
text |
длинный текст | статья |
date |
дата | '2026-11-14' |
boolean |
да / нет | true |
В PostgreSQL дата и время — timestamp, дробное — numeric (decimal тоже работает).
Никогда не храните деньги во
float: это приблизительное число, и0.1 + 0.2может дать0.30000000000000004. Деньги —decimal.
Автоматический номер: первичный ключ
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEYСтарый способ serial тоже работает: id serial PRIMARY KEY.
Номер ставит сама база: 1, 2, 3… В INSERT указывать id не нужно.
Ограничения
| Ограничение | Значение |
|---|---|
NOT NULL |
не может быть пустым |
UNIQUE |
не должно повторяться |
DEFAULT x |
если значение не указано — x |
CHECK (условие) |
условие должно выполняться: CHECK (price >= 0) |
PRIMARY KEY |
NOT NULL + UNIQUE, номер строки |
REFERENCES |
внешний ключ |
Внешний ключ
CREATE TABLE loans (
id bigint PRIMARY KEY ...,
book_id bigint NOT NULL,
reader varchar(100) NOT NULL,
taken_at date NOT NULL DEFAULT CURRENT_DATE,
FOREIGN KEY (book_id) REFERENCES books (id)
);Правила:
- родительская таблица (
books) создаётся первой; - тип столбца внешнего ключа совпадает с типом родительского ключа (
bigint↔bigint); - нельзя выдать несуществующую книгу и нельзя удалить выданную.
Посмотреть структуру таблицы
\d books — столбцы, типы, ключи. Список таблиц — \dt.
Упражнение
В свободном режиме создайте базу kutubxona и постройте в ней таблицы books и loans, как выше. Затем попробуйте добавить строку с несуществующим book_id и посмотрите, какую ошибку выдаст база. Пошаговая практика — этапы 2 и 4 раздела Практика как раз на эту тему.
Запомните
CREATE TABLE имя (столбец тип ограничения, …);- Деньги —
decimal, дата —date, текст —varchar(n). - Внешний ключ и в MySQL, и в PostgreSQL пишите отдельной строкой
FOREIGN KEY.