0Pricing
SQL Academy · Ders

USING ile DELETE ve Güvenli Kalıplar

DELETE ... USING ile diğer tablolara bağlanan satırları silin; yıkıcı işlemlerden önce doğrulamak için işlemler ve önce SELECT kullanın.

USING ile DELETE ve Güvenli Kalıplar, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.

Temel DELETE

Eşleşen satırları kaldırın:

DELETE FROM users WHERE id = 1;

Her Zaman Önce SELECT ile Test Edin

Herhangi bir DELETE işleminden önce satır sayısını doğrulamak için aynı WHERE koşulunu SELECT ile çalıştırın:

SELECT COUNT(*) FROM orders
WHERE status = 'cancelled' AND created_at < NOW() - INTERVAL '1 year';

Bir İşlem İçinde DELETE

Yıkıcı işlemleri ROLLBACK kullanabilmek için bir işlem içine alın:

BEGIN;
DELETE FROM orders WHERE status = 'cancelled' AND ...;
SELECT COUNT(*) FROM orders;       -- sanity check
-- COMMIT;  or ROLLBACK;

WHERE Olmadan DELETE Bir Felakettir

DELETE FROM users; tabloyu boşaltır. Geri Al düğmesi yoktur. Aşırı dikkatli olun; WHERE yazmak için harcanan fazladan bir saniye, kayıplara karşı ucuz bir sigortadır.

DELETE … USING (PostgreSQL JOIN ile Silme)

Bir tablodaki satırları başka bir tabloya göre silin:

DELETE FROM orders o
USING users u
WHERE u.id = o.user_id
  AND u.is_banned = true;

Alt Sorguyla DELETE

Standart alternatif:

DELETE FROM orders
WHERE user_id IN (SELECT id FROM users WHERE is_banned);

Yabancı Anahtar CASCADE'leri

orders.user_id sütununda ON DELETE CASCADE varsa bir kullanıcıyı silmek, kullanıcının siparişlerini de otomatik olarak siler. Kullanışlıdır ama tehlikelidir; ölçülü kullanın.

ALTER TABLE orders
  ADD CONSTRAINT orders_user_fk
  FOREIGN KEY (user_id) REFERENCES users(id)
  ON DELETE CASCADE;

Mantıksal Silme

Birçok uygulama satırları gerçekten silmez; bunun yerine bir deleted_at zaman damgası ayarlar:

UPDATE users SET deleted_at = NOW() WHERE id = $1;

-- Every query then has:
WHERE deleted_at IS NULL

Eski Verileri Temizleme

Büyük tabloları düzenli olarak temizlerken uzun süren işlemlerden kaçınmak için satırları gruplar hâlinde silin:

DELETE FROM events
WHERE id IN (
  SELECT id FROM events
  WHERE created_at < NOW() - INTERVAL '90 days'
  LIMIT 10000
);
-- run this in a loop until it returns 0 rows

TRUNCATE: Hız Önemli Olduğunda

Bir tabloyu gerçekten tamamen temizlemek istiyorsanız TRUNCATE, satırları taramadığı için DELETE işleminden daha hızlıdır. Ancak ROW tetikleyicilerini çalıştırmaz ve her kurulumda geri alınamaz:

TRUNCATE TABLE staging_orders;
TRUNCATE TABLE staging_orders RESTART IDENTITY CASCADE;

DELETE ile RETURNING

Silinen satırları geri alın; arşivleme için kullanışlıdır:

WITH deleted AS (
  DELETE FROM orders WHERE status = 'archived' RETURNING *
)
INSERT INTO orders_archive SELECT * FROM deleted;

Özet

DELETE en tehlikeli ifadedir. Koruyucu yaklaşımlar:

  • Önce SELECT çalıştırın
  • Deneme çalıştırması için BEGIN; ... ; ROLLBACK kullanın
  • Büyük silme işlemlerini gruplar hâlinde yapın
  • Kullanıcıların gördüğü veriler için mantıksal silmeyi tercih edin
  • TRUNCATE'i yalnızca hazırlık tablolarında kullanın

Hızlı Kontrol

DELETE FROM users; ifadesini WHERE olmadan çalıştırdınız. Ne yaparsınız?

Sıkça Sorulan Sorular

“USING ile DELETE ve Güvenli Kalıplar” dersi ücretsiz mi?

Evet — “USING ile DELETE ve Güvenli Kalıplar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.

“USING ile DELETE ve Güvenli Kalıplar” dersinde ne öğreneceğim?

DELETE ... USING ile diğer tablolara bağlanan satırları silin; yıkıcı işlemlerden önce doğrulamak için işlemler ve önce SELECT kullanın. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“USING ile DELETE ve Güvenli Kalıplar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Birden Çok Satırla INSERT
  2. UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
  3. FROM ve JOIN Tarzı Güncellemelerle UPDATE
  4. USING ile DELETE ve Güvenli Kalıplar
← SQL Academy Sayfasına Dön