MySQL INSERT INTO Query: Как да добавите ред в таблица (пример)
⚡ Умно обобщение
MySQL INSERT INTO Заявката добавя нови редове към таблица, или чрез изрично именуване на целевите колони, или чрез предоставяне на стойност за всяка колона. Правилното цитиране на низове, числа и дати определя дали съхранените данни ще се запазят непокътнати.
Какво е INSERT INTO?
ВЪВЕДЕТЕ СЕ се използва за съхраняване на данни в таблиците. Командата INSERT създава нов ред в таблицата за съхраняване на данни. Данните обикновено се предоставят от приложни програми, които се изпълняват върху базата данни.
Основен синтаксис
Нека да разгледаме основния синтаксис на INSERT INTO MySQL команда:
INSERT INTO `table_name`(column_1,column_2,...) VALUES (value_1,value_2,...);
ТУК
- INSERT INTO `table_name` е командата, която казва MySQL сървър за добавяне на нов ред в таблица с име `table_name.`
- (column_1,column_2,…) указва колоните, които да бъдат актуализирани в новия MySQL ред
- VALUES (стойност_1,стойност_2,…) указва стойностите, които да се добавят в новия ред
Когато предоставяте стойностите на данните, които да бъдат вмъкнати в новата таблица, трябва да се има предвид следното:
- Типове низови данни – всички низови стойности трябва да бъдат затворени в единични кавички.
- Числови типове данни – всички числови стойности трябва да се предоставят директно, без да се ограждат в единични или двойни кавички.
- Типове данни за дата – оградете стойностите за дата в единични кавички във формат „ГГГГ-ММ-ДД“.
Вмъкване на няколко реда едновременно
Един INSERT оператор може да съдържа няколко реда. Разделете всеки набор от стойности със запетая. Един оператор е по-бърз от много, защото индексът се актуализира веднъж.
INSERT INTO `categories`(`category_name`,`remarks`) VALUES ('Documentary', 'Factual films'), ('Musical', 'Song driven films');
MySQL Пример за заявка INSERT INTO
Да предположим, че имаме следния списък с нови членове на библиотеката, които трябва да бъдат добавени към базата данни.
| Пълни имена | Дата на раждане | пол | Физически адрес | пощенски адрес | Номер на контакта | Имейл адрес |
|---|---|---|---|---|---|---|
| Леонард Хофщадтер | Мъжки | Уудкрест | 0845738767 | |||
| Шелдън Купър | Мъжки | Уудкрест | 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 от телефонния номер на Леонард, защото стойността се третира като числова и водещата нула не е значима.
За да се избегнат подобни проблеми, стойността трябва да бъде оградена в единични кавички, както е показано по-долу.
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Sheldon Cooper','Male','Woodcrest', '0976736763');
⚠️ Съвет: Съхранявайте телефонни номера, пощенски кодове и подобни идентификатори в текстова колона, като например VARCHAR. Числовите колони не могат да имат водеща нула.
Промяна на реда на колоните
Промяната на реда на колоните няма ефект върху заявката INSERT в MySQL, стига правилните стойности да са съпоставени с правилните колони. Запитването по-долу демонстрира това.
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');
Пропускане на списъка с колони
Всички горепосочени заявки именуват колоните и ги съпоставят със стойности. Ако предоставим стойности за ВСИЧКИ колони в таблицата, списъкът с колони може да бъде пропуснат от MySQL вмъкнете заявка.
INSERT INTO `members` VALUES (9,'Howard Wolowitz','Male','1981-08-24', 'SouthPark','P.O. Box 4563', '0987786553', 'lwolowitz@email.me');
Нека сега използваме SELECT израз за да видите всички редове в таблицата с членове.
SELECT * FROM `members`;
| членски_ номер | пълни_ имена | пол | дата_на_ раждане | физически_адрес | пощенски_ адрес | контактен номер | електронна поща |
|---|---|---|---|---|---|---|---|
| 1 | Джанет Джоунс | Женски | 21-07-1980 | Първа улица Парцел №4 | Лична чанта | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Джанет Смит Джоунс | Женски | 23-06-1980 | Мелроуз 123 | NULL | NULL | jj@fstreet.com |
| 3 | Робърт Фил | Мъжки | 12-07-1989 | 3-та улица 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Глория Уилямс | Женски | 14-02-1984 | 2-ра улица 23 | NULL | NULL | NULL |
| 5 | Леонард Хофщадтер | Мъжки | NULL | Уудкрест | NULL | 845738767 | NULL |
| 6 | Шелдън Купър | Мъжки | NULL | Уудкрест | NULL | 0976736763 | NULL |
| 7 | Раджеш Кутрапали | Мъжки | NULL | Уудкрест | NULL | 0938867763 | NULL |
| 8 | Лесли Уинкъл | Мъжки | 14-02-1984 | Уудкрест | NULL | 0987636553 | NULL |
| 9 | Хауърд Воловиц | Мъжки | 24-08-1981 | Южен парк | PO Box 4563 | 0987786553 | lwolowitz@email.me |
Обърнете внимание, че телефонният номер на Леонард Хофщатер е премахнал водещата си нула, точно както е предвидено. Цитираните числа я запазват.
Вмъкване в таблица от друга таблица
Командата INSERT може да се използва и за вмъкване на данни в таблица от друга таблица. Основният синтаксис е както е показано по-долу.
INSERT INTO table_1 SELECT * FROM table_2;
Сега ще създадем фиктивна таблица за категории филми, наречена categories_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`;
| категория_id | CATEGORY_NAME | бележки |
|---|---|---|
| 1 | Комедия | Филми с хумор |
| 2 | Романтичен | Любовни истории |
| 3 | Епопея | История на древни филми |
| 4 | Ужас | NULL |
| 5 | Научна фантастика | NULL |
| 6 | Трилър | NULL |
| 7 | действие | NULL |
| 8 | Романтична комедия | NULL |
| 9 | Карикатури | NULL |
| 10 | Карикатури | NULL |
Пример за PHP: Вмъкване в MySQL Маса
Функцията mysqli_query се използва за изпълнение SQL заявки от PHP. Изпълнява оператори Insert, Select, Update и Delete по един и същ начин и има следния синтаксис.
mysqli_query($db_handle,$query);
ТУК,
- “mysqli_query(…)” е функцията, която изпълнява SQL заявките.
- „$query“ е SQL заявката, която ще бъде изпълнена.
- „$db_handle“ е връзката за връзка със сървъра, върната от mysqli_connect.
Пример
$servername = "localhost"; $username = "alex"; $password = "yPXuPT"; $dbname = "afmznf"; // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "INSERT INTO addkeyworddata(link, keyword) VALUES ('https://www.guru99.com/','1000')"; if (mysqli_query($conn, $sql)) { echo "New record created successfully" . '<br>'; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); }

