Veritabanı yönetimi, sadece mevcut verileri sorgulamaktan ibaret değildir; aynı zamanda bu verilerin yaşam döngüsünü de kapsar. SQL’deki Veri Manipülasyon Dili (DML) komutları, bir veritabanının dinamik yapısını korumanın temelini oluşturur. `INSERT`, `UPDATE` ve `DELETE` komutları, verileri etkili bir şekilde eklemek, mevcut kayıtları değiştirmek ve gereksiz bilgileri ortadan kaldırmak için vazgeçilmez araçlardır. Bu komutlara hakim olmak, her veri profesyonelinin temel becerilerinden biridir.

Veri Ekleme: INSERT Komutu

INSERT komutu, bir tabloya yeni kayıtlar (satırlar) eklemek için kullanılır. Bu, bir veritabanının büyümesini ve güncel kalmasını sağlayan ilk adımdır. Yeni verilerin eklenmesi, genellikle uygulamanızdaki yeni bir kullanıcının kaydı, bir ürünün envantere eklenmesi veya bir işlem kaydının oluşturulması gibi senaryolarda karşımıza çıkar.

Temel INSERT Sözdizimi

INSERT komutunu kullanmanın en yaygın yolu, eklenecek sütunları belirtmek ve ardından ilgili değerleri sağlamaktır:

INSERT INTO tablo_adi (sutun1, sutun2, sutun3, ...)
VALUES (deger1, deger2, deger3, ...);

Örnek:

INSERT INTO Musteriler (MusteriID, Ad, Soyad, Sehir)
VALUES (1, 'Ayşe', 'Yılmaz', 'İstanbul');

Bu örnekte, Musteriler tablosuna yeni bir müşteri kaydı eklenir. Belirtilen sütunlara karşılık gelen değerler sırasıyla atanır.

Tüm Sütunlara Veri Ekleme

Eğer tablonun tüm sütunlarına, tanımlandıkları sırayla veri ekliyorsanız, sütun adlarını belirtmek zorunda kalmazsınız. Ancak bu yöntem, tablonun yapısı değiştiğinde (yeni bir sütun eklendiğinde) hata yapma riskini artırabilir ve okunabilirliği düşürebilir:

INSERT INTO tablo_adi
VALUES (deger1, deger2, deger3, ...);

Örnek:

INSERT INTO Urunler
VALUES (101, 'Klavye', 250.00, 50, 'Elektronik');

Bu komut, Urunler tablosunun tüm sütunlarına (varsayımsal olarak UrunID, UrunAdi, Fiyat, StokAdedi, Kategori) sırasıyla değerler ekler.

Başka Bir Sorgudan Veri Ekleme

Bazen, bir tablodan belirli verileri alıp başka bir tabloya eklemek isteyebilirsiniz. Bu, INSERT INTO ... SELECT yapısıyla gerçekleştirilir:

INSERT INTO hedef_tablo (sutun1, sutun2, ...)
SELECT sutunA, sutunB, ...
FROM kaynak_tablo
WHERE kosul;

Örnek:

INSERT INTO EskiMusteriler (MusteriID, Ad, Soyad)
SELECT MusteriID, Ad, Soyad
FROM Musteriler
WHERE KayitTarihi < '2020-01-01';

Bu örnek, Musteriler tablosundan belirli bir tarihten önce kaydolan müşterileri seçerek, bu verileri EskiMusteriler tablosuna ekler.

Veri Güncelleme: UPDATE Komutu

UPDATE komutu, bir veya daha fazla kaydın mevcut değerlerini değiştirmek için kullanılır. Bu, bir kullanıcının adresini değiştirmesi, bir ürünün fiyatının güncellenmesi veya bir siparişin durumunun değiştirilmesi gibi senaryolarda kritik öneme sahiptir.

Temel UPDATE Sözdizimi

UPDATE komutu, hangi tablonun güncelleneceğini, hangi sütunların hangi değerlerle değiştirileceğini (SET yan tümcesi) ve hangi kayıtların güncelleneceğini (WHERE yan tümcesi) belirtir:

UPDATE tablo_adi
SET sutun1 = yeni_deger1, sutun2 = yeni_deger2, ...
WHERE kosul;

WHERE yan tümcesi, güncellenecek satırları filtrelemek için hayati öneme sahiptir. Eğer WHERE yan tümcesini kullanmazsanız, tablodaki *tüm* kayıtlar güncellenecektir, ki bu genellikle istenmeyen bir durumdur.

Örnek:

UPDATE Urunler
SET Fiyat = 275.00, StokAdedi = 45
WHERE UrunID = 101;

Bu komut, UrunID‘si 101 olan ürünün fiyatını ve stok adedini günceller.

Birden Fazla Satırı Güncelleme

WHERE yan tümcesi, birden fazla satırı etkileyecek şekilde de yazılabilir:

UPDATE Calisanlar
SET Maas = Maas * 1.10
WHERE Departman = 'Satış';

Bu örnekte, ‘Satış’ departmanındaki tüm çalışanların maaşı %10 artırılır.

Başka Bir Tablodan Veri ile Güncelleme

Bazı veritabanı sistemleri (örneğin SQL Server, MySQL), birleştirme (JOIN) veya alt sorgu (subquery) kullanarak başka bir tablodaki verilere göre güncelleme yapmaya izin verir:

-- SQL Server/MySQL Benzeri Syntax
UPDATE A
SET A.Kolon = B.Deger
FROM TabloA A
JOIN TabloB B ON A.OrtakKolon = B.OrtakKolon
WHERE A.Durum = 'Beklemede';
-- Standart SQL (Alt Sorgu ile)
UPDATE TabloA
SET Kolon = (SELECT Deger FROM TabloB WHERE TabloB.OrtakKolon = TabloA.OrtakKolon)
WHERE Durum = 'Beklemede';

Bu tür senaryolar, daha karmaşık veri tutarlılığı gerektiren durumlarda kullanılır.

Veri Silme: DELETE Komutu

DELETE komutu, bir veya daha fazla kaydı bir tablodan kalıcı olarak kaldırmak için kullanılır. Bu, gereksiz verileri temizlemek, eski kayıtları arşivlemek veya bir kullanıcının hesabını silmek gibi durumlarda gereklidir.

Temel DELETE Sözdizimi

DELETE komutu, hangi tablodan silineceğini ve hangi satırların silineceğini (WHERE yan tümcesi) belirtir:

DELETE FROM tablo_adi
WHERE kosul;

WHERE yan tümcesi, silinecek satırları filtrelemek için UPDATE komutunda olduğu gibi kritik öneme sahiptir. WHERE yan tümcesi olmadan DELETE komutu çalıştırılırsa, tablodaki *tüm* kayıtlar silinecektir.

Örnek:

DELETE FROM Musteriler
WHERE MusteriID = 1;

Bu komut, MusteriID‘si 1 olan müşteri kaydını Musteriler tablosundan siler.

Birden Fazla Satırı Silme

WHERE yan tümcesi, birden fazla satırı hedefleyecek şekilde de kullanılabilir:

DELETE FROM Siparisler
WHERE SiparisTarihi < '2023-01-01' AND Durum = 'Tamamlandı';

Bu örnek, 2023 yılından önce tamamlanmış tüm siparişleri Siparisler tablosundan siler.

Tüm Satırları Silme

Eğer tablodaki tüm satırları silmek istiyorsanız, WHERE yan tümcesini atlayabilirsiniz:

DELETE FROM tablo_adi;

Örnek:

DELETE FROM GeciciVeriler;

Bu komut, GeciciVeriler tablosundaki tüm kayıtları siler. Bu işlem, genellikle daha az kaynak tüketen ve daha hızlı çalışan TRUNCATE TABLE komutu ile karıştırılmamalıdır. DELETE her bir satırı loglarken ve geri alınabilirken, TRUNCATE TABLE veriyi sayfa bazında siler, daha az loglama yapar ve kimlik sütunlarını sıfırlar; bu nedenle genellikle geri alınamaz.

Sonuç

SQL’deki INSERT, UPDATE ve DELETE komutları, bir veritabanının dinamik doğasını şekillendiren temel DML operasyonlarıdır. Veri ekleme, değiştirme ve silme yeteneği, uygulamaların gerçek dünya ihtiyaçlarını karşılamasını sağlar. Bu komutları doğru ve dikkatli bir şekilde kullanmak, veritabanının bütünlüğünü, tutarlılığını ve performansını korumak için kritik öneme sahiptir. Her SQL kullanıcısı için bu komutlara hakim olmak, veri yönetimi becerilerinin ayrılmaz bir parçasıdır.