VALUES ( 'Горох', 180, NULL);
Так как значение NULL - это специальный маркер, а не просто символьное значение, он не включается в одиночные кавычки. Поле ID_Продукта в данном случае не указывается, так как оно автоинкрементное.
Оператор INSERT для добавления набора записей.
Синтаксис:
INSERT INTO <имя_таблицы> [(<список столбцов>)]
SELECT …
Оператор ввода данных позволяет ввести сразу множество строк, если их можно выбрать из некоторой другой таблицы.
Допустим, мы хотим в меню на ‘03-01-2011’ добавить все горячие блюда из ассортимента ресторана.
Пример 47.
INSERT INTO Меню
SELECT b. ID_Блюда, b.Вид, '2011-01-03'
FROM Блюда b JOIN Справочник_вид_блюда c ON b.Вид=c.ID_Вид
WHERE c.Вид = 'Горячее';
Следует отметить, что количество полей и их тип в результате запроса, должны полностью совпадать с описанием таблицы. Запросы при добавлении могут быть любой сложности.
Пример 48.
INSERT INTO Продукты (Продукт, Белки, Жиры)
SELECT 'Горох', 180, NULL
UNION
SELECT 'Фасоль', 185, NULL;
Следует отметить, что в SQL Server 2008 реализована вставка нескольких строк с помощью VALUES.
С учетом этой возможности, последний запрос можно переписать в виде:
Пример 49.
INSERT INTO Продукты ( Продукт, Белки, Жиры)
VALUES ( 'Горох', 180, NULL), ( 'Фасоль', 185, NULL);