Veritabanı Yönetim Sistemleri-I

Slides:



Advertisements
Benzer bir sunumlar
ÖRNEK BİR VERİTABANI TASARIMI VE NORMALİZASYONU
Advertisements

Veri Tabanı Tasarlama İlk kuralımız, olabildiğince bilgileri parçalamaktır.
Hazırlayan : Öğr. Gör. Fahri YILMAZ
III.Oturum: SQL ile Verileri İşlemek
KARMAŞIK SORGULAR.
KARMAŞIK SORGULAR.
SQL (Structured Query Language)
SQL Structured Query Language (Yapısal sorgulama dili)
En ucuzundan en pahalısına doğru sıralanmış olarak “Cep Telefonları” kategorisindeki tüm ürünlerin isimleri “Spor” kategorisinde ürünleri listelenen “İstanbul”
Karmaşık (İç içe) SELECT Sorguları
SQL Komutlar 2 Sibel SOMYÜREK.
VERİ TABANI II- 4.HAFTA ALT SORGULAR Türetilmiş ve İLİntİlİ tablolar
SQL de Değişken Tanımlama
Veri Tabanı I.
Görsel Programlama II Ders 6 Öğr.Gör. Mustafa KARABULUT.
EkoPC Bilişim Ltd. Eğitim Hizmetleri
SQL Komutlar 4 Fahri YILMAZ.
VERİ TABANI ve YÖNETİMİ
Alt Sorgular Veritabanı 2.
5 Sorgulama İşlemleri Veritabanı 1.
Tek Tablo İçinde Sorgulamalar
SQL Sorgu Örnekleri.
Fonksiyonlar Hafta 4.
T-SQL-2.Konu Akış Kontrolleri.
Görsel Programlama II Ders 8 Öğr.Gör. Mustafa KARABULUT.
10 Gruplandırarak Sorgulama
SQL (STRUCTURED QUERY LANGUAGE)
VTYS Öğr. Gör. Engin DUTAR
Departman ve Personel Tablosu Soruları
Veritabanı Yönetim Sistemleri-I
VIEW (BAKIŞ) OLUŞTURMA
VIEW lerle çalışmak 11.BÖLÜM.
VTYS Öğr. Gör. Engin DUTAR
VERİTABANI ve YÖNETİMİ
SQL’e Giriş ve SELECT Komutu
ÇOKLU TABLOLAR.
MySQL Operatörleri ve Fonksiyonları
SQL SERVER 2008 Yücel YILDIRIM.
VERİTABANI ve YÖNETİMİ
Veri Tabanı Yönetim Sistemleri 1 Ders 6 Çok Tablolu Sorgular
ENF 101 TEMEL BİLGİ TEKNOLOJİLERİ KULLANIMI 4. DERS.
Görsel Programlama II Ders 5 Öğr.Gör. Mustafa KARABULUT.
SQL Sibel SOMYÜREK.
Veritabanı Yönetim Sistemleri-I
SQL Komutları (2) Uzm. Murat YAZICI.
VTYS Öğr. Gör. Engin DUTAR
SQL’ e Giriş Uzm. Murat YAZICI.
VERİTABANI YÖNETİM SİSTEMLERİ 1
ADRESİNDEN ÖRNEK VERİ TABANLARINI İNDİRİNİZ
Yapısal Sorgulama Dili SQL Hafta 7. TEKRARLI SATIRLARI ÖNLEMEK  DISTINCT komutu ile sorgu sonucunda birden fazla kayıt aynı verileri içeriyorsa tekrarlı.
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
View View’ler select ifadesi ile tanımlanmış sanal tablolardır. Temel amacı base tabloların içerisinden veri kümesi getirip ortaya çıkan sonucu sanal.
 Bazı Veri tabanları sadece 1 tablodan oluşmaz.  Bunun sebebi genellikle veri tekrarını önlemektir.  Bu şekilde oluşturulmuş veri tabanlarında, tablolardaki.
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
ÖRNEK BİR VERİTABANI TASARIMI VE NORMALİZASYONU
VIEW lerle çalışmak 11.BÖLÜM.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
İNDEKS.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
14.DERS Örnekler, Sorular BUKET DOĞAN.
Basit Sorgulamalar Yapmak
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
VERİ TABANI II- 4.HAFTA ALT SORGULAR Türetilmiş ve İLİntİlİ tablolar
Veri Tabanı Yönetim Sistemleri I
Intersect Tablo1 Sno Ad Soyad 1 Ali Ak 2 Veli Kara 3 Can Mor Tablo2
Sunum transkripti:

Veritabanı Yönetim Sistemleri-I Ders 3 Birden fazla tabloyu birleştirmek Equi-join INNER JOIN OUTER JOIN

Tabloları birleştirmek SELECT ile oluşturulmak istenen listede bulunan alanlar birbirinden farklı tablolarda bulunuyorsa, tabloları birleştirerek sorgulamak gerekiyor Birden fazla tabloyu birleştirerek sorgulamak için JOIN ifadesi kullanılır. Tablo birleştirmenin pek çok türü vardır, önde gelen bazıları şunlardır INNER JOIN EQUI-JOIN OUTER JOIN

Tabloları birleştirmek Örneğin ürünlerin adlarını, fiyatları, satıcı adlarını ve satıcı şehirlerini yanyana listelemek istersek göreceğiz ki istenen alanlar iki farklı tabloda bulunmaktadır urunler tablosu saticilar tablosu

Tabloları birleştirmek Oluşturulmak istenen liste aşağıdaki gibi olacaktır urunler tablosu saticilar tablosu

Tabloları birleştirmek İki tablodan ilişkili alanları alırken, şu adımlar dikkate alınır Bahsi geçen tablolar mantıksal olarak ilişkili olmalıdır İki tablodaki tüm satırlar değil, sadece mantıksal olarak ilişkili satırlar yanyana getirilir Daha iki tablodaki satırların yanyana getirilmesi sonucu oluşan yeni tablodan istenen alanlar seçilebilir

Tabloları birleştirmek İki tabloda mantıksal olarak ilişkili satırların birleştirilmesi Urunler tablosundaki satici_id = ‘DLL01’ olan satır saticilar tablosundaki satici_id = ‘DLL01’ olan satırla birleştiriliyor

urunler.satici_id = saticilar.satici_id Tablo birleştirme Benzer şekilde diğer satırlarda ikinci tablodaki ilgili satırlarla birleştiriliyor BİRLEŞTİRME KURALI urunler.satici_id = saticilar.satici_id

Tablo birleştirme Tablo birleştirme sırasında en kolay yol equi-join yazımını kullanmaktadır Birleştirilecek tablolar virgülle ayrılarak FROM’dan sonra yazılır Birleştirme şartı (yani hangi satırların yanyana geleceğine dair şart) WHERE ifadesinde yazılır SELECT ile seçilecek sütunlardan (alanlardan) önce alanın hangi tablodan geleceği yazılır İstenirse tablo isimleri için kısa adlar (alias) kullanılabilir

Tablo birleştirme Ürünlerin adlarını, fiyatları, satıcı adlarını ve satıcı şehirlerini yanyana listeleyen SQL sorgusu Seçilen alanlar “tablo.alan” formatında yazılır Tablolar virgülle ayrılmış olarak yazılır Satır birleştirme şartı (her iki tabloda aynı olan değerler) verilir

Tablo birleştirme Tablo isimlerine “alias – kısa ad” vererek sorgu biraz daha sadeleştirilebilir (Ör: saticilar için “s”, urunler için “u” kısa adı kullanılabilir)

Tablo birleştirme İkinci bir örnek: Sipariş edilen ürünlerin (sip_edilen), urun_id, sip_num bilgilerini ile urun_ad bilgilerini listeleyiniz (urun ad bilgisi urunler tablosundadır)

Tablo birleştirme Tablo isimler için yine kısa ad kullanılmıştır

Tablo birleştirme Equi-join ile yapılan işi INNER JOIN ile de yapabiliriz. Bu JOIN türü yazım olarak biraz farklıdır ama aynı işi yapmaktadır. İki yazımı kıyaslayalım: Equi-join yazımı SELECT alanlar FROM tablo1, tablo2 WHERE tablo1.alan1 = tablo2.alan2 INNER JOIN yazımı SELECT alanlar FROM tablo1 INNER JOIN tablo 2 ON tablo1.alan1 = tablo2.alan2 “ON” anahtar kelimesi şart belirtmek için kullanılmaktadır

Tablo birleştirme İlk sorgumuzu INNER JOIN ile yazmış olsaydık, şöyle yazmamız gerekirdi

Tablo birleştirme Birden fazla tabloyu aynı anda birleştirmek için yazılan ifadeleri her tablo için tekrar etmek gerekir SELECT alanlar FROM tablo1 INNER JOIN tablo 2 ON tablo1.alan1 = tablo2.alan2 INNER JOIN tablo3 ON tablo3.alan3 = tablo2.alan2 INNER JOIN tablo4 ON tablo4.alan4 = tablo3.alan3 …….

Tablo birleştirme Örneğin şu aşağıdaki alanlari içeren liste isteniyor olsun: Her bir sipariş edilen ürünün sipariş numarasını ve urun_id bilgisini (sip_edilen tablosundan) Siparişin tarihini (siparisler tablosundan), Siparişi veren müşterinin adını (musteriler tablosundan)

Tablo birleştirme

Tablo birleştime Aynı sorgu Equi-Join ile şöyle yazılabilirdi Tüm birleştirme şartları “AND” ile yanyana yazılır Tüm tablolar virgülle ayrılarak yanyana yazılırlar

Tablo birleştirme OUTER JOIN Bazen birleştirilecek iki tabloda birinci tabloda bulunan satırın, ikinci tabloda bir eşleşmesi olmayabilir. Bu durumda INNER JOIN ve EQUI-JOIN sorgularında, ikinci tabloda eşleşmesi bulunmayan satırlar sorgu dışında bırakılırlar Ör: Satici_id değeri, satıcılar tablosunda bir satıcıya işaret etmeyen ürün satırları gibi

Tablo birleştirme OUTER JOIN (devam) Eğer birinci tablodaki tüm satırlar eşleşme olmamasına rağmen listeye eklensin ve eşleşme satırı boş bırakılsın isteniyorsa OUTER JOIN kullanılır Birinci tablodaki satır baz alınarak eşleşme yapılacaksa LEFT OUTER JOIN İkinci tablodaki satır baz alınarak eşleşme yapılacaksa RIGHT OUTER JOIN kullanılır

Tablo birleştirme Örneğin siparişler ve müşteriler tablolarını incelersek: Her siparişin bir müşteriye ait olduğunu, yani siparişler tablosundaki her sip_id’nin musteriler tablosunda bir must_id’e denk geldiğini Fakat her müşterinin bir sipariş vermemesinden dolayı, musteriler tablosundaki her must_id’nin , siparisler tablosundaki bir sip_id’e denk gelmediğini görürür

Tablo birleştirme Tüm siparişler herhangi bir müşteri ile ilişkili Fakat tüm müşterilerin en az bir siparişi bulunmamaktadır (Ör: 1000000002 nolu müşteri)

Tablo birleştirme Dolayısıyla INNER JOIN veya EQUI-JOIN ile yapılan tüm sorgularda 10000004 nolu müşteri her zaman liste dışında kalacaktır (sipariş kaydı olmadığı için) Eğer bu müşteriyi de listeye dahil etmek istiyorsak LEFT OUTER JOIN kullanmamız gerekir Bu durumda bu müşterinin sipariş kaydının karşısında NULL ifadeler olacaktır (siparişi olmadığını gösterir)

Tablo birleştirme 100000001 kodlu müşteriye ait 2 satır olduğuna 100000004 kodlu müşterinin karşısındaki değerlerin NULL olduğuna dikkat ediniz

Tablo birleştirme Aynı sorgu INNER JOIN ile yazılsaydı (sadece INNER yerine LEFT OUTER yazmak yeterli) satır sayısı bir tane azalacaktı.

Tablo birleştirme Alternatif olarak listeyi sadece bu müşteriyi listeleyecek şekilde, yani hiç siparişi olmayan müşterileri gösterecek şekilde, tekrar da yazabiliriz

Tablo birleştirme JOIN ve GROUP BY kullanımı Tablo birleştirme sonrasında ortaya çıkan geçici tablodan istenilen alan seçilebildiği gibi diğer SQL işlemleri de yapılabilir Örneğin tablolar birleştikten sonra birleşen yeni tablo üzerinde gruplama (GROUP BY), sıralama (ORDER BY) veya filtreleme (WHERE) kullanılabilir Normal bir tablodaki sorgulara göre tek fark, alanları WHERE, GROUP BY, ORDER BY içinde yazarken, tablo adı ile birlikte yazmak gerekir (tablo.alan formatında)

(Bu alan urunler tablosunda değil, saticilar tablosundadır) Tablo birleştirme Örneğin aşağıdaki sorgu, tablo birleştirme yapmadan normal bir gruplama işlemini içermektedir Peki ya gruplamayı satici_id yerine satici_ad alanına göre yapmak istersek? (Bu alan urunler tablosunda değil, saticilar tablosundadır)

Tablo birleştirme Bu durumda önce iki tablo birleştirilir, daha sonra iki tablodaki alanlara göre gruplama tekrar yazılır