MySQL INSERT INTO Query: Как да добавите ред в таблица (пример)

⚡ Умно обобщение

MySQL INSERT INTO Заявката добавя нови редове към таблица, или чрез изрично именуване на целевите колони, или чрез предоставяне на стойност за всяка колона. Правилното цитиране на низове, числа и дати определя дали съхранените данни ще се запазят непокътнати.

  • 📥 Основен синтаксис: INSERT INTO `table_name`(column_1,column_2) VALUES (value_1,value_2) създава един нов ред в посочената таблица.
  • 🔤 Правило за цитиране: Низовите стойности и стойностите за дата изискват единични кавички; числовите стойности се предоставят без кавички.
  • 0️⃣ Водещ нулев капан: Нецитиран телефонен номер се чете като число, така че водещата нула се пропуска безшумно.
  • 🔀 Ред на колоните: Редът на колоните в заявката е без значение, при условие че всяка стойност съответства на съответстващата ѝ колона.
  • 🕳️ Пропуснати колони: Колоните, пропуснати извън оператора, получават NULL или декларираната им стойност по подразбиране.
  • 📑 От маса до маса: INSERT INTO … SELECT копира редове между таблици, когато колонните структури са подравнени.

Какво е 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);
}

Въпроси и Отговори

MySQL отхвърля го с грешка за дублиран запис. Използвайте INSERT IGNORE, за да пропуснете реда безшумно, или INSERT … ON DUPLICATE KEY UPDATE, за да актуализирате съществуващия ред.

Изпълнете SELECT LAST_INSERT_ID() веднага след вмъкването или извикайте mysqli_insert_id($conn) в PHP. Това връща ключа AUTO_INCREMENT, генериран за последния ред във вашата собствена връзка.

Никога не свързвайте потребителския вход в низа на заявката. Използвайте подготвени оператори с обвързани параметри, така че стойностите да пътуват отделно от SQL и не могат да се изпълняват като команди.

Да. Асистентите с изкуствен интелект превръщат електронни таблици или обикновени описания в INSERT оператори и MySQL Workbench може да ги изпълни. Проверете реда на колоните и цитирането, защото моделът може да познае схемата.

Първо го поставете в копие за разработка. Генерираните от изкуствен интелект редове могат да повредят външните ключове, да превишат дължината на колоните или да създадат невалидни дати. Изпълнете пакета в транзакция, за да може да бъде отменен.

Обобщете тази публикация с: