Вставка данных

6.1. Вставка данных

Сразу после создания таблицы, она не содержит никаких данных. Первое, что нужно сделать перед тем как использовать базу данных - это вставить в неё данные. Данные концептуально вставляются по одной строке за раз. Конечно, вы можете также вставить более, чем одну строку, но не существует способа вставить меньше одной строки. Даже если вы знаете только несколько значений колонок строки, вы должны создать полную строку.

Чтобы создать новую строку, используйте команду INSERT. Эта команда требует имя таблицы и значения колонок таблицы. Например, рассмотрим таблицу products из Chapter 5:

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric
);

Для вставки строки можно использовать например такую команду:

INSERT INTO products VALUES (1, 'Cheese', 9.99);

Значения данных перечисляются в том порядке, в котором следуют колонки в таблице и разделяются запятыми. Обычно, значения данных будут являтся литералами (константами), но также разрешаются и скалярные выражения.

Показанный выше синтаксис создаёт проблемы, потому что требует знания порядка колонок в таблице. Чтобы избежать этой проблемы вы можете также использовать задаваемый явно список колонок. Например, обе следующих команды в итоге сработают точно также как и та, что дана выше:

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99);
INSERT INTO products (name, price, product_no) VALUES ('Cheese', 9.99, 1);

Многие пользователи считают хорошей практикой всегда использовать список имён колонок.

Если у вас нет значений для всех колонок, вы можете опустить некоторые из них. В этом случае, колонки в строке будут заполнены значениями по умолчанию. Например:

INSERT INTO products (product_no, name) VALUES (1, 'Cheese');
INSERT INTO products VALUES (1, 'Cheese');

Вторая форма является расширением PostgreSQL. При этом заполнение колонок идёт слева, согласно указанным значениям, а оставшиеся колонки будут заполнены значениями по умолчанию.

Для ясности, вы можете также явно указать значения по умолчанию для каждой колонки в строке или даже всей строки:

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', DEFAULT);
INSERT INTO products DEFAULT VALUES;

Вы можете вставить несколько строк одной командой:

INSERT INTO products (product_no, name, price) VALUES
    (1, 'Cheese', 9.99),
    (2, 'Bread', 1.99),
    (3, 'Milk', 2.99);

Tip: Когда единовременно вставляется большое количество данных, используется команда COPY. Она не так удобна как команда INSERT, но зато более эффективна. Информацию об увеличении производительности при загрузках большого объёма смотрите в Section 14.4.

Back to top

(С) Виктор Вислобоков, 2008-2023