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

Какво е 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,…) указва стойностите, които да се добавят в новия ред

Когато предоставяте стойностите на данните, които да бъдат вмъкнати в новата таблица, трябва да се има предвид следното:

  • Типове низови данни – всички низови стойности трябва да бъдат затворени в единични кавички.
  • Числови типове данни - всички числови стойности трябва да се предоставят директно, без да се затварят в единични или двойни кавички.
  • Типове данни за дата – оградете стойностите за дата в единични кавички във формат „ГГГГ-ММ-ДД“.


Пример:

Да предположим, че имаме следния списък с нови членове на библиотеката, които трябва да бъдат добавени към базата данни.

Пълни имена Дата на раждане пол Физически адрес пощенски адрес Номер на контакта Имейл Адрес
Леонард Хофщадтер Мъж Уудкрест 0845738767
Шелдън Купър Мъж Уудкрест 0976736763
Раджеш Кутрапали Мъж Fairview 0938867763
Лесли Уинкъл 14/02/1984 Мъж 0987636553
Хауърд Воловиц 24/08/1981 Мъж South Park 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');

В горния случай zero(0) няма да бъде премахната


Промяната на реда на колоните няма ефект върху заявката 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 вмъкнете изявление. Ако предоставяме стойности за ВСИЧКИ колони в таблицата, тогава можем да пропуснем колоните от MySQL вмъкнете заявка.

Пример:-

INSERT INTO `members`  VALUES (9,'Howard Wolowitz','Male','1981-08-24',
'SouthPark','P.O. Box 4563', '0987786553', 'lwolowitz[at]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

Забележете, че номерът за контакт на Леонард Хофстадтер е изпуснал нулата (0) от номера за контакт. Другите номера за връзка не са изпуснали нулата (0) в началото.

Вмъкване в таблица от друга таблица

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

INSERT INTO table_1 SELECT * FROM table_2;

Нека сега да разгледаме един практически пример. Ще създадем фиктивна таблица за категории филми за демонстрационни цели. Ще наречем новата таблица с категории категории_архив. Показаният по-долу скрипт създава таблицата.

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 запитвания.

Функцията SQL вмъкване в таблица може да се използва за изпълнение на следните типове заявки:

  • Поставете
  • Изберете
  • Актуализация
  • изтриване

Има следния синтаксис.

mysqli_query($db_handle,$query);

ТУК,

“mysqli_query(…)” е функцията, която изпълнява SQL заявките.

“$query” е SQL заявката, която трябва да бъде изпълнена

“$link_identifier” не е задължителен, може да се използва за предаване на връзката за връзка със сървъра

Пример

$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);
	}
}

Oбобщение

  • Командата INSERT се използва за добавяне на нови данни в таблица. MySql ще добави нов ред, след като командата бъде изпълнена.
  • Стойностите за дата и низ трябва да бъдат оградени в единични кавички.
  • Числовите стойности не е необходимо да бъдат ограждани в кавички.
  • Командата INSERT може да се използва и за вмъкване на данни от една таблица в друга.