MySQL'deki REPLACE ifadesi SQL Standardının bir uzantısıdır. Bu ifade, INSERT ifadesiyle aynı şekilde çalışır; ancak eski bir satır, bir PRIMARY KEY veya UNIQUE dizini için tablodaki yeni kayıtla eşleşiyorsa, bu komut, yeni satır eklenmeden önce eski satırı siler.
Bu ifade, mevcut kayıtları güncel tutmak için tabloya güncellemek istediğimizde gereklidir. Bu amaçla standart insert sorgusunu kullanırsak PRIMARY KEY için Duplicate entry veya UNIQUE key hatası verecektir. Bu durumda görevimizi gerçekleştirmek için REPLACE deyimini kullanacağız. REPLACE komutu ikisinden birini gerektirir olası eylemler gerçekleşir:
- Mevcut veri satırıyla eşleşen bir değer bulunamazsa standart bir INSERT ifadesi gerçekleştirilir.
- Yinelenen kayıt bulunursa, değiştirme komutu mevcut satırı siler ve ardından yeni kaydı tabloya ekler.
REPLACE deyiminde güncelleme iki adımda gerçekleştirildi. İlk önce mevcut kaydı siler ve ardından standart INSERT komutuna benzer şekilde yeni güncellenen kayıt eklenir. Böylece REPLACE ifadesinin iki standart işlevi yerine getirdiğini söyleyebiliriz: SİLMEK Ve SOKMAK .
Sözdizimi
Aşağıdakiler sözdizimidir YER DEĞİŞTİRMEK beyanı MySQL :
REPLACE [INTO] table_name(column_list) VALUES(value_list);
MySQL REPLACE Örneği
MySQL'de REPLACE ifadesinin çalışmasını bir örnek yardımıyla anlayalım. Öncelikle isimli bir tablo oluşturacağız. 'Kişi' aşağıdaki ifadeyi kullanarak:
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 );
Daha sonra, tabloyu kullanarak kaydı doldurmamız gerekiyor. SOKMAK aşağıdaki gibi beyan:
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');
Yürüt SEÇME Aşağıdaki çıktıda gösterilebilecek kayıtları doğrulamaya yönelik ifade:
Verileri bir tabloda doğruladıktan sonra REPLACE deyimini kullanarak herhangi bir eski satırı yeni satırla değiştirebiliriz. Güncelleyen aşağıdaki ifadeyi yürütün kimliği 4 olan kişinin şehri .
REPLACE INTO Person (id, city) VALUES(4,'Amsterdam');
Yukarıdaki ifadenin başarılı bir şekilde yürütülmesinden sonra, değişikliği doğrulamak için Kişi tablosunun verilerinin tekrar sorgulanması gerekir.
Java tamsayıyı dizeye dönüştürür
İçindeki değer isim Ve e-posta sütunlar HÜKÜMSÜZ Şimdi. Bunun nedeni, REPLACE ifadesinin şu şekilde çalışmasıdır:
- Bu ifade öncelikle Kişi tablosuna yeni bir satır eklemeye çalışır. Ancak id = 4'ün tabloda zaten mevcut olması nedeniyle yeni bir satırın eklenmesi başarısız oldu.
- Yani bu ifade önce kimliği = 4 olan satırı silin ve ardından Amsterdam ile aynı kimliğe ve şehre sahip yeni bir satır ekleyin. Ad ve e-posta sütununun değerini belirtmediğimiz için NULL olarak ayarlandı.
Bir satırı güncellemek için MySQL REPLACE ifadesi
Bir satır verisini bir tabloya güncellemek için aşağıdaki REPLACE deyimini kullanabiliriz:
REPLACE INTO table SET column1 = value1, column2 = value2;
Yukarıdaki sözdizimi şuna benzer: GÜNCELLEME bildirimi REPLACE anahtar sözcüğü hariç. Bu ifadeyle WHERE deyimini kullanamayacağımızı belirtmek isteriz.
Adı geçen kişinin şehrini güncellemek için REPLACE ifadesini kullanan aşağıdaki örneği yürütün Mike itibaren Kaliforniya ile Birmingham .
REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham';
Tabloyu doğruladıktan sonra aşağıdaki çıktıyı görebiliriz:
Sütunun değerini belirtmemişsek SET yan tümcesi , bu komut şu şekilde çalışır: GÜNCELLEME bildirimi Bu, REPLACE ifadesinin o sütunun varsayılan değerini kullanacağı anlamına gelir.
SELECT deyiminden veri eklemek için MySQL REPLACE.
Bir sorgudan dönen verilerle birlikte bir tabloya veri eklemek için aşağıdaki REPLACE INTO deyimini kullanabiliriz.
REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition;
Yukarıdaki REPLACE sorgusunun şuna benzer olduğunu belirtmek gerekir: SELECT'E EKLEYİN ifade. Aynı tablodaki bir satırı kopyalamak için REPLACE INTO ifadesini kullanan aşağıdaki örneği yürütün.
REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2;
Tablonun doğrulanmasının ardından aşağıdaki çıktıyı elde edeceğiz. Bu çıktıda aynı tablo içerisindeki bir satırın kopyasının başarıyla eklendiğini görebiliriz.