2012/12/21

Oracle Joins and Constraints

Oracle Joins(Birleştirmeler)

Veritabanın da bir çok tablolardan yararlanılır. Bazı zaman ihtiyaç duyulan bilgileri almak için birden çok tablodan yararlanmak gerekir.Bu gibi işlerde joinler yani birleştiriciler den yararlanılır. Join çeşitlerine bakacak olursak;


  • Eşitlik(Equijoin) birleşmesi
  • Eşitsizlik(Non_equijoin)
  • Dıştaki (outer join)
  • Kendi kendine (self join)


Basit birleştirme işlemleri;
     Birleştirme işlemi yapılırken iki tabloyu ilişkilendirmek için en çok  kullanılan operatör (=) eşittir. Sütunları verilen verileri eşit olan kayıtlar birleştirilir.Buna inner join denir.
  • SQL> select bölgeler.bölgeler_id, bölge_adi, il_adi  from bolgeler ,iller where bölgeler.bölgeler_id=iller.bölge_id;
  • SQL>select * from employees e, departments d where e.department_id=d.department_id;


Natural join;
     Bu tip birleştirme tablolar arası ilişkiler aynı isimde olan tüm sütunlar arasında yapılır.
  • SQL> select * from employees Natural join departments;
  • SQL> select bölge_adi,il_adi,adres from bölgeler Natural join iller Natural join yerler;


Using join;
     İlişki kurulacak tablolar arasında aynı isimli bir çok sütun var bunların veri tipleri farklı ise yada ilişkilerin hangi sütunlar arasında yapılması gerektiğini belirtmek isterseniz kullanılmasi gereken joindir.
  • SQL>select bölge_adi,il_adi,adres from bölgeler join iller using (bölge_id);
  • SQL> select * from employees join departments using(department_id);


Join on;
    İlişki kurulacak  tablo arasında gerekli ilişkiyi sağlayacak aynı isimli sütunlar yoksa bu ilişkiyi sütunları kendimiz belirleyebiliriz bunu içinde join on kullanılabilir.
  • SQL> select bölge_adi,il_adi,adres from bölgeler b join iller I on (b.bolge_id=i.bolge_id);


Cross join;
    İlişki kurulacak tablolar arası hiç bir  ilişki ifadesi belirtilmezse cross join olur.Bunun anlamı şudur  her bir tablodaki her kayıt diğer tablodaki bütun kayıtlar ile eşlesebilirler.
  • SQL> select bölge_adi,il_adi from bölgeler cross join iller;
  • SQL> select * from employees e, departments d;


Left ve Right joinler;
     Bu join hakında ise şunlari söyleyebiliriz.Anlaşilacagi gibi  left join solundaki kolana göre bilgileri getirir right join ise sağindaki kolana göre bilgileri getirir.
  • SQL> select * from sorular s left join cevaplar c ON(s.s_id=c.s_id);


Eşitsizlik (Non_equijoin);
    Eşitsizlik birleştirmesi operatörleriyle yapılır.Bunlar <=(küçük eşit),>=(büyük eşit),<>(değil) anlamındadir.
  • SQL> select * from bölgeler b,iller I where b.bölge_id<>i.bölge_id


                                         AND  bölge_adi IN(‘marmara’,’ege’);

Oracle Constraints(Kısıtlar)

Kısıtlar veritabanı üzerinde iş kurallarını zorunlu kılmak ve tablolar arasında ilişki kurarak veri bütünlüğü sağlamak amacıyla oluşturulur.Bunlar veritabanına hatalı girişi engeller. Oracle 5 çesit bütünlük kısıtını desteklemektedir.
NOTNULL;
     Null değerini girilmesini engeller.Tek bir sütun için çalışır,yani her bir sütün için ayrı ayrı belirtilmesi gerekmektedir. Oracle varsayılan değer olarak null değeri girişine izin vermez.
CHECK;
    Kısıtla belirtilen koşulun saglayıp saglamadıgını control eder. Eğer koşul saglanmıyorsa veri girişine izin vermez.
UNIQUE;
      İlgili sütün yada sütunlara aynı kayıt dan sadece bir tane girilmesine izin verir.Birden fazla kayıta giris izni vermez.
        [constraints <kisit adi>]
                         [unique (<sutun1>,<sutun2>,….)]
            SQL>  
             Create table test_unique(
             Id number(5),
             Sutun_a varchar2(30),
             Sutun_b varchar2(30)          
             );
  •  SQL> alter table test_unique add constraints uq_id UNIQUE(id);


PRIMARY KEY;
     Bir tablodaki her bir kayıtı benzersiz olacak şekilde belirtir.Yani birincil anahtar olarak belirtilen sütunlara ayni kayıt dan tekrar girilmesine izin verilmez. UNIQUE oldukça benzemektedir.
        SQL>
        create table dersler(
        Bolum_id number(5),
        Dersler_id number(5),
        Constraints pk_dersler primary key(bolum_id,dersler_id));

         Primary keyin düşürülmesi ise;
  • SQL>alter table dersler drop primary key cascade;


FOREING KEY;
    Tablolar arasında  ortak sütunların kullanarak ana-çocuk ilişkisi kurar. Tanımlanan bir foreing key diğer tablodaki primary key yada unique referans verilir. Bütünlük kısıtı olarak bilinir.
          SQL>
          create table b (
          C number primary key
          Constraints  fk_a foreing key(c) references a(x));
          SQL>
          create table a (
          X number primary key
          Y varchar2(30)
           );
ETKİLİ OLMAYA KISITLAR;
    Bir kısıt oluşturulduğu zaman kısıt otomatik olarak etkin hale getirilir. Eğer kısıtın tablo oluştururken yada daha sonra etkin olmayan duruma dönüştürmek için disable kelimesi kullanılır.Etkin olmaya kısıtı etkin hala getirmek için enable kelimesi kullanılır.
        SQL>alter table personel_nufus modify constraints fk_personel_nufus DISABLE;
                 Alter table personel_nufus modify constarints fk_personel_nufus ENABLE;
KISITLARIN GECERLİLiGİNİ DENETLEMEK;
    Enable ve disable sadece tabloya sonradan eklenecek kayıtları  etkiler. Bununla birlikte validate ve novalidate kelimeleri var olan kayıtlar üzerinde çalışır.
ENABLE VALIDATE;
    Kısıtlar için varsayılan durumdur.Tabloda var olan kayıtların kısıta uyup uymadığını denetler.
ENABLE NOVALIDATE;
    Bu durum kısıtı aktif hale getirmesine karşın var olan kayıtların kısıta uyup uymadığını denetlemez.
DISABLE VALIDATE;
    Kısıt aktif olmayan hale getirilir. Indexler düşürülür,ancak kısıt geçerli kalır.Tablo üzerinde hiç bir Dml işlemine izin verilmez.
DISABLE NOVALIDATE;
    Bir kısıt disable yapıldiği zamanki varsayılan durumdur. Kısıt aktif olmayan durumdadır ve var olan yada sonraki kayıt girişleri denetlemez.

Hiç yorum yok:

Yorum Gönder