Ana içeriğe geç
Modül 8 · Ders 2 ders 4Kurstaki 30/57~10 min
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

SQL
UPDATE tabella
SET    colonna1 = nuovo_valore,
       colonna2 = altra_espressione
WHERE  condizione;

Örnekler:

SQL
-- 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

SQL
DELETE FROM tabella
WHERE  condizione;

Örnekler:

SQL
-- 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:

SQL
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:

SQL
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

Egzersiz#sql.m8.l2.e1
Denemeler: 0Yükleniyor…

5. kategorideki (Bilgisayar) her ürünün fiyatını %10 artırın. Tek bir UPDATE ifadesi.

Düzenleyici yükleniyor…
İ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

Egzersiz#sql.m8.l2.e2
Denemeler: 0Yükleniyor…

Puanı 3'ün altında olan (çok olumsuz yorumlar) tüm yorumları silin.

Düzenleyici yükleniyor…
İpucu göster

WHERE derecesi < 3.

3 denemeden sonra çözüm mevcut