Какво е INSERT INTO?
INSERT INTO се използва за съхраняване на данни в таблиците. Командата INSERT създава нов ред в таблицата за съхраняване на данни. Данните обикновено се предоставят от приложни програми, които се изпълняват отгоре на базата данни.
Основен синтаксис
Нека разгледаме основния синтаксис на командата INSERT INTO MySQL:
INSERT INTO `table_name` (колона_1, колона_2, ...) СТОЙНОСТИ (стойност_1, стойност_2, ...);
ТУК
- INSERT INTO `table_name` е командата, която казва на MySQL сървъра да добави нов ред в таблица с име` table_name.`
- (колона_1, колона_2, ...) указва колоните, които трябва да бъдат актуализирани в новия ред на MySQL
- VALUES (стойност_1, стойност_2, ...) указва стойностите, които трябва да се добавят в новия ред
При предоставяне на стойностите на данните, които трябва да се вмъкнат в новата таблица, трябва да се има предвид следното:
- Низови типове данни - всички низови стойности трябва да бъдат затворени в единични кавички.
- Цифрови типове данни - всички цифрови стойности трябва да се предоставят директно, без да се затварят в единични или двойни кавички.
- Типове данни за дата - оградете стойностите на датата в единични кавички във формата „ГГГГ-ММ-ДД“.
Пример:
Да предположим, че имаме следния списък с нови членове на библиотеката, които трябва да бъдат добавени към базата данни.
Пълни имена | Дата на раждане | пол | Физически адрес | пощенски адрес | Номер за контакт | Имейл адрес |
---|---|---|---|---|---|---|
Леонард Хофстадтер | Мъжки | Woodcrest | 0845738767 | |||
Шелдън Купър | Мъжки | Woodcrest | 0976736763 | |||
Rajesh Koothrappali | Мъжки | Fairview | 0938867763 | |||
Лесли Уинкъл | 14/02/1984 | Мъжки | 0987636553 | |||
Хауърд Воловиц | 24/08/1981 | Мъжки | Южен парк | Пощенска кутия 4563 | 0987786553 | Този имейл адрес е защитен от спам ботове. Трябва да имате активиран JavaScript, за да го видите. |
Нека вмъкнем данни един по един. Ще започнем с Леонард Хофстадтер. Ние ще третираме номера за контакт като числов тип данни и няма да затваряме номера в единични кавички.
ВЪВЕДЕТЕ В „членове“ („пълни имена“, „пол“, „физически_адрес“, „номер_контакт“) СТОЙНОСТИ („Леонард Хофстадтер“, „Мъж“, „Woodcrest“, 0845738767);
Изпълнението на горния скрипт изпуска 0 от номера за контакт на Леонард. Това е така, защото стойността ще се третира като числова стойност и нулата (0) в началото се изпуска, тъй като не е значима.
За да се избегнат подобни проблеми, стойността трябва да бъде затворена в единични кавички, както е показано по-долу -
ВМЪКНЕТЕ В „членове“ („пълни имена“, „пол“, „физически_адрес“, „номер_контакт“) СТОЙНОСТИ („Шелдън Купър“, „Мъж“, „Woodcrest“, „0976736763“);
В горния случай нула (0) няма да отпадне
Промяната на реда на колоните няма ефект върху заявката INSERT в MySQL, стига правилните стойности да са картографирани в правилните колони.
Показаната по-долу заявка показва горната точка.
ВЪВЕДЕТЕ В „членове“ („номер_за контакт“, „пол“, „пълни имена“, „физически_адрес“) СТОЙНОСТИ („0938867763“, „Мъж“, „Rajesh Koothrappali“, „Woodcrest“);
Горните заявки пропуснаха колоната с дата на раждане. По подразбиране MySQL ще вмъкне NULL стойности в колони, които са пропуснати в заявката INSERT.
Нека сега вмъкнем записа за Лесли, който има посочена дата на раждане. Стойността на датата трябва да бъде затворена в единични кавички, използвайки формата „ГГГГ-ММ-ДД“.
ВЪВЕЖДАНЕ В „членове“ („пълни имена“, „дата_на_раждането“, „пол“, „физически_адрес“, „номер_контакт“) СТОЙНОСТИ („Лесли Уинкъл“, „1984-02-14“, „Мъж“, „Удрест“, „ 0987636553 ');
Всички горепосочени заявки посочват колоните и ги съпоставят със стойности в оператора за вмъкване на MySQL. Ако предоставяме стойности за ВСИЧКИ колони в таблицата, тогава можем да пропуснем колоните от заявката за вмъкване на MySQL.
Пример: -
ВМЪКНЕТЕ В „СТОЙНОСТИ на членовете“ (9, „Хауърд Воловиц“, „Мъж“, „1981-08-24“,
„SouthPark“, „пощенска кутия 4563“, „0987786553“, „lwolowitz [at] email.me“) ;
Нека сега използваме оператора SELECT, за да разгледаме всички редове в таблицата на члена.
SELECT * FROM `members`;
членски_ номер | пълни_ имена | пол | дата на раждане | физически адрес | пощенски адрес | contct_ номер | електронна поща |
---|---|---|---|---|---|---|---|
1 | Джанет Джоунс | Женски пол | 21-07-1980 | Парцел за първа улица № 4 | Частна чанта | 0759 253 542 | Този имейл адрес е защитен от спам ботове. Трябва да имате активиран JavaScript, за да го видите. |
2 | Джанет Смит Джоунс | Женски пол | 23-06-1980 | Мелроуз 123 | НУЛА | НУЛА | Този имейл адрес е защитен от спам ботове. Трябва да имате активиран JavaScript, за да го видите. |
3 | Робърт Фил | Мъжки | 12-07-1989 | 3-та улица 34 | НУЛА | 12345 | Този имейл адрес е защитен от спам ботове. Трябва да имате активиран JavaScript, за да го видите. |
4 | Глория Уилямс | Женски пол | 14-02-1984 | 2-ра улица 23 | НУЛА | НУЛА | НУЛА |
5 | Леонард Хофстадтер | Мъжки | НУЛА | Woodcrest | НУЛА | 845738767 | НУЛА |
6 | Шелдън Купър | Мъжки | НУЛА | Woodcrest | НУЛА | 976736763 | НУЛА |
7 | Rajesh Koothrappali | Мъжки | НУЛА | Woodcrest | НУЛА | 938867763 | НУЛА |
8 | Лесли Уинкъл | Мъжки | 14-02-1984 | Woodcrest | НУЛА | 987636553 | НУЛА |
9 | Хауърд Воловиц | Мъжки | 24-08-1981 | Южен парк | Пощенска кутия 4563 | 987786553 | Този имейл адрес е защитен от спам ботове. Трябва да имате активиран JavaScript, за да го видите. |
Забележете, че номерът за контакт на Leonard Hofstadter е свалил нулата (0) от номера за контакт. Останалите номера за контакт не са свалили нулата (0) в началото.
Вмъкване в таблица от друга таблица
Командата INSERT може да се използва и за вмъкване на данни в таблица от друга таблица. Основният синтаксис е както е показано по-долу.
INSERT INTO table_1 SELECT * FROM table_2;
Нека сега разгледаме практически пример. Ще създадем фиктивна таблица за категории филми за демонстрационни цели. Ще извикаме новата категория таблица categories_archive. Показаният по-долу скрипт създава таблицата.
СЪЗДАВАНЕ НА ТАБЛИЦА `category_archive` (` category_id` int (11) AUTO_INCREMENT, `category_name` varchar (150) ПО подразбиране NULL,` забележки` varchar (500) по подразбиране NULL, ОСНОВЕН КЛЮЧ (`category_id`))
Изпълнете горния скрипт, за да създадете таблицата.
Нека сега вмъкнем всички редове от таблицата с категории в таблицата за архив на категориите. Показаният по-долу скрипт ни помага да постигнем това.
ВМЪКНЕТЕ В `category_archive` SELECT * ОТ` категории`;
Изпълнението на горния скрипт вмъква всички редове от таблицата с категории в таблицата за архив на категориите. Имайте предвид, че структурите на таблиците трябва да бъдат еднакви, за да работи скриптът. По-надежден скрипт е този, който преобразува имената на колоните в таблицата за вмъкване в тези в таблицата, съдържаща данните.
Заявката, показана по-долу, показва нейното използване.
ВМЪКНЕТЕ В `category_archive` (category_id, category_name, забележки) SELECT category_id, category_name, забележки ОТ` категории`;
Изпълнение на заявката SELECT
ИЗБЕРЕТЕ * ОТ `category_archive`
дава следните резултати, показани по-долу.
категория_id | Име на категория | забележки |
---|---|---|
1 | Комедия | Филми с хумор |
2 | Романтичен | Любовни истории |
3 | Епичен | Разказ за древни филми |
4 | Ужас | НУЛА |
5 | Научна фантастика | НУЛА |
6 | Трилър | НУЛА |
7 | Действие | НУЛА |
8 | Романтична комедия | НУЛА |
9 | Анимационни филми | НУЛА |
10 | Анимационни филми | НУЛА |
Пример за PHP: Вмъкване в MySQL таблица
Функцията mysqli_query се използва за изпълнение на 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 connectionif (!$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".'
';} else {echo "Error: " . $sql. "
" . mysqli_error($conn);}}
Обобщение
- Командата INSERT се използва за добавяне на нови данни в таблица. MySql ще добави нов ред, след като командата бъде изпълнена.
- Датата и стойностите на низовете трябва да бъдат затворени в единични кавички.
- Числовите стойности не трябва да се затварят в кавички.
- Командата INSERT може да се използва и за вмъкване на данни от една таблица в друга.