## MySQL’de UPDATE ve DELETE İşlemleri
MySQL’de `UPDATE` ve `DELETE` komutları, veritabanındaki mevcut verileri güncellemek ve silmek için kullanılır. Bu bölümde, bu komutların farklı kullanım senaryolarını ve ipuçlarını inceleyeceğiz.
### 1. **Temel UPDATE İşlemi**
`UPDATE` komutu, belirli bir tablodaki satırları güncellemek için kullanılır. `WHERE` koşulu ile hangi satırların güncelleneceği belirlenir.
**Örnek Kullanım:**
“`sql
UPDATE customers
SET email = ‘luke_smith@email.com’
WHERE id = 1;
“`
Bu sorgu, `customers` tablosunda `id` değeri 1 olan satırın `email` sütununu günceller.
**Tüm Satırları Güncelleme:**
“`sql
UPDATE customers
SET lastname = ‘Smith’;
“`
Bu sorgu, `customers` tablosundaki tüm satırların `lastname` sütununu `Smith` olarak günceller. Bu tür sorgular dikkatli kullanılmalıdır çünkü tüm satırları etkiler.
### 2. **JOIN ile UPDATE İşlemi**
`UPDATE` komutu, `JOIN` kullanılarak birden fazla tablodaki verileri güncellemek için de kullanılabilir. Bu, özellikle ilişkili tablolardaki verileri güncellerken kullanışlıdır.
**Örnek Kullanım:**
“`sql
UPDATE questions_mysql q
JOIN iwtQuestions i ON i.qId = q.qId
SET q.closeVotes = i.closeVotes,
q.votes = i.votes,
q.answers = i.answers,
q.views = i.views;
“`
Bu sorgu, `questions_mysql` tablosundaki verileri `iwtQuestions` tablosundaki verilere göre günceller. `qId` sütunu, iki tablo arasındaki ilişkiyi sağlar.
### 3. **Bulk UPDATE (Toplu Güncelleme)**
Birden fazla satırı farklı değerlerle güncellemek için `CASE` ifadesi kullanılabilir. Bu, tek bir sorgu ile birden fazla satırı güncellemeyi sağlar.
**Örnek Kullanım:**
“`sql
UPDATE people
SET name =
CASE id
WHEN 1 THEN ‘Karl’
WHEN 2 THEN ‘Tom’
WHEN 3 THEN ‘Mary’
END
WHERE id IN (1, 2, 3);
“`
Bu sorgu, `people` tablosundaki `id` değerlerine göre `name` sütununu günceller.
### 4. **ORDER BY ve LIMIT ile UPDATE**
`UPDATE` komutu, `ORDER BY` ve `LIMIT` ifadeleri ile birlikte kullanılarak belirli bir sırayla ve sınırlı sayıda satırı güncellemeyi sağlar.
**Örnek Kullanım:**
“`sql
UPDATE employees
SET isConfirmed = 1
ORDER BY joiningDate
LIMIT 10;
“`
Bu sorgu, `employees` tablosundaki en eski 10 çalışanın `isConfirmed` sütununu günceller.
### 5. **Temel DELETE İşlemi**
`DELETE` komutu, belirli bir tablodan satır silmek için kullanılır. `WHERE` koşulu ile hangi satırların silineceği belirlenir.
**Örnek Kullanım:**
“`sql
DELETE FROM customers
WHERE id = 1;
“`
Bu sorgu, `customers` tablosunda `id` değeri 1 olan satırı siler.
**Tüm Satırları Silme:**
“`sql
DELETE FROM customers;
“`
Bu sorgu, `customers` tablosundaki tüm satırları siler. Bu tür sorgular dikkatli kullanılmalıdır çünkü tüm verileri siler.
### 6. **JOIN ile DELETE İşlemi**
`DELETE` komutu, `JOIN` kullanılarak birden fazla tablodan satır silmek için de kullanılabilir. Bu, özellikle ilişkili tablolardaki verileri silerken kullanışlıdır.
**Örnek Kullanım:**
“`sql
DELETE p1, p2
FROM people p1
JOIN pets p2 ON p2.ownerId = p1.id
WHERE p1.name = ‘Paul’;
“`
Bu sorgu, `people` tablosundan `name` sütunu `Paul` olan satırı ve `pets` tablosundan bu kişiye ait olan tüm evcil hayvan kayıtlarını siler.
### 7. **TRUNCATE ile Tüm Verileri Silme**
`TRUNCATE` komutu, bir tablodaki tüm verileri siler ve `AUTO_INCREMENT` değerini sıfırlar. Bu, büyük veri setlerinde `DELETE` komutundan daha hızlıdır.
**Örnek Kullanım:**
“`sql
TRUNCATE TABLE customers;
“`
Bu sorgu, `customers` tablosundaki tüm verileri siler ve `AUTO_INCREMENT` değerini sıfırlar.
—
Bu bilgilerle, MySQL’de `UPDATE` ve `DELETE` komutlarının farklı kullanım senaryolarını ve ipuçlarını daha iyi anlayabilirsiniz.
—