sql ile data çekmekten evvela çekilecek datalarda değişiklik için kullanılan manipülasyon yapılarını bilmek, bunları kullanmak elzemdir.
ilk olarak
update yapısına bakarsak olay şöyledir:
update tablo set alan='hede',alan2='hödö' where alan='veren';
bu yapı kullanıldığında alan field'ının 'veren' şeklinde değere sahip olan tüm elemanlarında set yapısından sonra verilmiş işlemler yapılacak yani alan='hede' ve alan2='hödö' eşitlemeleri yapılacaktır. update yapısında where yapısı kullanılmaması tüm tablonun sorgusuz sualsiz manipüle edilmesine yol açar. evinizde denemeyin.
delete yapısı ise daha basit olmak üzere şöyledir:
delete from tablo where alan='veren';
bu query
where clause'dan sonra verilen şartlara uyan tüm kayıtları tablodan siler. where yapısı verilmediği durumlarda tüm tablodaki datayı kaybederiz ki bunu da evde denemeyin. eğer bir tabloyu boşaltmak üzere delete from table yapısı kullanıyorsanız kullandığınız dbms destekliyorsa şunu kullanın: (bkz:
truncate table)
bunlar veri manipülasyonu içindi. peki select'in daha gelişmiş kullanımından devam edelim şimdi ve
join yapısına bakalım. dört tür join vardır.
-
inner join
-
outer join
-
left join
-
right join
ben burda şimdi inner join'den bahsedeyim, gerisini eğer yazmışsam (veya ileride yazacaksam) ilgili başlıklarından okuyabilirsiniz. tüm join'lerin syntax'leri aynıdır. inner join ise iki tabloyu tamamen birleştirip sorgulamaya yarar.
örneğin iki tablomuz olsun cinsiyetler isimli birinde id ve cinsiyet field'ları, kisiler olanında ise yine id ve isim field'ları olsun. erkek cinsiyetindeki tüm kişilerin isimlerini bulmak için iki tabloyu birleştiririz:
select kisiler.isim from kisiler
inner join cinsiyetler on kisiler.id=cinsiyetler.id
where cinsiyetler.cinsiyet='erkek'
bu olayın püf noktası iki tabloda ortak olan id field'ları kullanılarak bir ortak payda, bir birlik bir federasyon yaratılması olayıdır. aslında join kullanmadan da bu mümkün ama hiç girmiyoruz bu konuya. (hızlandırılmış kursta olmamız sebebiyle)
diğer join tiplerinden left join'in olayı ana tablomuza join edilen ikinci tabloda eşleşen bir data olmaması sonucunda null değer döndürmesi, yani iki tabloda örtüşen kayıtlar zorunluluğunun olmaması durumudur. outer ve right'a ise diğerlerinin bir anlamda tersi diyebiliriz.
maalesef update ve delete yapılarında genel olarak join kullanılamaz. destekleyen bazı dbms'ler olsa da bilmiyorum.
edith piaf: terminoloji hatası yapmışız. inner join tek başına bir join cinsiyken left ve right join outer join'in iki farklı versiyonuymuş.