Veritabanı Tasarımı Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Konular • • • • Varsayılan değerleri ne zaman belirteceğimizi anlamak Birleştirme komutunu (MERGE) oluşturmak ve çalıştırmak Alt sorgular kullanarak DML komutları oluşturmak ve çalıştırmak Çoklu-tablo eklemeleri oluşturmak ve çalıştırmak 2 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Amaç Bu zamana kadar verileri tek bir INSERT komutu kullanarak güncelledik. Kayıtları bir seferde eklemek nispeten kolay olmuştur, ama firma çok büyük ise ve mağaza satış kayıtları, müşteri, bordro, muhasebe ve kişisel veriler gibi bilgileri kayıtlı tutmak için bir veri ambarı kullanıyorsa ne olur? Bu durumda veri çoklu kişi tarafından erişilebilen çoklu kaynaktan gelir. Bir defada bir veri kayıt yönetme çok kafa karıştırıcı ve çok zaman alıcı olabilir. 3 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Amaç Yeni eklenen ne olduğunu ya da yakında neyin değiştiğini nasıl belirlersiniz? Bu derste, tek bir atomik komutta koşullu INSERT ve UPDATE komutlar dizisi kullanılarak güncelleme ve veri ekleme için daha verimli bir yöntem öğreneceksiniz. Ayrıca tek bir alt sorgudan verinin nasıl alınacağını ve birden fazla hedef tabloya döndürülen satırların nasıl INSERT edileceğini öğreneceksiniz. SQL bilginizi genişlettikçe, işinizi gerçekleştirmek için etkili yolları anlayacaksınız. 4 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri DEFAULT Tablodaki her sütun onun için belirlenmiş bir varsayılan değere sahiptir. Yeni bir satır eklendiğinde ve sütun için bir herhangi bir değer atanmadığı zaman null değer yerine varsayılan değer atanacaktır. Varsayılan değerler kullanmak bunları ne zaman ve nerede kullanmanız konusunda size izin verir. Varsayılan değer hazır bilgi, ifade ya da SYSDATE ve USER gibi bir SQL fonksiyonu olabilir. Fakat başka bir sütun adı olamaz. Varsayılan değer sütunun veri tipi ile eşleşmelidir. DEFAULT ifadesi tablo oluşturulduğunda ya da değiştirildiğinde sütun için tanımlanabilir. 5 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri DEFAULT Örnek Aşağıdaki örnekte varsayılan değer ‘hire_date’ sütunu için tablo oluşturulurken gösterilmektedir. Satırlar tabloya eklendiğinde, açıkça bir ‘hire_date’ değeri belirtmezse SYSDATE herhangi bir satıra atanacaktır. 6 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Ekleme ile Belirgin Varsayılan Belirgin varsayılan, INSERT ve UPDATE komutlarında kullanılabilir. INSERT örneği, ‘DEPARTMENTS’ tablosu kullanılarak varsayılan ifadesinin belirgin kullanışını göstermektedir. Tablo oluşturulurken ‘manager_id’ sütunu için varsayılan bir değer belirlenmişse Oracle sütuna varsayılan değer atar. Bununla birlikte varsayılan değer belirlenmemişse, Oracle null değer atar. 7 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Güncelleme ile Belirgin Varsayılan Belirgin varsayılan, INSERT ve UPDATE komutlarında kullanılabilir. UPDATE örneği, ‘DEPARTMENTS’ tablosu kullanılarak varsayılan ifadesinin belirgin kullanışını göstermektedir. Tablo oluşturulurken ‘departmen_id’ sütunu için varsayılan bir değer belirlenmişse sütuna varsayılan değer atanır. Bununla birlikte varsayılan değer belirlenmemişse, null değer atanır. 8 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Birleştirme Birleştirme komutu kullanarak aynı anda iki göre yerine getirilir. Birleştirme aynı anda ekleme ve güncelleme yapar. Değer yok ise yeni bir tane eklenir. Değer var ise fakat değişimi ihtiyacı varsa MERGE onu günceller. Veritabanı tablolarında bu gibi değişiklikleri yerine getirmek için hedef tabloda INSERT ve UPDATE için ve kaynak tabloda SELECT için ayrıcalıklara ihtiyacınız olacaktır. MERGE komutu ile takma adları kullanılabilir. 9 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Birleştirme Sözdizimi Bir seferde kaynak tablosundan bir satır okunur ve eşleme koşulu kullanılarak hedef tablodaki satırlar ile karşılaştırılır. Eşleşen bir satır hedef tabloda varsa, kaynak satır eşleşme hedef satırda bir veya daha fazla sütun güncellemek için kullanılır. Eğer uygun bir satır yoksa, hedef tabloya yeni bir satır eklemek için kaynak satırdaki değerler kullanılır. 10 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Birleştirme Örnek Bu örnekte ‘EMPLOYEES’ tablosu ‘e’ takma adı ile veri kaynağı olarak kullanılmaktadır. Tabloya yeni bir kayıt eklenirken ya da güncellenirken ‘c’ takma adlı ‘COPY_EMP’ tablosu da değişmektedir. 11 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Birleştirme Örnek ‘EMPLOYEES’ satırları 100 ve 103, ‘COPY_EMP’ tablosundaki satırlar ile eşleşmektedir. Bu nedenle eşleşen ‘COPY_EMP’ satırları güncellenir. ‘EMPLOYEES’ satırı 140 için eşleşen bir satır yoktur. Bu nedenle ‘COPY_EMP’ tablosuna eklenir. 12 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Birleştirme Örnek (kaynak tablo) (merge çalışmadan önce) (merge çalıştıkan sonra) 13 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Çoklu-Tablo Eklemeleri Çok-tablo eklemeleri aynı kaynak verisi birden fazla hedef tabloya ekleneceği zaman kullanılır. Bu işlevsellik, veri ambarı ortamında çalışıldığı zaman kullanışlıdır. Analitik raporlama ve analiz için düzenli olarak operasyonel sistemlerden Bir veri ambarı veri taşımak için kullanılır. Veri ambarlarında veri oluşturma ve erişim normal çalışma günleri boyunca çok yüksek sayıda operasyonel sistemlere satır eklendiğinde erişim için bir yoldur. 14 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Çoklu-Tablo Eklemeleri Örneğin telefon sağlayıcın, tüm aramalarınız ya da metin mesajlarınızla eriğim sağladığınız tüm cihazlar için günlük olarak kaç satır veri oluşturma zorundadır? Daha sonra buna internet gezinmelerinizi ve zil sesleri, duvar kağıtları, oyunlar ve diğer mobil uygulamalar indirmenizi ekler. 15 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Çoklu-Tablo Eklemeleri Bu sayıyı müşteri sayısı ile çarpın ve bu size telekomünikasyon şirketlerinin yönetmek zorunda olduğu veri miktarı hakkında bir fikir verebilir. Bu satırların, veri ambarında birden fazla tabloya eklenmesi gerekebilir. Böylece sadece onları bir kez seçersek ve sonra bunları çoğaltırsak performans artacaktır. 16 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Çoklu-Tablo Eklemeleri Çoklu-tablo eklemeleri şartlı ve şartsız olabilir. Şartsız çoklu-tablo eklemesinde Oracle alt sorgudan dönen tüm satırları komutta bulunan ekleme deyimlerindeki tüm tablolara ekler. Şartlı çoklu-tablo eklemesinde ALL ya da FIRST ifadesi belirtilmelidir. 17 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Çoklu-Tablo Eklemeleri FIRST FIRST ifadesini belirtirseniz, veritabanı her ‘WHEN’ deyimini görüldüğü ifadede değerlendirir. Doğrulanan ilk ‘WHEN’ deyimi için veritabanı ilgili ‘INTO’ deyimini çalıştırır ve alt ‘WHEN’ deyimlerini verilen satırlar için atlar. 18 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Çoklu-Tablo Eklemeleri ELSE deyimi Verilen bir satır için herhangi bir ‘WHEN’ deyimi doğrulanmazsa, veritabanı ‘INTO’ deyimi listesinde ilişkilendirilen ELSE deyimini çalıştırır. Else deyimi tanımlanmamışsa veritabanı bu satır için işlem yapmaz. 19 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Çoklu-Tablo Eklemeleri Sözdizimi Çoklu-tablo ekleme komutu sözdizimi şu şekildedir: Çoklu-tablo ekleme komutu örneği şu şekildedir: 20 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur. Varsayılan Değerler, Birleştirme ve Çoktu-Tablo Eklemeleri Şartlı Çoklu-Tablo Eklemeleri 21 | Copyright © 2011, Oracle. Bütün hakları mahfuzdur.