SQL Join,Union,Except Nedir?

EXPECT: SQL’de EXCEPT ifadesini iki kümenin farklı elemanlarını getirmek için kullanırız. Sadece ilk sonuç setinde olup ikici sorgu sonucunda olmayan kayıtları listelememizi sağlamaktadır. Departman ve çalışanlar adında iki tablomuz olsun. Henüz bir departmana bağlı olmayan çalışanlar veya çalışanı olmayan departmanlar derken EXCEPT kullanabiliriz. Ya da sipariş ve müşteriler tablomuz olsun. Sipariş vermeyen müşterileri listelemek için de EXCEPT kullanabiliriz.

SELECT FilmStudioID FROM Studio
EXCEPT
SELECT FilmStudioID FROM film

EXCEPT’e alternatif olarak NOT IN’de kullanabiliriz. Aralarındaki fark; EXCEPT sonuçları DISTINCT getirirken, NOT IN tekrarlı/tekrarsız getirmektedir. Şimdi aynı örneği bir de NOT IN ile yazalım;

SELECT T1.StudioName, T1.FilmStudioID 
FROM Studio AS T1 
WHERE T1.FilmStudioID NOT IN
      (SELECT T2.FilmStudioID 
       FROM Film AS T2 
       WHERE T1.FilmStudioID=T2.FilmStudioID)

INTERSECT: SQL’de INTERSECT ifadesini iki kümenin ortak elemanlarını getirmek için kullanırız.

SELECT Sutun1, Sutun2...., SutunN FROM Tablo1
INTERSECT
SELECT Sutun1, Sutun2...., SutunN FROM Tablo2

UNION: 2 yada daha fazla SELECT ifadesini bağlar. JOIN ise iki ya da daha fazla tabloyu tek bir SELECT ile bağlar. Ayrıca UNION tablo satırlarını bağlar, JOIN ise tablo sütunlarını birleştirir.
SQL UNION/UNION ALL arasındaki fark nedir?
UNION: DISTINCT gibi davranır yani mükerrer(tekrar eden) kayıtlar gelmez.
UNION ALL: Mükerrer kayıt olup olmaması önemli değildir, tüm satırlar gelir.

Temelde üç tip JOIN vardır bunlar; CROSS JOIN, INNER JOIN ve OUTER JOIN (LEFT OUTER, RIGHT OUTER, FULL OUTER)‘dir.
CROSS JOIN: İki tablonun kartezyen çarpımıdır. Yani A tablosundaki her satır için B tablosundaki tüm satırlar döner.

--Önerilen syntax biçimi
SELECT Tablo1.Sütun(lar), Tablo2.Sütun(lar),
FROM Tablo1
 CROSS JOIN
     Tablo2
  
--Alternatif syntax biçimi
SELECT Tablo1.Sütun(lar), Tablo2.Sütun(lar),
FROM Tablo1, Tablo2

INNER JOIN: İki tablodaki ortak alana göre birebir eşleştirme yapar.

--Önerilen syntax biçimi
SELECT Tablo1.Sütun(lar), Tablo2.Sütun(lar),
FROM Tablo1
 INNER JOIN
     Tablo2 ON
   Tablo1.Ortak_Sütun = Tablo2.Ortak_Sütun

LEFT OUTER JOIN: İlk tablonun verileri koşulsuz gelir, ikinci tablodan ise ortak alana göre eşleşen kayıtlar gelir. Eşleşmeyen kayıtlar NULL döner.

--Önerilen syntax biçimi
SELECT Tablo1.Sütun(lar), Tablo2.Sütun(lar),
FROM Tablo1
 LEFT OUTER JOIN
     Tablo2 ON
   Tablo1.Ortak_Sütun = Tablo2.Ortak_Sütun

RIGHT OUTER JOIN: İkinci tablonun verileri koşulsuz gelir, ilk tablodan ise ortak alana göre eşleşen kayıtlar gelir. Eşleşmeyen kayıtlar NULL döner.

SELECT Tablo1.Sütun(lar), Tablo2.Sütun(lar),
FROM Tablo1
 RIGHT OUTER JOIN
     Tablo2 ON
   Tablo1.Ortak_Sütun = Tablo2.Ortak_Sütun

FULL OUTER JOIN: İki tablonun ortak alana göre eşleşen eşleşmeyen tüm kayıtları gelir. Eşleşmeyen kayıtlar NULL döner.

SELECT Tablo1.Sütun(lar), Tablo2.Sütun(lar),
FROM Tablo1
 FULL OUTER JOIN
     Tablo2 ON
   Tablo1.Ortak_Sütun = Tablo2.Ortak_Sütun

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s