Оператор INSERT добавляет в таблицу одну или несколько записей. В простейшем случае оператор INSERT имеет следующий вид:
INSERT INTO {таблица} [(список полей)] VALUES (список значений)
Значения полей в списке значений должны быть указаны в той же последовательности, что и в списке полей. Число значений должно быть равно числу полей, а тип данных и точность целой и дробной части каждого значения должны совпадать с таковыми для соответствующего поля. Если список полей не задан, то значения полей должны быть указаны в той же последовательности, что и поля таблицы. Если в списке полей заданы лишь часть списка полей таблицы, то все поля, не указанные в списке полей, получат пустое значение NULL или значение по умолчанию (если таковое было определено при создании таблицы). При этом необходимо обратить внимание на то, что все поля, для которых в операторе INSERT не указано явное значение, должны допускать пустые значения или содержать значения по умолчанию. Оператор INSERT не позволяет указывать значения для полей, для которых установлено автоинкрементальное увеличение.
В операторе INSERT вместо списка значений может использоваться подзапрос SELECT:
INSERT INTO {таблица} [(список полей)] SELECT ...
Подзапрос SELECT в операторе INSERT позволяет добавить в таблицу данные из одной или нескольких других таблиц, причем несколько записей одновременно. Подзапрос SELECT в операторе INSERT применяется для добавления к таблице существующих данных, тогда как конструкция VALUES в операторе INSERT используется для добавления к таблице новых данных.