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