Varsayılan Değerler, Birleştirme ve Çoktu-Tablo

advertisement
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.
Download