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;
dediğimizde tablodaki tüm kayıtlar listelenecektir.
dersek sorgu sonucu tablodan, tüm kayıtların Ad ve Soyad alanları döner.
Sonucu tersine çevirmek için ise NOT kullanılır.
Örnek-1) Soyadı Sever olan kayıtları arayalım;
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;
Sonuç:
Örnek-3) 2010'dan sonra işe giren ve aktif çalışanları listeleyelim;
Sonuç:
Örnek-4) 2010 ile 2015 arasında işe giren çalışanları listeleyelim;
Sonuç:
Örnek-5) 2010 ile 2015 aralığı harici işe giren çalışanları listeleyelim;
Sonuç:
Örnek-6) Personel numarası 1521201017, 1521201014, 1521201097, 1521201099 bu listede olan personel varsa onları listeleyelim;
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;
Sonuç:
Örnek-8) Soyadı K veya S ile başlayan kayıtları listeleyelim;
Sonuç:
Örnek-9) Soyadı K veya T ile başlayan ve k ile biten kayıtları listeleyelim;
Sonuç:
Örnek-10) Soyadı Ta ile başlayan ve 3.harfi b olmayan kayıtları listeleyelim;
Sonuç:
Örnek-11) Adı 4 harfli olan kayıtları listeleyelim;
Sonuç:
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;
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;
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ü.
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;
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;
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;
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;
Sonuç:
Örnek-18) Her bir departmanda kaç kişi olduğuna ve bu gruptaki maksimum, minimum ve ortalama maaşlara bakalım;
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;
Sonuç:
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...
SELECT - INSERT- UPDATE - DELETE
Reviewed by Esra TÜRKMEN
on
22:44
Rating: 5