Insert into sql access

Инструкция SQL INSERT INTO и INSERT SELECT используются для вставки новых строк в таблицу. Существует два способа использования инструкций:

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


Запросы :

Способ 1 ( вставка только значений ):

После использования INSERT INTO SELECT таблица Student теперь будет выглядеть следующим образом:

ROLL_NO NAME ADDRESS PHONE Age
1 Ram Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
5 HARSH WEST BENGAL 8759770477 19

Способ 2 ( вставка значений только в указанные столбцы ):

Таблица Student теперь будет выглядеть следующим образом:

ROLL_NO NAME ADDRESS PHONE Age
1 Ram Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
5 PRATIK null null 19

Обратите внимание, что для столбцов, значения для которых не указаны, задается null .

Использование SELECT в инструкции INSERT INTO

Можно использовать инструкцию MySQL INSERT SELECT для копирования строк из одной таблицы и их вставки в другую.

Использование этого оператора аналогично использованию INSERT INTO . Разница в том, что оператор SELECT применяется для выборки данных из другой таблицы. Ниже приведены различные способы использования INSERT INTO SELECT :

  • Вставка всех столбцов таблицы : можно скопировать все данные таблицы и вставить их в другую таблицу.

Мы использовали инструкцию SELECT для копирования данных из одной таблицы и инструкцию INSERT INTO для их вставки в другую.

  • Вставка отдельных столбцов таблицы . Можно скопировать только те столбцы таблицы, которые необходимо вставить в другую таблицу.

Мы использовали инструкцию SELECT для копирования данных только из выбранных столбцов второй таблицы и инструкцию MySQL INSERT INTO SELECT для их вставки в первую таблицу.

  • Копирование определенных строк из таблицы . Можно скопировать определенные строки из таблицы для последующей вставки в другую таблицу с помощью условия WHERE с оператором SELECT . В этом случае нужно использовать соответствующее условие в WHERE .

Таблица 2: LateralStudent

ROLL_NO NAME ADDRESS PHONE Age
7 SOUVIK DUMDUM 9876543210 18
8 NIRAJ NOIDA 9786543210 19
9 SOMESH ROHTAK 9687543210 20

Способ 1 ( вставка всех строк и столбцов ):

Этот запрос вставит все данные таблицы LateralStudent в таблицу Student . После применения SQL INSERT INTO SELECT таблица Student будет выглядеть следующим образом:

ROLL_NO NAME ADDRESS PHONE Age
1 Ram Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
7 SOUVIK DUMDUM 9876543210 18
8 NIRAJ NOIDA 9786543210 19
9 SOMESH ROHTAK 9687543210 20

Способ 2 ( вставка отдельных столбцов ):

Этот запрос вставит данные из столбцов ROLL_NO , NAME и Age таблицы LateralStudent в таблицу Student . Для остальных столбцов таблицы Student будет задано значение null . После применения SQL INSERT SELECT таблица будет выглядеть следующим образом:

Читайте также:  Четыре точки на окружности
ROLL_NO NAME ADDRESS PHONE Age
1 Ram Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
7 SOUVIK Null null 18
8 NIRAJ Null null 19
9 SOMESH Null null 20
  • Выбор определенных строк для вставки :

Этот запрос выберет только первую строку из таблицы LateralStudent для вставки в таблицу Student . После применения INSERT SELECT таблица будет выглядеть следующим образом:

ROLL_NO NAME ADDRESS PHONE Age
1 Ram Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
7 SOUVIK DUMDUM 9876543210 18

Данная публикация представляет собой перевод статьи « SQL INSERT INTO Statement » , подготовленной дружной командой проекта Интернет-технологии.ру

При помощи этой инструкции, лежащей в основе запросов на добавление (Append Query), можно добавить одну или множество записей в указанную таблицу. Эта инструкция по функциональности является разновидностью описанной выше инструкции SELECT . INTO. Отличие состоит в том, что информация добавляется в уже существующую таблицу, затирая хранящиеся там данные, но не нарушая при этом ее структуру. Синтаксис для добавления группы записей в таблицу следующий:

INSERT INTO назначение [(поле_1[, поле_2[, . ]])] [IN внешняяБазаДанных]
SELECT [источник.]поле_1[, поле_2[, . ]
FROM выражение [, . ] [IN внешняяБазаДанных]
[WHERE. ]
[GROUP BY. ]
[HAVING. ]
[ORDER BY. ]
[WITH OWNERACCESS OPTION]

Вариант синтаксиса для добавления одной записи:

INSERT INTO назначение [(поле_1[, поле_2[, . ]])]
VALUES (значение_1[, значение_2[, . ])

Описание используемых параметров: назначение. Имя таблицы, в которую добавляются записи. поле_1, поле_2, . . Имена полей, в которые добавляются данные (если они следуют за аргументом назначение) или из которых выбираются данные (если они следуют за аргументом источник). ВнешняяБазаДанных. В конструкции IN можно указать полный путь и имя файла внешней базы данных. Вы можете выбрать информацию из таблиц внешней базы данных (предложение FROM) и вставить итоговую выборку в таблицу внешней базы данных (предложение INSERT INTO). если вы хотите вставить одну запись, можно воспользоваться синтаксисом, содержащим предложение VALUES. Вслед за этим предложением (в круглых скобках) следуют значения, присваиваемые полям, перечисленным после параметра назначение. Значения присваиваются в порядке следования полей. То есть первому полю соответствует первое значение, и т.д. Количество и порядок следования значений в предложении VALUES должны в точности соответствовать количеству и порядку следования полей, перечисленных после параметра назначение.

Примеры

INSERT INTO Доставка (Название, Телефон)
VALUES («Аэрофлот", "(095) 211-9988");

Приведенный в этом примере SQL-оператор иллюстрирует синтаксис для добавления в таблицу одной записи. Этот синтаксис используется практически во всех СУБД, поддерживающих SQL. В данном примере в таблицу Доставка добавляется одна запись, состоящая из двух полей: Название и Телефон. Значения для этих полей перечислены через запятую в конструкции VALUES. Таким образом, после выполнения запроса в таблицу Доставка будет добавлена новая запись, содержащая в поле Название значение Аэрофлот, а в поле Телефон — значение (095) 211-9988. Кроме того, поле КодДоставки автоматически получит очередное значение счетчика, поскольку имеет тип Счетчик (AutoNumber).

Если ввести текст рассматриваемого оператора в запрос, открытый в режиме SQL, a затем переключиться в режим конструктора (Design View), то Microsoft Access автоматически распознает тип запроса и изменит строку оператора в соответствии с принятым для стандартных запросов на добавление (Append Query) стилем:

Читайте также:  Можно ли заменить процессор на компьютере

INSERT INTO Доставка ( Название, Телефон ) SELECT "Аэрофлот "
AS Выражение1, "(095) 211-9988" AS Выражение2;

INSERT INTO Временная ( КодКлиента, [Стоимость заказа] )
SELECT Заказы.КодКлиента, 8ит([Цена]*[Количество])
FROM Заказано, Заказы IN "С:Мои ДокументыDataBasel.mdb"
WHERE («Заказано.КодЗаказа)=[Заказы].[КодЗаказа]))
GROUP BY Заказы.КодКлиента
ORDER BY Sum([Цена]*[Количество])
DESC;

SQL-оператор, приведенный в этом примере, отбирает информацию из внешнего файла базы данных и добавляет полученную выборку в таблицу открытой (текущей) базы данных. В приведенном примере выбирается информация из таблиц Заказы и Заказано, которые расположены во внешнем файле базы данных DataBase1.mdb (в папке C:Moи Документы). Эти таблицы связаны между собой по полям КодЗаказа (связь задана в конструкции WHERE). Итоговая выборка после группировки, вычисления значений поля Стоимость заказа и сортировки по убыванию по этому же полю, добавляется в таблицу Временная. Таблица Временная должна существовать в целевой базе данных к моменту выполнения запроса. Кроме того, к моменту выполнения запроса в таблице Временная должны существовать поля с именами КодКлиента и Стоимость заказа (именно эти имена полей перечислены в конструкции INTO после имени целевой таблицы). Естественно, эти поля должны соответствовать по типу добавляемым данным. Если хотя бы одно из перечисленных условий не выполняется, записи в таблицу добавлены не будут.

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

В предыдущих разделах мы рассматривали работу по получению данных с заранее созданных таблиц. Теперь пора разобрать, каким же образом мы можем создавать/удалять таблицы, добавлять новые записи и удалять старые. Для этих целей в SQL существуют такие операторы, как: CREATE – создает таблицу, ALTER – изменяет структуру таблицы, DROP – удаляет таблицу или поле, INSERT – добавляет данные в таблицу. Начнем знакомство с данной группой операторов из оператора INSERT.

1. Добавление целых строк

Как видно из названия, оператор INSERT используется для вставки (добавления) строк в таблицу базы данных. Добавление можно осуществить несколькими способами:

  • – добавить одну полную строку
  • – добавить часть строки
  • – добавить результаты запроса.

Итак, чтобы добавить новую строку в таблицу, нам необходимо указать название таблицы, перечислить названия колонок и указать значение для каждой колонки с помощью конструкции INSERT INTO название_таблицы (поле1, поле2 . ) VALUES (значение1, значение2 . ). Рассмотрим на примере.

INSERT INTO Sellers ( >VALUES (‘6’, ‘1st Street’, ‘Los Angeles’, ‘Harry Monroe’, ‘USA’)

Также можно изменять порядок указания названий колонок, однако одновременно нужно менять и порядок значений в параметре VALUES.

2. Добавление части строк

В предыдущем примере при использовании оператора INSERT мы явно отмечали имена столбцов таблицы. Используя данный синтаксис, мы можем пропустить некоторые столбцы. Это значит, что вы вводите значение для одних столбцов но не предлагаете их для других. Например:

Читайте также:  Мегафон архивные тарифные планы

INSERT INTO Sellers ( >VALUES (‘6’, ‘Los Angeles’, ‘Harry Monroe’)

В данном примере мы не указали значение для двух столбцов Address и Country . Вы можете исключать некоторые столбцы из оператора INSERT INTO, если это позволяет производить определение таблицы. В этом случае должно соблюдаться одно из условий: этот столбец определен как допускающий значение NULL (отсутствие какого-либо значения) или в определение таблицы указанное значение по умолчанию. Это означает, что, если не указано никакое значение, будет использовано значение по умолчанию. Если вы пропускаете столбец таблицы, которая не допускает появления в своих строках значений NULL и не имеет значения, определенного для использования по умолчанию, СУБД выдаст сообщение об ошибке, и это строка не будет добавлена.

3. Добавление отобранных данных

В предыдущей примерах мы вставляли данные в таблицы, прописывая их вручную в запросе. Однако оператор INSERT INTO позволяет автоматизировать этот процесс, если мы хотим вставлять данные из другой таблицы. Для этого в SQL существует такая кострукция как INSERT INTO . SELECT . . Данная конструкция позволяет одновременно выбирать данные из одной таблицы, и вставить их в другую. Предположим мы имеем еще одну таблицу Sellers_EU с перечнем продавцов нашего товара в Европе и нам нужно их добавить в общую таблицу Sellers. Структура этих таблиц одинакова (то же количество колонок и те же их названия), однако другие данные. Для этого мы можем прописать следующий запрос:

INSERT INTO Sellers ( >SELECT >FROM Sellers_EU

Нужно обратить внимание, чтобы значение внутренних ключей не повторялись (поле ID), в противном случае произойдет ошибка. Оператор SELECT также может включать предложения WHERE для фильтрации данных. Также следует отметить, что СУБД не обращает внимания на названия колонок, которые содержатся в операторе SELECT, для нее важно только порядок их расположения. Поэтому данные в первом указанном столбце, что были выбраны из-за SELECT, будут в любом случае заполнены в первый столбец таблицы Sellers, указанной после оператора INSERT INTO, независимо от названия поля.

4. Копирование данных из одной таблицы в другую

Часто при работе с базами данных возникает необходимость в создании копий любых таблиц, с целью резервирования или модификации. Чтобы сделать полную копию таблицы в SQL предусмотрен отдельный оператор SELECT INTO. Например, нам нужно создать копию таблицы Sellers, нужно будет прописать запрос следующим образом:

SELECT * INTO Sellers_new FROM Sellers

В отличие от предыдущей конструкции INSERT INTO . SELECT . , когда данные добавляются в существующую таблицу, конструкция SELECT . INTO . FROM . копирует данные в новую таблицу. Также можно сказать, что первая конструкция импортирует данные, а вторая – экспортирует. При использовании конструкции SELECT . INTO . FROM . следует учитывать следующее:

  • – можно использовать любые предложения в операторе SELECT, такие как GROUP BY и HAVING
  • – для добавления данных из нескольких таблиц можно использовать объединение
  • – данные возможно добавить только одну таблицу, независимо от того, из скольких таблиц они были взяты.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector