Modül dersleri (2/4)
Güncelleme ve silme: GÜNCELLEME ve SİL
UPDATE mevcut satırları değiştirir; DELETE bunları kaldırır. İkisi de paylaşıyor
aynı, temel, altın kural: WHERE cümlesi hangi satırlara karar verir
dokunmak. Bunu unutmak, tablonun tamamını değiştirmek/silmek anlamına gelir.
GÜNCELLEME
UPDATE tabella
SET colonna1 = nuovo_valore,
colonna2 = altra_espressione
WHERE condizione;Örnekler:
-- Aumenta del 10% i prezzi di tutti i prodotti della categoria 5 (Computer):
UPDATE products
SET price = price * 1.10
WHERE category_id = 5;
-- Aggiorna due colonne contemporaneamente:
UPDATE orders
SET status = 'shipped',
shipped_at = NOW()
WHERE id = 12;SET col = espressione: ifade, satırın geçerli değerine referans verebilir
değerler (price * 1.10) ve ayrıca NOW(), NULL veya kullanılabilir
alt sorgular.
SİLMEK
DELETE FROM tabella
WHERE condizione;Örnekler:
-- Cancella tutte le recensioni con rating < 3:
DELETE FROM reviews
WHERE rating < 3;
-- Cancella un ordine specifico:
DELETE FROM orders WHERE id = 999;BURAYA DA GERİ DÖNÜYORUZ
INSERT, UPDATE ve DELETE gibi aynı zamanda RETURNING'yi de kabul edin yani bilirsiniz
ne üzerine harekete geçtiler:
DELETE FROM reviews
WHERE rating < 3
RETURNING id, customer_id, rating;Silinen/değiştirilen şeyin tek seferde kaydedilmesi için kullanışlıdır.
Yabancı anahtarlar ve silme
Başka bir tablonun referans verdiği bir satırı yabancı anahtar aracılığıyla silmeye çalışmak bir hata üretir:
DELETE FROM customers WHERE id = 1;
-- ERROR: update or delete on table "customers" violates foreign key constraint
-- on table "orders"Çözümler: Önce alt satırları silin veya FK'yi şununla tanımlayın:
Tabloyu oluşturduğunuzda ON DELETE CASCADE (bu konuyu
sonraki DDL dersi).
Sıra sende
5. kategorideki (Bilgisayar) her ürünün fiyatını %10 artırın. Tek bir UPDATE ifadesi.
İpucu göster
SET'in sağındaki ifade sütunun kendisine referans verebilir: fiyat * 1,10.
3 denemeden sonra çözüm mevcut
Alıştırmayı gözden geçirin
Puanı 3'ün altında olan (çok olumsuz yorumlar) tüm yorumları silin.
İpucu göster
WHERE derecesi < 3.
3 denemeden sonra çözüm mevcut