Учебники

9) ВСТАВИТЬ В

 

Что такое INSERT INTO?

Основная цель систем баз данных — хранить данные в таблицах. Данные обычно предоставляются прикладными программами, которые работают поверх базы данных. С этой целью в SQL есть команда INSERT, которая используется для хранения данных в таблице. Команда  INSERT создает новую строку  в таблице для хранения данных.

Основной синтаксис

Давайте посмотрим на основной синтаксис команды SQL INSERT, показанный ниже.

INSERT INTO `table_name`(column_1,column_2,...) VALUES (value_1,value_2,...);

ВОТ

  • INSERT INTO `table_name`  — это команда, которая сообщает серверу MySQL добавить новую строку в таблицу с именем` table_name`.
  • (column_1, column_2, …)  указывает столбцы, которые будут обновлены в новой строке
  • VALUES (value_1, value_2, …)  указывает значения, которые будут добавлены в новую строку

 

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

  • Строковые типы данных  — все строковые значения должны быть заключены в одинарные кавычки.
  • Числовые типы данных  — все числовые значения следует указывать напрямую, не заключая их в одинарные или двойные кавычки.
  • Типы данных даты  — заключите значения даты в одинарные кавычки в формате «ГГГГ-ММ-ДД».

 

Пример:

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

Полные имена Дата рождения Пол Физический адрес почтовый адрес Контактный телефон Адрес электронной почты
Леонард Хофштадтер   мужчина Woodcrest   0845738767  
Шелдон Купер   мужчина Woodcrest   0976736763  
Раджеш Кутраппали   мужчина Фэрвью   0938867763  
Лесли Винкль 14/02/1984 мужчина     0987636553  
Говард Воловиц 24/08/1981 мужчина Южный парк PO Box 4563 0987786553 lwolowitz@email.me

 

Давайте вставим данные по одному. Начнем с Леонарда Хофштадтера. Мы будем рассматривать контактный номер как числовой тип данных, а не заключать его в одинарные кавычки.

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Leonard Hofstadter','Male','Woodcrest',0845738767);  

 

Выполнение вышеуказанного сценария сбрасывает 0 с контактного номера Леонарда. Это связано с тем, что значение будет рассматриваться как числовое значение, а ноль (0) в начале будет удален, поскольку он не имеет значения.

Чтобы избежать таких проблем, значение должно быть заключено в одинарные кавычки, как показано ниже —

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Sheldon Cooper','Male','Woodcrest', '0976736763'); 

 В приведенном выше случае ноль (0) не будет сброшен

Изменение порядка столбцов не влияет на запрос INSERT, если правильные значения были сопоставлены с правильными столбцами.

 Запрос, показанный ниже, демонстрирует вышеуказанную точку.

INSERT INTO `members` (`contact_number`,`gender`,`full_names`,`physical_address`)VALUES ('0938867763','Male','Rajesh Koothrappali','Woodcrest');   

 

Вышеупомянутые запросы пропустили столбец даты рождения,  по умолчанию MySQL вставит значения NULL в столбцы, которые пропускаются в запросе INSERT.

 Давайте теперь вставим запись о Лесли, в которой указана дата рождения. Значение даты должно быть заключено в одинарные кавычки в формате «ГГГГ-ММ-ДД».

INSERT INTO `members` (`full_names`,`date_of_birth`,`gender`,`physical_address`,`contact_number`) VALUES ('Leslie Winkle','1984-02-14','Male','Woodcrest', '0987636553');   

Все вышеперечисленные запросы указали столбцы и сопоставили их со значениями в операторе вставки. Если мы предоставляем значения для ВСЕХ столбцов в таблице, то мы можем опустить столбцы в запросе вставки.

Пример:-

INSERT INTO `members` VALUES (9,'Howard Wolowitz','Male','1981-08-24','SouthPark','P.O. Box 4563', '0987786553', 'lwolowitz[at]email.me');

Теперь давайте используем инструкцию SELECT для просмотра всех строк в таблице members. SELECT * FROM `members`;

membership_numberfull_namesgenderdate_of_birthphysical_addresspostal_addresscontct_numberemail
1Janet JonesFemale21-07-1980First Street Plot No 4Private Bag0759 253 542janetjones@yagoo.cm
2Janet Smith JonesFemale23-06-1980Melrose 123NULLNULLjj@fstreet.com
3Robert PhilMale12-07-19893rd Street 34NULL12345rm@tstreet.com
4Gloria WilliamsFemale14-02-19842nd Street 23NULLNULLNULL
5Leonard HofstadterMaleNULLWoodcrestNULL845738767NULL
6Sheldon CooperMaleNULLWoodcrestNULL976736763NULL
7Rajesh KoothrappaliMaleNULLWoodcrestNULL938867763NULL
8Leslie WinkleMale14-02-1984WoodcrestNULL987636553NULL
9Howard WolowitzMale24-08-1981SouthParkP.O. Box 4563987786553lwolowitz@email.me

Обратите внимание, что контактный номер Леонарда Хофштадтера упал ноль (0) от контактного номера. Другие контактные номера не опустились до нуля (0) в начале.

Вставка в таблицу из другой таблицы

Команда INSERT также может использоваться для вставки данных в таблицу из другой таблицы. Основной синтаксис показан ниже.

INSERT INTO table_1 SELECT * FROM table_2;    	

Давайте теперь посмотрим на практический пример, мы создадим фиктивную таблицу для категорий фильмов в демонстрационных целях. Мы назовем новую таблицу категорий category_archive. Сценарий, показанный ниже, создает таблицу.

CREATE TABLE `categories_archive` (    	  `category_id` int(11) AUTO_INCREMENT,    	  `category_name` varchar(150) DEFAULT NULL,    	  `remarks` varchar(500) DEFAULT NULL,    	  PRIMARY KEY (`category_id`)    	)   

 

Выполните приведенный выше скрипт для создания таблицы.

Теперь давайте вставим все строки из таблицы категорий в таблицу архива категорий. Сценарий, показанный ниже, помогает нам достичь этого.

INSERT INTO `categories_archive` SELECT * FROM `categories`;  

 

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

Запрос, показанный ниже, демонстрирует его использование.

INSERT INTO `categories_archive`(category_id,category_name,remarks)  SELECT category_id,category_name,remarks FROM `categories`;

 

Выполнение запроса SELECT

SELECT * FROM `categories_archive`

 

дает следующие результаты, показанные ниже.

category_idcategory_nameremarks
1ComedyMovies with humour
2RomanticLove stories
3EpicStory acient movies
4HorrorNULL
5Science FictionNULL
6ThrillerNULL
7ActionNULL
8Romantic ComedyNULL
9CartoonsNULL
10CartoonsNULL

Резюме

  • Команда INSERT используется для добавления новых данных в таблицу
  • Дата и строковые значения должны быть заключены в одинарные кавычки.
  • Числовые значения не должны быть заключены в кавычки.
  • Команда INSERT также может использоваться для вставки данных из одной таблицы в другую.