Найти в Дзене
Old Programmer

PostgreSQL. Команда SQL INSERT

Программирование. Тематическое оглавление моего Zen-канала (Old Programmer) . Мои материалы по языку SQL и серверу PostgreSQL здесь. На канале есть два не больших видеоурока по команде insert: Данная статья это такое дополнение к ним. Для начала представляю уже знакомую базу данных, которую я использовал в части статей (см. Рисунок 1). Буду использовать ее и сейчас, точнее одну таблицу. Классический вид команды SQL insert И так классический вид команды insert into students (id, name, id_f) values (default, 'Африканов П.П.', 1) или insert into students (name, id_f) values ('Африканов П.П.', 1) Столбец id имеет значение по умолчанию, которое ему и присваивается. В данном случае это первичный ключ, которому присваивается значение счетчика добавленных строк. В принципе возможен и такой вариант insert into students values (default, 'Африканов П.П.', 1) предполагается, что присвоение значений идет по порядку справа на лево. Или даже так insert into students default values Надо и
Оглавление

Вот здесь на материалы моего канала Old Programmer :
Программирование. Тематическое оглавление моего Zen-канала (Old Programmer) . Мои материалы по языку SQL и серверу PostgreSQL здесь.

  • Список разделов канала Old Programmer, канала о программировании и программистах

На канале есть два не больших видеоурока по команде insert:

  • Начала SQL. Команда INSERT. Урок 1
  • Начала SQL. Команда INSERT. Урок 2

Данная статья это такое дополнение к ним.

Для начала представляю уже знакомую базу данных, которую я использовал в части статей (см. Рисунок 1). Буду использовать ее и сейчас, точнее одну таблицу.

Рисунок 1
Рисунок 1

Классический вид команды SQL insert

И так классический вид команды

insert into students (id, name, id_f) values (default, 'Африканов П.П.', 1)

или

insert into students (name, id_f) values ('Африканов П.П.', 1)

Столбец id имеет значение по умолчанию, которое ему и присваивается. В данном случае это первичный ключ, которому присваивается значение счетчика добавленных строк.

В принципе возможен и такой вариант

insert into students values (default, 'Африканов П.П.', 1)

предполагается, что присвоение значений идет по порядку справа на лево. Или даже так

insert into students default values

Надо иметь в виду, что при создании таблицы для каждого столбца можно установить значение по умолчанию, а также разрешение использовать для него null. Если значение по умолчанию для столбца не определено, то используется "значение" null. А вот если null не разрешено, нет значения по умолчанию, то возможен только вариант с явным указанием значения, в противном случае команда insert не может быть выполнена.

Другие возможности команды insert

Команда insert имеет многострочную форму. Например так

insert into students (name, id_f) values ('Паниковский', 1),
('Бездомный', 2), ('Воланд', 2);

Добавляется сразу три строки с присвоением значений полям. Но возможен и абсолютно эквивалентный вариант

insert into students (name, id_f)
select 'Паниковский', 1
union
select 'Бездомный', 2
union
select 'Воланд', 2;

Используя команду мы можем вставить строки из другой таблицы или нескольких таблиц. Тут главное соответствие по количеству и типу столбцов.

insert into students (name, id_f)
select name, id_f
from stud

Вот в принципе и все, если не учитывать того, что у PostgreSQL есть еще свои расширения. Мне нравится такое расширение

insert into students (name, id_f) values ('Козулин', 1)
returning id;

К таблице добавляется строка и возвращается значение по умолчанию для столбца id. Это удобно, если используете несколько команд подряд. Например, добавляете строку в одну таблицу, а потом в другие, связанные как раз по значению этого первичного ключа.

Упражняйтесь в языке SQL и читайте мои статьи. Подписывайтесь на мой канал Old Programmer.

Список разделов канала Old Programmer, канала о программировании и программистах

Изображение в свободном доступе в Интернет
Изображение в свободном доступе в Интернет