VERĐTABANI YÖNETĐM SĐSTEMLERĐ Öğr.Gör.Sedat Telçeken ANADOLU ÜNĐVERSĐTESĐ FEN FAKÜLTESĐ MATEMATĐK BÖLÜMÜ 2005 2006 Bahar Dönemi D M L Bilindiği üzere SQL tablolar üzerinde sorgulama yapar. Bu sorgular tablonun genel yapısında bir değişikliğe neden olmaz. Tablodaki yeni bir kayıt ilave edilmesi, var olanın değiştirilmesi ya da silinmesi sözkonusu ise DML (Data Manipulation Language) kullanılır. DML; Tabloya kayıt ekleme Tablodaki kayıtları güncelleme Tablodaki kayıtları silme Đşlemleri için kullanılan bir dildir. 1
DML ile tabloya satır ekleme INSERT INTO deyimi kullanılarak yapılır. INSERT INTO tablo (sütunlar) VALUES (değerler) ; 12345 23456 34567 ÖĞRENCĐ Öğrenci_No Fizik Kimya Bölüm Matematik 2 1 3 Sınıf SQL> INSERT INTO ÖĞRENCĐ(Öğrenci_No,Bölüm,Sınıf) VALUES(45678, Biyoloji,4); Yeni Kayıt Öğrenci_No Bölüm Sınıf 45678 Biyoloji 4 DML ile tabloya NULL değerli satır ekleme Bu durumda null değeri olan sütun ismi belirtilmez. INSERT INTO ÖĞRENCĐ(Öğrenci_No,Bölüm) VALUES(56789, Kimya ); Veya INSERT INTO ÖĞRENCĐ VALUES(56789, Kimya,NULL); Yukarıda Öğrencinin sınıf bilgisi NULL olduğundan Đnsert into deyimi içerisinde Sınıf attributune yer verilmedi! 2
Fonksiyon Kullanımı INSERT INTO içerisinde bazı özel değerlerin girilmesi için SQL fonksiyonları kullanılabilir. ÖRNEK: INSERT INTO PERSONEL(No, Adı, Görevi, Giriş_Tar) VALUES(380, Ayşe, Yönetici, DATE); Burada bir SQL fonksiyonu olan DATE o günün tarih bilgisini getirir! Diğer tablodan satır kopyalama Diğer tablodan satırları okumak için SELECT deyimi kullanılır bu durumda VALUES deyimi kullanılmaz. ÖRNEK : Bir başka bölümden bir bölüme öğrenci transfer edelim. INSERT INTO MATEMATĐK(Öğrenci_No,Adı,Sınıf,Ortalama) SELECT Öğrenci_No,Adı,Sınıf,Ortalama FROM FĐZĐK WHERE Ortalama > 3; 3
DML ile tablodaki veri güncellenmesi Bunun için UPDATE deyimi kullanılır. UPDATE tablo SET sütun1u=değer1, sütun2=değer2,... [ WHERE koşul ]; ÖRNEK: 21345 nolu öğrencinin ortalamasını 3,45 olarak değiştirmek istersek; UPDATE ÖĞRENCĐ SET Ortalama=3,45 WHERE Öğrenci_No=21345; DML ile tablodaki veri güncellenmesi ÖRNEK: Bu kez BĐL378 dersini alan öğrencilerin Final notlarına 10 ar puan ilave etmek isteyelim; UPDATE BĐL378 SET Final=Final+10; Bir başka tablodan veri güncelleme Burada da tıpkı INSERT INTO deyiminde olduğu gibi SELECT den yararlanırız. UPDATE PERSONEL SET Bölüm_No = 10 WHERE Görevi = (SELECT Görevi FROM PERSONEL WHERE Personel_No=124); 4
Güncelleme Sorunları Bütünlük sınırlamaları yapılmamış tablolarda karşımıza sıksık çıkan problemdir. Örneğin; UPDATE PERSONEL SET Personel_No=23 WHERE Bölüm_No=20; Tablosunda Bölüm_No, BÖLÜM tablosunun PK si, PERSONEL tablosunun ise FK si dir. DML ile tablodan veri silinmesi Bunun için DELETE deyimi kullanılır. DELETE [FROM] tablo [ WHERE koşul ]; ÖRNEK : Matematik Bölümündeki tüm öğrencileri silmek için; DELETE FROM MATEMATĐK; ÖRNEK : Matematik Bölümünde üst üste 3 uyarı almış öğrencilerin kaydını silmek istiyoruz. DELETE FROM MATEMATĐK WHERE UYARI=3; 5
Diğer tablodan veri kullanarak silme DELETE FROM PERSONEL WHERE Bölüm_No = (SELECT Bölüm_No FROM BÖLÜM WHERE Bölüm_Adı= Genel Hizmetler ); Yukarıdaki işlemde, BÖlüm tablosundaki bölüm adı bilgisi Genel Hizmetler olan personelin tüm bilgileri personel tablosundan silinecektir. Hareket Đşleme Veri tabanları aynı anda birçok kişi tarafından kullanılabilir. Kullanıcı yukarıdaki tüm DML operasyonlarını yapabilir. Bu değişikliklerin diğer kullanıcıları hemen etkilemesi istenmeyebilir. Bunu yapabilmek için transaction processing (hareket işleme) kullanılır. DML çalıştığında veritabanı hareketleri meydana gelir. Başlayan hareket ancak COMMIT ve ROLLBACK ile sonlanır. Bunun dışında sonuçlar kalıcı değildir. 6
Hareket Đşleme Bu hareketler bunların dışında yeni bir DDL deyimi (CREATE, ALTER, DROP) ile veya sistem bozulmalarında da sonlanır. Hareketin sona erdirilmesi Hareketin başlaması için, DML deyimlerinin birinin kullanılması yeterlidir. Bunu sonlandırmak için COMMIT kullanılırsa, diğer kullanıcıların da bundan haberdar olması sağlanır. COMMIT; Değişikliklerin geri alınması içinse ROLLBACK kullanılır. ROLLBACK; ÖRNEK: DELETE FROM MATEMATĐK; ROLLBACK; Yukarıdaki komutlar sırasıyla, MATEMATĐK tablosundaki tüm kayıtları silecek, daha sonra ise bu kayıtları eski yerine koyacaktır. 7