Типы и constraints
PostgreSQL — конкретная СУБД (система управления базами данных), реализующая стандарт SQL со своими типами данных. Самые частые:
CREATE TABLE users (
id SERIAL PRIMARY KEY, -- автоинкрементное целое число
name VARCHAR(100) NOT NULL, -- строка ограниченной длины
bio TEXT, -- строка без ограничения длины
age INT, -- целое число
balance NUMERIC(10, 2), -- точное дробное (для денег!)
is_active BOOLEAN DEFAULT true, -- да/нет
created_at TIMESTAMP DEFAULT now() -- дата и время
);
Ограничения (constraints — NOT NULL, UNIQUE, CHECK) подробно разобраны в теме «Ограничения на поля» — здесь то же самое, специфика PostgreSQL.
Копнуть глубже
Почему для денег используют NUMERIC, а не FLOAT/DOUBLE. Дробные типы с плавающей точкой неточны (та же причина, что и в Java — см. примечание про double/float в теме «Примитивные типы»). NUMERIC(10, 2) хранит точное число с фиксированным количеством знаков после запятой — для денег это критично, ошибка в копейках при миллионах операций накапливается в реальные деньги.
SERIAL под капотом — это INT плюс автоматически созданная последовательность (SEQUENCE), которая генерирует следующее число при каждой вставке. В современном PostgreSQL чаще используют GENERATED ALWAYS AS IDENTITY — более стандартный SQL-синтаксис с тем же эффектом.
• почему для денег используют NUMERIC, а не FLOAT (если дошёл до 2-го слоя).