JavaRush /Курсы /Модуль 4. Работа с БД /Вставка данных в таблицу

Вставка данных в таблицу

Модуль 4. Работа с БД
6 уровень , 2 лекция
Открыта

Оператор INSERT INTO VALUES()

Мы разобрались, как создавать таблицы, давай теперь детально рассмотрим, как добавлять данные в таблицу с помощью SQL-запроса.

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

  • имена колонок
  • значения колонок (данные)

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

Общий вид запроса вставки данных в таблицу выглядит так:

INSERT INTO таблица (колонка1, колонка2, колонка3) VALUES (значение1, значение2, значение3), (значение1, значение2, значение3), (значение1, значение2, значение3);

Например, ты хочешь вставить в таблицу user новую запись, вот как будет выглядеть такой запрос:

INSERT INTO user (name, level, created_time) VALUES (‘Рабинович’, 5, ‘2022-06-06’);

Оператор INSERT INTO SELECT

Еще один частый сценарий вставки данных в таблицу — это взять их из другой таблицы, схемы и даже СУБД.

Для этого есть другой формат запроса INSERT INTO, у которого вместо части VALUES можно указать запрос на выборку данных.

Общий вид такого запроса имеет вид:

INSERT INTO таблица (колонка1, колонка2, колонка3) SELECT-запрос;

Давай напишем запрос, с помощью которого добавим всех пользователей из таблицы employee в таблицу user:

INSERT INTO user (name, created_time) SELECT employee.name, employee.join_date FROM employee;

У нас в таблице employee есть различные данные, но из них мы выбираем только два поля – имя и время прихода в компанию.

Так же таблица user требует указать ей уровень пользователя – level. В таблице employee у сотрудников нет уровня, поэтому мы воспользуемся тем, что у таблицы user у поля level есть значение по умолчанию. Мы просто не будем указывать level, и SQL установит значение по умолчанию.

Допустим, нас не устраивает значение по умолчанию, и мы хотим, чтобы level был 99, а user.created_time заменить на сегодняшнюю дату, тогда можно написать так:

INSERT INTO user (name, level, created_time) SELECT employee.name, 99, CURDATE() FROM employee;

Можно наворотить еще кучу всего интересного, но, думаю, хватит пока и этого. Подробнее можно почитать на официальный странице MySQL.

1
Задача
Модуль 4. Работа с БД, 6 уровень, 2 лекция
Недоступна
Заполняем таблицу игроками
Давай попробуем создать лучшую команду в истории футбола. Добавь в таблицу team следующих 11 игроков
1
Задача
Модуль 4. Работа с БД, 6 уровень, 2 лекция
Недоступна
task0607
task0607
1
Задача
Модуль 4. Работа с БД, 6 уровень, 2 лекция
Недоступна
task0608
task0608
1
Задача
Модуль 4. Работа с БД, 6 уровень, 2 лекция
Недоступна
task0609
task0609
Комментарии (10)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Артём Васенин Уровень 67
1 июня 2025
И как бы я угадал в task0607 что поле должно быть model_year а не year из постановки задачи?
Артём Уровень 104
26 июня 2025
А ещё, если решаешь в ИДЕА, и в решении пишешь код для создания таблицы, то валидатор решение не принимает. Надо только инсерт оставить, тогда примет.
Rabbit2004 Уровень 37
25 марта 2023
А где можно найти задачи по sql ? Какая подписка требуется для этого ?
Зепп Бранниган Уровень 1 Moderator
27 марта 2023
Задачи доступны для наших студентов.
Саша И. Уровень 101 Expert
20 февраля 2023
В 0608 валидатор не пустит без точки с запятой в конце запроса
Сергей Уровень 111 Expert
15 декабря 2022
В первой задаче молодцы, сделали форматирование, а со второй проблема...

 Lexus IS 2017 petrol 7.5 
 Volvo XC90 2019 diesel 8.5 
 Volkswagen Golf 2020 petrol 8 
 Toyota Corolla 2015 petrol 10 
 BMW 5 2005 petrol 15.5 
 Ford Transit 2010 diesel 9 
Эдуард Уровень 1 Expert
26 октября 2022
В задаче 0607 вместо year надо указать model_year
Роман (protasenaroman@gmail.com) Уровень 100 Expert
13 ноября 2022
Необходимо указать (brand, model, model_year, engine, consumption)
Артём Васенин Уровень 67
1 июня 2025
Но судя по тому что нынче 2025 год а этот коммент оставлен в 2022-м никто поправлять условия задач не собирается
Александр Уровень 69
18 июня 2025
Смотри, поправили таки)