Что такое 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 | [email protected] |
Давайте вставим данные по одному. Начнем с Леонарда Хофштадтера. Мы будем рассматривать контактный номер как числовой тип данных, а не заключать его в одинарные кавычки.
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_number full_names gender date_of_birth physical_address postal_address contct_number 1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 [email protected] 2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL [email protected] 3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 [email protected] 4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL 5 Leonard Hofstadter Male NULL Woodcrest NULL 845738767 NULL 6 Sheldon Cooper Male NULL Woodcrest NULL 976736763 NULL 7 Rajesh Koothrappali Male NULL Woodcrest NULL 938867763 NULL 8 Leslie Winkle Male 14-02-1984 Woodcrest NULL 987636553 NULL 9 Howard Wolowitz Male 24-08-1981 SouthPark P.O. Box 4563 987786553 [email protected]
Обратите внимание, что контактный номер Леонарда Хофштадтера упал ноль (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_id category_name remarks 1 Comedy Movies with humour 2 Romantic Love stories 3 Epic Story acient movies 4 Horror NULL 5 Science Fiction NULL 6 Thriller NULL 7 Action NULL 8 Romantic Comedy NULL 9 Cartoons NULL 10 Cartoons NULL
Резюме
- Команда INSERT используется для добавления новых данных в таблицу
- Дата и строковые значения должны быть заключены в одинарные кавычки.
- Числовые значения не должны быть заключены в кавычки.
- Команда INSERT также может использоваться для вставки данных из одной таблицы в другую.