Инструменты пользователя

Инструменты сайта


insert

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
insert [2021/01/30 16:17]
dja
insert [2021/01/30 16:24] (текущий)
dja
Строка 11: Строка 11:
 **<font inherit/inherit;;#2980b9;;inherit>INSERT INTO</font> Sellers (ID, Address, City, Seller_name, Country) <font inherit/inherit;;#2980b9;;inherit>VALUES</font>**** ('6', '1st Street', 'Los Angeles', 'Harry Monroe', 'USA')** **<font inherit/inherit;;#2980b9;;inherit>INSERT INTO</font> Sellers (ID, Address, City, Seller_name, Country) <font inherit/inherit;;#2980b9;;inherit>VALUES</font>**** ('6', '1st Street', 'Los Angeles', 'Harry Monroe', 'USA')**
  
-{{https://i.imgur.com/HtATTE2.png?nolink&505x140}}+{{https://i.imgur.com/HtATTE2.png?nolink&}}
  
 Также можно изменять порядок указания названий колонок, однако одновременно нужно менять и порядок значений в параметре **VALUES**. Также можно изменять порядок указания названий колонок, однако одновременно нужно менять и порядок значений в параметре **VALUES**.
Строка 21: Строка 21:
 **<font inherit/inherit;;#2980b9;;inherit>INSERT INTO</font> Sellers (ID, City, Seller_name) <font inherit/inherit;;#2980b9;;inherit>VALUES</font> ('6', 'Los Angeles', 'Harry Monroe')** **<font inherit/inherit;;#2980b9;;inherit>INSERT INTO</font> Sellers (ID, City, Seller_name) <font inherit/inherit;;#2980b9;;inherit>VALUES</font> ('6', 'Los Angeles', 'Harry Monroe')**
  
-{{https://i.imgur.com/cg9SLET.png?nolink&505x140}}+{{https://i.imgur.com/cg9SLET.png?nolink&}}
  
 В данном примере мы не указали значение для двух столбцов **Address**  и **Country**  . Вы можете исключать некоторые столбцы из оператора **INSERT INTO**, если это позволяет производить определение таблицы. В этом случае должно соблюдаться одно из условий: этот столбец определен как допускающий значение **NULL**  (отсутствие какого-либо значения) или в определение таблицы указанное значение по умолчанию. Это означает, что, если не указано никакое значение, будет использовано значение по умолчанию. Если вы пропускаете столбец таблицы, которая не допускает появления в своих строках значений **NULL**  и не имеет значения, определенного для использования по умолчанию, СУБД выдаст сообщение об ошибке, и это строка не будет добавлена. В данном примере мы не указали значение для двух столбцов **Address**  и **Country**  . Вы можете исключать некоторые столбцы из оператора **INSERT INTO**, если это позволяет производить определение таблицы. В этом случае должно соблюдаться одно из условий: этот столбец определен как допускающий значение **NULL**  (отсутствие какого-либо значения) или в определение таблицы указанное значение по умолчанию. Это означает, что, если не указано никакое значение, будет использовано значение по умолчанию. Если вы пропускаете столбец таблицы, которая не допускает появления в своих строках значений **NULL**  и не имеет значения, определенного для использования по умолчанию, СУБД выдаст сообщение об ошибке, и это строка не будет добавлена.
 +
 +===== Добавление отобранных данных. =====
 +
 +В предыдущей примерах мы вставляли данные в таблицы, прописывая их вручную в запросе. Однако оператор ** INSERT INTO **  позволяет автоматизировать этот процесс, если мы хотим вставлять данные из другой таблицы. Для этого в SQL существует такая кострукция как ** INSERT INTO … SELECT … **. Данная конструкция позволяет одновременно выбирать данные из одной таблицы, и вставить их в другую. Предположим мы имеем еще одну таблицу ** Sellers_EU **  с перечнем продавцов нашего товара в Европе и нам нужно их добавить в общую таблицу ** Sellers**. Структура этих таблиц одинакова (то же количество колонок и те же их названия), однако другие данные. Для этого мы можем прописать следующий запрос:
 +
 +**<font inherit/inherit;;#2980b9;;inherit>INSERT INTO</font> Sellers (ID, Address, City, Seller_name, Country) <font inherit/inherit;;#2980b9;;inherit>SELECT</font>****ID, Address, City, Seller_name, Country <font inherit/inherit;;#2980b9;;inherit>FROM</font> Sellers_EU**
 +
 +Нужно обратить внимание, чтобы значение внутренних ключей не повторялись (поле ** ID**), в противном случае произойдет ошибка. Оператор ** SELECT **  также может включать предложения ** WHERE **  для фильтрации данных. Также следует отметить, что СУБД не обращает внимания на названия колонок, которые содержатся в операторе ** SELECT**, для нее важно только порядок их расположения. Поэтому данные в первом указанном столбце, что были выбраны из-за ** SELECT**, будут в любом случае заполнены в первый столбец таблицы ** Sellers**, указанной после оператора ** INSERT INTO**, независимо от названия поля.
 +
 +===== Копирование данных из одной таблицы в другую. =====
 +
 +Часто при работе с базами данных возникает необходимость в создании копий любых таблиц, с целью резервирования или модификации. Чтобы сделать полную копию таблицы в SQL предусмотрен отдельный оператор ** SELECT INTO**. Например, нам нужно создать копию таблицы ** Sellers**, нужно будет прописать запрос следующим образом:
 +
 +**<font inherit/inherit;;#2980b9;;inherit>SELECT</font> * <font inherit/inherit;;#2980b9;;inherit>INTO</font> Sellers_new <font inherit/inherit;;#2980b9;;inherit>FROM</font> Sellers**
 +
 +{{https://i.imgur.com/h1EvUgi.png?nolink&}}
 +
 +В отличие от предыдущей конструкции ** INSERT INTO … SELECT … **, когда данные добавляются в существующую таблицу, конструкция ** SELECT … INTO … FROM … **  копирует данные в новую таблицу. Также можно сказать, что первая конструкция импортирует данные, а вторая - экспортирует. При использовании конструкции ** SELECT … INTO … FROM … **  следует учитывать следующее:
 +  *
 + - можно использовать любые предложения в операторе ** SELECT**, такие как ** GROUP BY **  и ** HAVING **
 +  * - для добавления данных из нескольких таблиц можно использовать объединение
 +  * - данные возможно добавить только одну таблицу, независимо от того, из скольких таблиц они были взяты.
 +
 +[[http://moonexcel.com.ua/уроки-sql13-добавление-данных-insert-into_ru|Источник]]
  
  
insert.1612012631.txt.gz · Последнее изменение: 2021/01/30 16:17 — dja