logo

MySQL ЗАМЕНИТЕ

Операторът REPLACE в MySQL е разширение на стандарта SQL. Този оператор работи по същия начин като оператора INSERT, с изключение на това, че ако стар ред съвпада с новия запис в таблицата за PRIMARY KEY или UNIQUE индекс, тази команда изтрива стария ред, преди да се добави новият ред.

Този оператор е необходим, когато искаме да актуализираме съществуващите записи в таблицата, за да ги поддържаме актуализирани. Ако използваме стандартната заявка за вмъкване за тази цел, тя ще даде дублиран запис за PRIMARY KEY или грешка на УНИКАЛЕН ключ. В този случай ще използваме оператора REPLACE, за да изпълним нашата задача. Командата REPLACE изисква едно от двете възможен извършват се действия:

  • Ако не бъде намерена съответстваща стойност със съществуващия ред с данни, тогава се изпълнява стандартен оператор INSERT.
  • Ако дублираният запис бъде открит, командата за замяна ще изтрие съществуващия ред и след това ще добави новия запис в таблицата.

В оператора REPLACE актуализирането се извършва в две стъпки. Първо ще изтрие съществуващия запис и след това ще добави новия актуализиран запис, подобно на стандартна команда INSERT. По този начин можем да кажем, че операторът REPLACE изпълнява две стандартни функции, ИЗТРИЙ и ВМЪКНЕТЕ .

Синтаксис

Следва синтаксисът на ЗАМЕНИТЕ изявление в MySQL :

 REPLACE [INTO] table_name(column_list) VALUES(value_list); 

MySQL REPLACE Пример

int към низ в java

Нека разберем работата на оператора REPLACE в MySQL с помощта на пример. Първо, ще създадем таблица с име 'лице' използвайки следното изявление:

 CREATE TABLE Person ( ID int AUTO_INCREMENT PRIMARY KEY, Name varchar(45) DEFAULT NULL, Email varchar(45) DEFAULT NULL UNIQUE, City varchar(25) DEFAULT NULL ); 

След това трябва да попълним записа в таблицата с помощта на ВМЪКНЕТЕ изявление като по-долу:

 INSERT INTO Person(ID, Name, Email, City) VALUES (1,'Mike', '[email protected]', 'California'), (2, 'Alexandar', '[email protected]', 'New York'), (3, 'Adam', '[email protected]', 'Los Angeles'), (4, 'Peter', '[email protected]', 'Alaska'); 

Изпълнете ИЗБЕРЕТЕ израз за проверка на записите, които могат да бъдат показани в изхода по-долу:

MySQL ЗАМЕНИТЕ

След като проверим данните в таблица, можем да заменим всеки стар ред с новия ред, като използваме оператора REPLACE. Изпълнете оператора по-долу, който актуализира град на лице, чийто идентификатор е 4 .

 REPLACE INTO Person (id, city) VALUES(4,'Amsterdam'); 

След успешното изпълнение на горния оператор е необходимо отново да се направят запитвания към данните от таблицата Person, за да се провери замяната.

MySQL ЗАМЕНИТЕ

Стойността в име и електронна поща колоните са НУЛА сега. Това е така, защото изразът REPLACE работи по следния начин:

  • Този оператор първо се опитва да вмъкне нов ред в таблицата Person. Но вмъкването на нов ред е неуспешно, защото id = 4 вече съществува в таблицата.
  • Така че този оператор първо изтрива реда, чийто id = 4 и след това вмъква нов ред със същия id и град като Амстердам. Тъй като не сме посочили стойността за колоната име и имейл, тя беше зададена на NULL.

Оператор MySQL REPLACE за актуализиране на ред

Можем да използваме следния оператор REPLACE, за да актуализираме данни от ред в таблица:

 REPLACE INTO table SET column1 = value1, column2 = value2; 

Горният синтаксис е подобен на Изявление UPDATE с изключение на ключовата дума REPLACE. Трябва да се отбележи, че не можем да използваме клаузата WHERE с това изявление.

Изпълнете примера по-долу, който използва израза REPLACE, за да актуализира града на посоченото лице Майк от Калифорния да се Бирмингам .

 REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham'; 

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

MySQL ЗАМЕНИТЕ

Ако не сме посочили стойността на колоната в Клауза SET , тази команда работи като Изявление UPDATE , което означава, че изразът REPLACE ще използва стойността по подразбиране на тази колона.

MySQL REPLACE за вмъкване на данни от израза SELECT.

Можем да използваме следния оператор REPLACE INTO, за да вмъкнем данни в таблица с данните, върнати от заявка.

 REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition; 

Трябва да се отбележи, че горната REPLACE заявка е подобна на INSERT INTO SELECT изявление. Изпълнете примера по-долу, който използва израза REPLACE INTO за копиране на ред в рамките на същата таблица.

 REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2; 

След проверка на таблицата ще получим следния резултат. В този изход можем да видим, че копието на ред в същата таблица е добавено успешно.

MySQL ЗАМЕНИТЕ