TEK TABLODAN SORGULAMALAR
ÖRNEK: 1) Bütün bilgileri personel tablosundan koşulsuz olarak listele
SELECT *
FROM personel
|
ÖRNEK:2) Personel tablosundan SEÇ komutuyla istenen sütun adlarını belirt.
SELECT sicil,sosy_g_no,ad,soyad,dog_tar,adres,cins,brüt,böl_no,yön_s_g_n
FROM personel;
|
ÖRNEK:3)Personel tablosundan istenen sütün başlıklarını listele.
SELECT sicil,ad,soyad,brüt
FROM personel;
|
DISTINCT - TEKRARSIZ
TANIM:SQL'de tablo içinde birbirinin aynı datalar bulunabilir.Aynı satırların listeleme esnasında bir kez yazılması
ÖRNEK: 1)Par _sat dosyasından sat_no’ları tekrarsız olarak listelenecektir.
SELECT DISTINCT sat_no
FROM par_sat;
|
i)TABLO BİLGİLERİNİN SIRALANMIŞ OLARAK LİSTELENMESİ
ORDER BY - SIRALA
TANIM:Tablodaki sütunlardan ,belirli bir sütuna göre listelemek için SEÇ komutuna ,SIRALA eklenir.
ÖRNEK: 1)Personel dosyasından,sicil,ad,soyad,brüt sütunlarını seç ve brüt(maaşa)göre büyükten küçüğe sırala.
SELECT sicil,ad,soyad,brüt
FROM personel
ORDER BY brüt ASC;
|
- DESC Küçükten büyüğe sırala
- ASC Büyükten küçüğe sırala
İİ)BİRDEN ÇOK ALANA GÖRE SIRALAMA
TANIM:Bir tablo içinde ,birden fazla sütundan aynı anda sıralamak için kullanılır.
ÖRNEK 1)Personel dosyasından seçilen sütunlarını aynı anda hem ad,hem de otomatik olarak sıralar.
SELECT sicil,ad,soyad,brüt
FROM personel
ORDER BY ad,brüt;
|
ÖRNEK 2)Personel tablosundan seçili sütunları öncelik adda olmak üzere (B-K) adı bozmadan soyadı (K-B) sıralı listeler.
SELECT sicil,ad,soyad,brüt
FROM personel
ORDER BY ad ASC,soyad DESC,brüt ASC;
|
veya;
SELECT sicil,ad,soyad,brüt
FROM personel
ORDER BY ad,soyad DESC,brüt;
DESC'li durumda yanına yazıp belirtilir,yazılmazsa ASC direct kabul edilir.
KOŞULA BAĞLI OLARAK LİSTELEME:
WHERE - OLAN
TANIM:Verilen koşulu sağlayanlar listelenir.İki veri birbiriyle karşılaştırılmaktadır. Karşılaştırılan verilerin türü aynı olmalıdır.
SELECT *
FROM personel
WHERE brüt > 5000000;
KARŞILAŞTIRMA OPERATÖRLERİ:
OPERATÖR | ANLAMI |
< | ...den daha küçük |
> | ...den daha büyük |
= | Eşit |
<= | Küçük veya eşit |
>= | Büyük veya eşit |
<> | Eşit değil |
!= | Eşit değil |
!< | ...den küçük değil |
!> | ...den büyük değil |
ÇEŞİTLİ VERİ TİPLERİ İÇİN BASİT SORGULAMALAR:
i)NÜMERİK VERİ TİPLERİ:
ÖRNEK: Maaşı 8000000TL’den fazla olmayan personeli listele.
SELECT *
FROM personel
WHERE brüt <= 8000000;
|
ii)KARAKTER VERİ TİPLERİ (CHAR):
Karakter çift veya tek tırnak ile gösterilir.
ÖRNEK: Adı Ali olmayan personele ait kayıtları listele.
SELECT *
FROM personel
WHERE ad <> "Ali";
|
İİİ)TARİH VERİ TİPİ:
Tarih veri tipleri { } sembolleri içinde yazılır.
ÖRNEK: Hangi personelin doğum tarihi 1960 yılından daha öncedir?
SELECT *
FROM personel
WHERE dog_tar <={12/31/59};
|
MANTIKSAL (LOJİK) VERİ TİPİ:
Mantıksal veriler için mümkün olabilen sadece iki değer sözkonusudur.DOĞRU D(TRUE T) , YANLIŞ Y (FALSE F) ile simgelenir.
ÖRNEK: Personel tablosunda personelin cinsiyetini belirten cins adlı alan mantıksal(logical) olarak tanımlanmıştır.Cinsiyeti erkek olanları D,kadın olanları y ile tanımlarsak erkek olanları listele.
SELECT *
FROM personel
WHERE cins = .T.;
|
BİRDEN ÇOK KOŞULA DAYALI SORGULAMALAR: (NOT,AND,OR)
TANIM:Mantıksal operatörlerin yardımı ile birden çok koşulun gerçekleştirmesine bağlı olarak ifade edilebilecek (karmaşık yada birleşik koşullu listelemeleri gerçekleştirilmektedir.)
AND - VE
ÖRNEK:Maaşı 5000000’dan fazla olan ve cinsiyeti erkek olan personelin listelenmesi istenir yani iki koşul verilmektedir ve ikisininde olması istenir
SELECT *
FROM personel
WHERE brüt >5000000 AND cins =.T.;
|
NOT - DEĞİL, OR - VEYA
ÖRNEKLER:
i)Doğum tarihi 1960’dan önce olan maaşı 6000000 – 10000000 arasındaki bayan personelin listele.
SELECT *
FROM dog_tar < {01/01/60} AND
brüt > = 6000000 AND brüt < =10000000
AND cins = .F.;
|
ii)Satış bölümüyle muhasebe bölümündekiler kimlerdir? (Satış bölümünün böl_no’sunun 1 ve muhasebe bölümünün böl_no’sunun 2 olduğu varsayılmaktadır
SELECT *
FROM personel
WHERE bol_no =1 OR bol_no = 2;
|
İİİ)Bölümü Satış yada Muhasebe olamayan 1960’dan sonra doğmuş bayan personeli listele.
1. Yazılım
SELECT *
FROM personel
WHERE NOT (böl_no =1 OR
böl_no =2) AND dog_tar > ={01/01/60}
AND cins =.F.;
2. Yazılım
SELECT *
FROM personel
WHERE böl_no <> 1 AND
böl_no <> 2 AND dog_tar > ={01/01/60}
AND cins =.F.;
|
BİR VERİ KÜMESİNDE ARAMA -IN OPERATÖRÜ
IN - İÇİNDE
"IN" operatörü DEĞİL(NOT) ile kullanılılabilir.
ÖRNEK:i) Bölümü 1,2,3 olmayan personel kimlerden oluşmaktadır?
SELECT *
FROM personel
WHERE bol_no NOT IN (1,2,3);
|
ÖRNEK:ii) Böl_no’su 1,2 yada 3 olan personeli listele
SELECT *
FROM personel
WHERE böl_no = 1 OR böl_no= 2 OR
böl_no = 3;
|
Bu örneğin IN ile yapılmış şekli daha kısadır.
SELECT *
FROM personel
WHERE NOT böl_no IN (1,2,3);
ARALIK SORGULAMA SÖZCÜĞÜ:
BETWEEN - ARASINDA
ÖRNEK:Maaşı 5- 10 milyon arasında olan personel kimlerdir?
SELECT *
FROM personel
WHERE brüt > =5000000 AND
brüt < = 10000000;
|
BETWEEN (ARASINDA) komutu ile daha kısa olacaktır.
SELECT *
FROM personel
WHERE brüt BETWEEN 5000000
AND 10000000;
KARAKTER TÜRÜ BİLGİ İÇİNDE ARAMA YAPMA -LIKE SÖZCÜĞÜ:
TANIM ÖRNEĞİ: Adres sutunu içerisinde semt bölümüne ait ayrıca bir sutun olmadığını varsayarak semt adı adres sutunu içerisinde yer alır ve buradan da LIKE (BULUNAN) komutuyla adres sutunu içerisinde Taksim semtinde oturan personeli listele.
SELECT *
FROM personel
WHERE adres LIKE "% TAKSİM %" ;
Adres LIKE "%TAKSİM%" ifadesi adres içinde her hangi bir yerde TAKSİM yazan yerde oturan personeli listeleyecektir. LIKE sözcüğünü ,alt çizgi (-) sembolü ile birlikte kullanmakta mümkündür.
SELECT *
FROM personel
WHERE ad LIKE "Mehmet -----";
Şekildeki komut ile ad alanı "Mehmet " ile başlayan ve ad alanı uzunluğu 10 karakter olan isimlere sahip personeli listeleyecektir."Mehmet Ali","Mehmet Can"- "Mehmetcik" gibi isimler listeleyecektir.Anlaşılacağı gibi - sembolü , tek karakterlik bir bilgiyi temsil etmektedir.