NATURAL JOIN , JOIN ON ve WHERE Clause ile tablo birleştirme işlemleri

İlişkisel tabloları birleştirmek için farklı sql komutları çalıştırabiliriz. Bazıları yazımı ve kullanımı açısından diğerine göre daha kolay. Bu yazımda aynı sonucu veren üç farklı SQL sorgusunu inceleyelim ve hangi yöntemi kullanacağımıza karar verelim. Tabloları birleştirirken kullanacağımız SQL komutları sırasıyla: NATURAL JOIN , JOIN ON ve WHERE Clause.

Örnekte iki tablo kullandım. Tablo isimleri sırasıyla; "personeller" ve "departmanlar" olacak. Birleştireceğimiz ilişkisel tabloların yapısı:

-- personeller tablosunun yapısı :
CREATE TABLE IF NOT EXISTS personeller (
  personel_id int(11) NOT NULL AUTO_INCREMENT,
  isim varchar(15) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  soyisim varchar(15) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  departman_id int(11) NOT NULL,
  PRIMARY KEY (personel_id),
  KEY departman_id (departman_id)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

-- departmanlar tablosunun yapısı :
CREATE TABLE IF NOT EXISTS departmanlar (
  departman_id int(11) NOT NULL,
  departman_isim varchar(15) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (departman_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Yarattığım bu tablolara örnek vermek için bir kaç örnek veri girdim. Sırasıyla bu tabloları ilişkisel sütün olan "departman_id" 'yi baz alarak birleştirelim. (Sonuç için en aşağıdaki resme bakabilirsiniz.)

NATURAL JOIN (aynı isimde ve tiple olan sütünlara göre otomatik birleşirir)
-- Natural Join ile tablo birleştirme işlemi
SELECT isim, soyisim, departman_isim
FROM personeller
NATURAL JOIN departmanlar
WHERE Clause ( bu kısıtlama komutu tabloları bileştirmek için de kullanılabilinir)
-- WHERE Clause ile tablo birleştirme işlemi
SELECT personeller.isim, personeller.soyisim, departmanlar.departman_isim
FROM personeller, departmanlar
WHERE personeller.departman_id = departmanlar.departman_id
JOIN ON ( Direk olarak ilişkişel tabloları birleştirmek için kullanılır )
-- JOIN ON ile tablo birleştirme işlemi
SELECT isim, soyisim, departman_isim
FROM personeller
JOIN departmanlar ON ( personeller.departman_id = departmanlar.departman_id )
Bu üç farklı yöntemle tabloları birleştirdiğimizde aşağıdaki aynı sonucu veriyor:

natural-join

Bu yazımda tabloları birleştirirken kullanabileceğimiz SQL sorgularını örneklerle anlatmaya çalıştım. Gördüğünüz gibi en kısa olan komut NATURAL JOIN oldu. Siz kendinize kolay geleni bulup karar verebilirsiniz. Tabi yararlarını ve zararlarını tartmanız gerek.

Ayrıca bu üç yöntemin de Mysql, Oracle, MsSql v.b. veritabanı yönetim sistemlerinde geçerli olduğu için ezberlemekte bir sakınca yok. Umarım yararlı olmuştur.
yazan Zülküf Küçüközer tarih   18th September 2009
primary key words  Veritabanı | Tablo birleştirme | Join on | Natural join okunma  9459
secondary key words  Where clause
Bu yazı hakkında yorum yapılmamış.