14 Şubat 2014 Cuma

SQL-JOINLER

Merhaba arkadaşlar bu yazımda size joinleri anlatacağım. Join çeşitlerini daha iyi kavrayabilmemiz adına küme şekillerine de yer vereceğim.

Veritabanı tasarımı yaparken veri tekrarını önlemek adına birçok tablo oluşturur ve bu tabloları birbirleriyle ilişkisel hale getiririz.Tablolarımızı yabancı anahtarlarla (foreign key) birbirlerine bağlarız.Örneğin,


 Ben şirketteki çalışanların hangi bölümde çalıştıklarını görmek istiyorum.
Sadece select PersonelAdiSoyadi,BolumNo from Personels sorgusunu yazarsam karşıma sadece çalışanların adı soyadı ve bölüm numaraları gelir böylelikle ben hangi bölümde çalıştıklarını göremem. 
Eğer select BolumNo,BolumAdi from Bolum diye sorgu yazarsam bu seferde çalışanların isimlerini göremem.
Ayrı ayrı sorgular yazmak yerine bu iki sorguyu tek bir sorguda yazarak istediğim işlemi gerçekleştirebilirim.

Tablo birleştirme işlemini iki farklı yöntemle yapabiliriz.

1-WHERE ile sorgu koşulu belirleyerek
2-JOIN komutunu kullanarak

WHERE ile sorgu koşulu belirleyerek çalışanların hangi bölümde çalıştıklarını gösteren bir sorgu yazacağım.

Select p.PersonelAdiSoyadi,b.BolumAdi  from Personels p ,Bolum b
Where p.BolumNo = b.BolumNo

JOIN komutu kullanarak aynı sorguyu yazalım.

Öncelikle Join ifadeleri 4'e ayrılır.

  • INNER JOIN
  • LEFT JOIN
  • RIGHT JOIN
  • FULL JOIN

INNER JOIN:  Sadece her iki tabloda da olan verileri gösterir.Yani iki tablo için de boş ( NULL) verileri temizler ve göstermez.

                                       Küme ifade olarak inner join kesişimi ifade etmektedir.


                         
  select p.PersonelAdiSoyadi,b.BolumAdi,b.Sehir from Personels p
  inner join Bolum b
  on p.BolumNo = b.BolumNo


Inner joinle personels ve bolum tablolarımızı birleştirip çalışanların bölüm hatta hangi şehirde çalıştıklarını öğrendik.

LEFT JOIN: İlk tablo (Personels) için boş olan verileri de göstermemizi sağlar.


P left join B kümelerde sol tarafta olan küme demektir. P tablosundaki veriler koşulsuz gelir, B tablosundakiler eşleşebildiklerini getirir eşlemediklerini NULL olarak getirir.
   
                     
select p.PersonelAdiSoyadi,b.BolumAdi,b.Sehir from Personels p
left join Bolum b
on p.BolumNo = b.BolumNo



RIGHT JOIN: İkinci (Bolum) tablodaki boş olan verileri de göstermemizi sağlar. 

P right join B kümelerde sağ tarafta olan küme demektir.B tablosundaki veriler koşulsuz gelir, P tablosundakiler eşleşebildiklerini getirir eşlemediklerini NULL olarak getirir.


select p.PersonelAdiSoyadi,b.BolumAdi,b.Sehir from Personels p
right join Bolum b
on p.BolumNo = b.BolumNo



FULL JOIN: İki tablo içinde boş olan verileri gösterir.

P full join B kümelerde birleşime karşılık gelir.Her iki kümedeki tüm elemanları getirir.Eşleştirebildiklerine  ilgili tablolardaki verilere, eşleştiremediklerini NULL olarak getirir.

select p.PersonelAdiSoyadi,b.BolumAdi,b.Sehir from Personels p
full join Bolum b
on p.BolumNo = b.BolumNo



İşimize yaracak olan join çeşitlerini anlatmaya çalıştım umarım anlaşılır olmuştur görüşmek üzere..



                       







12 Şubat 2014 Çarşamba

SQL-INSERT,UPDATE,DELETE

  INSERT

- Insert komutu bir tabloya kayıt eklemek için kullanılır. Önceki yazımdaki personelbilgi veritabanımı kullanacağım.

Bolum tabloma Arge adında bolumadı eklemek istiyorum.

Insert into Bolum(BolumAdi) values ('Arge')                            

Bu sorgumuzda bolum tablomuza arge adında bir veri kayıt ettik.
ınsert into komutumuzdan sonra tabloadı parantez içine ise hangi alana veri ekleyeceksek o kolonun ismini yazıyoruz.Daha sonrada kayıt edeceğimiz bilgileri yazıyoruz.Örneğimizde sadece bir veri ekledim.
 
Insert into Bolum(BolumAdi,Sehir) values ('Yazılım','Ankara')

Bu sorgumuzda dikkatinizi çekerse bolumno ya birşey eklemedim çünkü veritabanımı oluştururken bolumno ya 'otomatik sayı' özelliği verdiğim için o alana herhangi bir veri ekleyemem.

UPDATE

-Update komutu bir tablodaki kayıtların güncellenmesi amacıyla kullanılır.Hangi kayıt yada kayıtların güncelleneceği WHERE sözcüğü ile verilen kriter ile, kayıtlardaki güncellenecek alanlar ise SET sözcüğü sonrasında yeni değerlerinin atanması ile belirtilir.

Update Bolum set BolumAdi = 'Proje Yönetim'    
where BolumNo = 8

Yukarda insert into ile yazılım departmanı eklemiştim. Fakat ben bu bolumu güncelleyip bu sorguda yazılım yerine proje yönetim bolumunu ekledim.



DELETE

-Delete komutu bir tablodaki bir yada daha çok kaydı silmek amacıyla kullanılır.Hangi kayıt yada kayıtların silineceği WHERE sözcüğünden sonra verilen kriter ile belirlenir.

delete from Bolum where BolumNo = 7          
Bu sorgumuzda bolumnosu 7 olan bolumadı da arge olan veriyi bolum tablosundan sildik.

Not: Eğer WHERE sözcüğü hiç kullanılmaz ise tablodaki bütün veriler silinir.

delete from Bolum



11 Şubat 2014 Salı

-SQL Fonksiyonları-

Programlama dillerinde olduğu gibi, SQL'de de bazı artimetik işlemler için  yada tip dönüşümü yapmak için hazır olarak sunulan fonksiyonlar vardır.

SUM  ifadesi belirli bir sütundaki sayısal verileri toplar.
AVG  ifadesi ise belirli bir sütundaki  sayısal verilerin aritmetik ortalamasını gösterir.

    SELECT SUM(Maas) AS ToplamMaas FROM Personels

     
Bu sorgumuz bütün personelin maaşlarının toplamını gösterir.




SELECT AVG(Maas)
AS [MAASLARIN  ORTALAMASI] FROM Personels

Bu sorgumuz maaşların aritmetik ortalamasını gösterir.

Not: Eğer sütunumuza isim verirken boşluk karakteri kullanmak istersek  [ ]  içinde yazılmalıdır.

MAX ifadesi belirli bir sütundaki en büyük veriyi görüntülemek için kullanılır.
MIN ifadesi ise belirli bir sütundaki en küçük veriyi görüntülemek için kullanılır.


 SELECT MAX(EnyuksekMaas) AS en_yüksek_maas FROM MaasAralik

 Bu sorgu MaasAralik tablosundaki en yüksek maaşı getirir.


COUNT ifadesi sorgunun ürettiği satır sayısını döndürür.

   SELECT COUNT(*) AS [Toplam Kayıt Sayısı] FROM Personels

   Bu sorgu Personels tablosundaki toplam kayıt sayısını döndürür.

Not: Eğer COUNT içinde (*) yerine belirli bir sütun ismi verilirse o sütundaki NULL olmayan değer sayısını döndürür.

TOP  ifadesi  ilk belli sayıdaki kaydı almaya yarar.

   SELECT TOP 2 PersonelAdiSoyadi FROM Personels

    Bu sorguda Personels tablosundaki ilk 2 kaydı getirdi.


GROUP BY İfadesi SQL'de gruplandırma yapmak için kullanılır. SUM,AVG gibi bazı fonksiyonların tablonun tamamı için değilde, belirli bir alana yada alanlara göre gruplandırarak çalıştırılması GROUP BY deyimi ile sağlanır.

  SELECT AVG(Maas),Gorev
  FROM Personels
  GROUP BY Gorev

Bu sorguda personelin ortalama maaşlarını  her görev için ayrı ayrı listeler.