MySQL'deki UPDATE sorgusu, bir tablonun verilerini değiştirmek için kullanılan bir DML ifadesidir. UPDATE sorgusu SET ve WHERE yan tümcesini gerektirmelidir. SET deyimi, WHERE deyiminde belirtilen sütunun değerlerini değiştirmek için kullanılır.
MySQL'deki JOIN cümlesi, tek bir sorguda birden fazla tabloyu birleştirerek veri almak için ifadede kullanılır.
UPDATE JOIN, çapraz tablo güncellemelerini gerçekleştirmek için kullanılan bir MySQL ifadesidir; bu, JOIN cümleciği koşuluyla başka bir tablo kullanarak bir tabloyu güncelleyebileceğimiz anlamına gelir . Bu sorgu, birden fazla tablonun birleştirildiği verileri temel alarak günceller ve değiştirir. ÖNCELİK Anahtar ve YABANCI Anahtar ve belirtilen bir birleştirme koşulu. kullanarak tek veya birden fazla sütunu aynı anda güncelleyebiliriz. GÜNCELLEME sorgusu .
NOT: MySQL UPDATE JOIN ifadesi 4.0 veya üzeri sürümlerden itibaren desteklenir.
Sözdizimi
MySQL tablosundaki kaydı değiştirmek için UPDATE JOIN ifadesinin temel sözdizimi aşağıda verilmiştir:
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
Yukarıdaki MySQL UPDATE JOIN sözdiziminde:
Öncelikle iki tabloyu belirledik: ana tablo (Tab1) ve UPDATE cümleciğinden sonraki başka bir tablo (tab2). UPDATE deyiminden sonra en az bir tablonun belirtilmesi gerekmektedir. Daha sonra türlerini belirledik. JOIN cümleleri , yani INNER JOIN veya SOL YÖNDEN KATILIM UPDATE yan tümcesinden hemen sonra görünür ve ardından ON anahtar sözcüğünden sonra belirtilen bir birleştirme yüklemi görüntülenir. Daha sonra, tabloya değişiklik yapmak için Tab1 ve/veya Tab2'deki sütunlara yeni değerleri atamamız gerekir. Son olarak, WHERE yan tümcesi koşulu, güncelleme için satırları sınırlamak için kullanılır.
UPDATE JOIN MySQL'de nasıl çalışır?
UPDATE JOIN çalışma süreci MySQL yukarıdaki sözdiziminde açıklananla aynıdır. Ancak bazen bu sorgunun herhangi bir birleştirme gerektirmeden çapraz tablo güncellemesini tek başına gerçekleştirdiğini görürdük. Aşağıdaki sözdizimi, bir tabloyu başka bir tablo kullanarak güncellemenin başka bir yoludur :
monitör ekranımın boyutu nedir
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
Yukarıdaki UPDATE ifadesi, INNER JOIN veya LEFT JOIN cümleleriyle UPDATE JOIN ile aynı sonucu üretir. Bu, yukarıdaki sözdizimini, yukarıda görüntülenen UPDATE JOIN sözdizimi olarak yeniden yazabileceğimiz anlamına gelir:
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
UPDATE JOIN ifadesinin MySQL tablosunda nasıl çalıştığını anlamak için bazı örnekler alalım.
GÜNCELLEME KATIL Örnekleri
Öncelikle adında iki tablo oluşturacağız. Verim Ve Çalışan ve her iki tablo da yabancı anahtar aracılığıyla ilişkilidir. Burada 'Performans' bir ebeveyn tablosu ve 'Çalışanlar' çocuk masa . Aşağıdaki komut dosyaları her iki tabloyu da kayıtlarıyla birlikte oluşturur.
Tablo: Performans
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
Daha sonra INSERT deyimini kullanarak tablodaki kayıtları doldurunuz.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
Ardından, aşağıdaki resimde gösterildiği gibi verileri doğrulamak için SELECT sorgusunu yürütün:
Tablo: Çalışanlar
CREATE TABLE Employees ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, performance INT(11) DEFAULT NULL, salary FLOAT DEFAULT NULL, CONSTRAINT fk_performance FOREIGN KEY (performance) REFERENCES Performance (performance) );
Daha sonra INSERT deyimini kullanarak tablodaki kayıtları doldurunuz.
INSERT INTO Employees (name, performance, salary) VALUES('Mary', 101, 55000), ('John', 103, 65000), ('Suzi', 104, 85000), ('Gracia', 105, 110000), ('Nancy Johnson', 103, 95000), ('Joseph', 102, 45000), ('Donald', 103, 50000);
Ardından, aşağıdaki resimde gösterildiği gibi verileri doğrulamak için SELECT sorgusunu yürütün:
INNER JOIN Örneği ile UPDATE JOIN
Diyelim ki güncellemek istiyoruz çalışanın performansına göre maaş alması . Performansın düşük olması nedeniyle UPDATE INNER JOIN ifadesini kullanarak Çalışanlar tablosunda bir çalışanın maaşını güncelleyebiliriz. yüzde performans tablosunda saklanır.
Yukarıdaki tablolarda kullanmamız gerekenler verim Çalışanlar ve Performans tablosuna katılmak için alanı. Aşağıdaki sorguya bakın:
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
Yukarıdaki ifadeyi yürüttükten sonra, çalışanın maaş sütununun başarıyla güncellendiğini görebildiğimiz aşağıdaki çıktıyı alacağız.
Bu sorgunun MySQL'de nasıl çalıştığını anlayalım. Sorguda UPDATE deyiminden sonra sadece Çalışanlar tablosunu belirttik. Çünkü her iki tablodaki kaydı değil, yalnızca Çalışanlar tablosundaki kaydı değiştirmek istiyoruz.
Sorgu, 'Çalışanlar' tablosundaki her satırın performans sütunu değerlerini 'Performans' tablosunun performans sütunuyla karşılaştırarak kontrol eder. Eşleşen performans sütununu alacaksa Performans tablosundaki yüzdeyi alır ve Çalışanlar tablosunun maaş sütununu günceller. UPDATE JOIN sorgusunda WHERE yan tümcesini belirtmediğimiz için bu sorgu, Çalışanlar tablosundaki tüm kayıtları günceller.
LEFT JOIN Örneği ile UPDATE JOIN
LEFT JOIN ile UPDATE JOIN'i anlamak için öncelikle Çalışanlar tablosuna iki yeni satır eklememiz gerekir:
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
Bu çalışanlar yeni işe alınmış olduğundan performans kayıtları mevcut değildir. Aşağıdaki çıktıya bakın:
Yeni işe alınan çalışanların maaşını güncellemek istiyorsak UPDATE INNER JOIN sorgusunu kullanamayız. Bunun nedeni Performans tablosunda performans verilerinin bulunmamasıdır. Dolayısıyla bu ihtiyacı karşılamak için UPDATE LEFT JOIN ifadesini kullanacağız.
MySQL'deki UPDATE LEFT JOIN ifadesi, başka bir tablonun karşılık gelen satırında hiçbir kayıt bulunmadığında tablodaki bir satırı güncellemek için kullanılır.
Örneğin , yeni işe alınan bir çalışanın maaşını %2,5 artırmak istiyorsak bunu aşağıdaki ifadenin yardımıyla yapabiliriz:
UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL;
Yukarıdaki sorguyu yürüttükten sonra yeni işe alınan çalışanların maaşlarının başarıyla güncellendiğini görebileceğimiz aşağıdaki görüntüdeki çıktıyı alacağız.
Bu yazımızda, JOIN cümleciği koşuluyla bir tablodaki mevcut verileri başka bir tablodaki yeni verilerle değiştirmemize olanak sağlayan MySQL Update join deyimini öğrendik. Bu sorgu, WHERE yan tümcesinde belirtilen belirli sütunları INNER JOIN veya LEFT JOIN yan tümcelerini kullanarak değiştirmemiz gerektiğinde avantajlıdır.