SELECT - INSERT- UPDATE - DELETE

Resimde gördüğümüz Personel tablosu üzerinden örnek vermeye çalışacağım.



SELECT

Select sorgusu tablodan veri çekmek için kullanılır.
Söz dizimi, SELECT KolonAdı FROM TabloAdı şeklindedir.
Örneğin;

Select * From Personel






dediğimizde tablodaki tüm kayıtlar listelenecektir.

Tablodan sadece belirli kolonları çekmek istersek, kolon isimlerini yazarak virgül(,) ile ayırmamız yeterli olacaktır. Örneğin;

Select Ad,Soyad From Personel






dersek sorgu sonucu tablodan, tüm kayıtların Ad ve Soyad alanları döner.

Tüm kayıtları değil de belirli bir koşuldaki kayıtları çekmek istediğimizde ise WHERE sözcüğü devreye girer. Söz dizimi, SELECT KolonAdı FROM TabloAdı WHERE Koşul şeklindedir. Koşulu belirlemek için Operatörlere ihtiyaç duyarız. Örneklerle detaylandırmadan önce aşağıdaki karşılaştırma operatörlerini açıklamaları ile incelemekte fayda var.


Operatör Anlamı
=  Eşit
!=  Eşit değil(Farklı)
<>  Eşit değil(Farklı)
<  Küçük
>  Büyük
<=  Küçük veya Eşit
>=  Büyük veya Eşit
!>  Büyük değil(Küçük veya Eşit)
!<  Küçük değil(Büyük veya Eşit)
BETWEEN  Arasında
LIKE  Metin arama (% _ [] [^])
IN  Listede arama

Aynı sorgu için birden fazla koşul kullanmak istediğimiz zaman ise mantıksal operatörlerden AND ve OR devreye girmektedir.

AND operatörü sağındaki ve solundaki koşulun ikisinin de sağlanmasını bekler. Aksi takdirde Null döndürür.

OR operatörü kullanıldığında, sonucun Null dönmemesi için sağında ve solunda yer alan iki koşuldan herhangi birisinin sağlanması yeterlidir.

Koşul 1 Koşul 2 AND OR
False False False False
False True False True
True False False True
True True True True

Sonucu tersine çevirmek için ise NOT kullanılır.

Koşul NOT
True False
False True




Örnek-1) Soyadı Sever olan kayıtları arayalım;

Select * From Personel Where Soyad = 'Sever'
Select * From Personel Where Soyad LIKE 'Sever'

Sonuç:




Sever yazımında görüldüğü  üzere,  String ifadeler  Tek Tırnak (') içerisinde kullanılır.




Örnek-2) Aktif çalışanları listeleyelim;

Select * From Personel Where Durum = 1
Select * From Personel Where Durum = 'TRUE'

Sonuç:





Örnek-3) 2010'dan sonra işe giren ve aktif çalışanları  listeleyelim;

Select * From Personel Where GirisTarihi > 2010 AND Durum = 1

Sonuç:





Örnek-4) 2010 ile 2015 arasında işe giren çalışanları  listeleyelim;

Select * From Personel Where GirisTarihi BETWEEN '2010' AND '2016'

Sonuç:





Örnek-5) 2010 ile 2015 aralığı harici işe giren çalışanları  listeleyelim;

Select * From Personel Where GirisTarihi NOT BETWEEN '2010' AND '2016'

Sonuç:





Örnek-6) Personel numarası 1521201017, 1521201014, 1521201097, 1521201099 bu listede olan personel varsa onları listeleyelim;

Select * From Personel 
Where PersNo IN (1521201017,1521201014,1521201097,1521201099)

Sonuç: 





LIKE operatörü 1. Örnek'te olduğu gibi tam bir kelime arandığında, eşitlik ifadesi gibi de kullanılabilir. Joker karakterler ile kullanımıyla ilgili örnekler ise aşağıda yer almaktadır;




Örnek-7) Soyadı Ta ile başlayan kayıtları listeleyelim;

Select * From Personel Where Soyad LIKE 'Ta%' 

Sonuç: 





Örnek-8) Soyadı K veya S ile başlayan kayıtları listeleyelim;

Select * From Personel Where Soyad LIKE '[KS]%' 

Sonuç: 





Örnek-9) Soyadı K veya T ile başlayan ve k ile biten kayıtları listeleyelim;

Select * From Personel Where Soyad LIKE '[TK]%' AND Soyad LIKE '%k' 

Sonuç: 





Örnek-10) Soyadı Ta ile başlayan ve 3.harfi b olmayan kayıtları listeleyelim;

Select * From Personel Where Soyad LIKE 'Ta[^b]%' 

Sonuç: 





Örnek-11) Adı 4 harfli olan kayıtları listeleyelim;

Select * From Personel Where Ad LIKE '____' 

Sonuç: 


Sorgularımızı biraz daha genişletmemiz gerektiğinden, tablomuzu da biraz değiştirdim ve son hali aşağıdaki gibidir.



Öncelikle bazı SQL Fonksiyonlarına değinmenin, ilerideki sorguları anlamada kolaylık sağlayacağı kanısındayım.




COUNT : Bu fonksiyon, kullanım şekline göre, belirtilen kayıtların veya tablodaki tüm kayıtların sayısını verir.




Örnek-12) Aktif personel sayısını öğrenelim;

Select COUNT(*) From Personel Where Durum=1 
Select COUNT(*) AS PersSayi From Personel Where Durum=1

Sonuç: 






AS kelimesini kullanarak, sorgu sonucu dönen sütunları bizim belirlediğimiz adlarla gösterebiliriz veya örnekte görüldüğü gibi isimsiz olarak gelen sütunlarımızı isimlendirebiliriz.




Örnek-13) Kaç farklı departman olduğunu öğrenelim;

Select Count(DISTINCT Departman) AS DepSayi From Personel Where Durum=1 

Sonuç: 








Tekrar eden veriler varsa, sadece 1 tanesini almamız gereken durumlarda DISTINCT anahtar kelimesini kullanırız. Mesala üstteki örnekte sadece Count(Departman) yazsaydık, tablodaki toplam Departman sayısına denk gelen 11 sonucunu alacaktık. Fakat 5 farklı Departman (a,b,c,v,x) olduğu için Count(DISTINCT Departman) ile 5 sonucunu döndürdü.

Count(*) ile Count(KolonAdı) arasındaki küçük fark, birincisi tablodaki toplam satır sayısını, ikincisi girilen kolon adına ait sütundaki NULL olmayan toplam satır sayısını vermektedir.




SUM : Bu fonksiyon, belirtilen alanların toplamını verir.




Örnek-14) a departmanı için Durum kolonuna bakmaksızın, toplam ne kadar bütçe ayrıldığını öğrenelim;

Select SUM(Maas) AS a_Maas From Personel Where Departman='a'

Sonuç:









MAX-MIN : Belirtilen veri grubunun en yüksek ve en düşük değerini bulmak için kullanılır.




Örnek-15) Tablomuzdaki en yüksek ve en düşük maaşa bakalım;

Select MAX(Maas) AS Max_Maas, MIN(Maas) AS Min_Maas From Personel 

Sonuç: 









AVG : Belirtilen aralıktaki verilerin ortalama değerini bulmak için kullanılır.




Örnek-16) b departmanında çalışan personellerin ortalama maaşına bakalım;

Select AVG(Maas) AS b_Ort From Personel Where Departman='b'

Sonuç: 








Bazı durumlarda sorgu sonucu dönen listeyi belli alanlara göre gruplamak gerekir. Bunun için GROUP BY ifadesini kullanırız. Söz dizimi, SELECT KolonAdı FROM TabloAdı WHERE Koşul GROUP BY KolonAdı şeklindedir.




Örnek-17) 1990 ve sonrasında doğan çalışma durumu aktif ve pasif olan kaçar kişi olduğuna bakalım;

Select 
Durum, 
COUNT(*) AS Sayisi 
From Personel 
Where DogumTarihi >= '1990' 
GROUP BY Durum

Sonuç: 









Örnek-18) Her bir departmanda kaç kişi olduğuna ve bu gruptaki maksimum, minimum ve ortalama maaşlara bakalım;

Select 
Departman, 
COUNT(*) AS Sayisi, 
MAX(Maas) AS MaxMaas, 
AVG(Maas) AS OrtMaas, 
MIN(Maas) AS MinMaas 
From Personel 
Where Departman is NOT NULL 
Group By Departman 

Sonuç: 












Gruplanmış veriler üzerinde koşul belirtmek istediğimiz zaman ise HAVING yardımcı kelimesini kullanırız. Where'den farkı where sözcüğü belirtilen tüm satırlar için o koşulu doğrulamaya çalışır. Having sadece Group By ile birlikte kullanılır.




Örnek-19) Yine her bir departmanda kaç kişi olduğuna ve bu gruptaki maksimum, minimum ve ortalama maaşlara bakalım fakat bu defa departmanda çalışan kişi sayısı 2'den büyükse getirsin;

Select
Departman,
COUNT(*) AS Sayisi,
MAX(Maas) AS MaxMaas,
AVG(Maas) AS OrtMaas,
MIN(Maas) AS MinMaas
From Personel
Where Departman is NOT NULL
Group By Departman
Having Count(*) > 2

Sonuç: 








devam edecek...


Hiç yorum yok:

Blogger tarafından desteklenmektedir.