Синтаксис INSERT INTO
Команда INSERT INTO добавляет одну или несколько новых строк в таблицу.
Базовый синтаксис
INSERT INTO table_name (col1, col2, col3)
VALUES (val1, val2, val3);
Можно не указывать столбцы, если передаёте значения для всех столбцов в том же порядке:
INSERT INTO users VALUES (DEFAULT, 'mail@x.com', 'user1', 'User One', 'user', 'active', 0, NOW());
Но явное перечисление столбцов — хорошая практика: защищает от изменений схемы.
RETURNING — получить вставленную строку
Без RETURNING INSERT ничего не возвращает. Добавьте RETURNING, чтобы сразу увидеть вставленные значения — особенно полезно для получения auto-generated id:
INSERT INTO users (email, username, full_name)
VALUES ('new@example.com', 'newuser', 'New User')
RETURNING id, email, username;
DEFAULT значения
У некоторых столбцов при создании таблицы задано значение по умолчанию (DEFAULT). В users это:
role VARCHAR(20) DEFAULT 'user',
status VARCHAR(20) DEFAULT 'active',
login_count INTEGER DEFAULT 0,
created_at TIMESTAMP DEFAULT '2024-01-01'
Есть два способа воспользоваться значением по умолчанию.
1. Не указывать столбец вообще — PostgreSQL подставит DEFAULT сам:
INSERT INTO users (email, username)
VALUES ('test@x.com', 'tester')
RETURNING id, role, status, login_count;
-- role='user', status='active', login_count=0
2. Написать ключевое слово DEFAULT вместо значения — так же, как в примере выше для id:
INSERT INTO users (email, username, role, status)
VALUES ('test2@x.com', 'tester2', DEFAULT, 'blocked')
RETURNING id, role, status;
-- role='user' (взято из DEFAULT), status='blocked' (задано явно)
Второй способ удобен, когда столбец нужно оставить в списке (например, при вставке без перечисления столбцов), но значение выбрать по умолчанию.
Вставка нескольких строк
INSERT INTO products (name, category, price)
VALUES
('USB Hub', 'electronics', 990.00),
('Webcam HD','electronics', 3490.00)
RETURNING id, name, price;
Прочитайте урок до конца — прогресс засчитается автоматически