SELECT KOMUTU
Veritabanındaki verilere erişmenin, diğer bir deyişle istenen özelliklere uygun bir veri
seti elde edip görüntülemek için kullanılan komuttur. Bir ya da daha çok tablodan veri seti
çekilebilir. Bu veri setinin bütün alanları ya da belli alanları için SELECT komutu kullanılır.
FORMATI:
SELECT [*] [DISTINCT] alan_adı/alan_adları [INTO yeni tablo] FROM [tablo] [WHERE şart]
[GROUP BY alan_adı] [HAVING sayısal_değer] [ORDER BY alan_adı]
Parametrelerin Kullanımları:
*; sözcüğü bütün satırların sonuç listesinde görünmesini sağlar.
DISTINCT; sadece tek olan (unique) kayıtların sonuç listesinde yer almasını sağlar. Tekrarlı
kayıtlar gösterilmez. Liste parametresi veriden seçilecek kolonu (sütunu) belirtir.
INTO; yeni bir tablo yaratmayı sağlar. Yeni tablo parametresi sorgu sonucu yaratılacak
tabloyu belirtir.
FROM; belli bir tablonun seçilmesini sağlar. Tablo parametresi ise sorgulanacak olan tablo ya
da tabloları, görünümleri belirtir.
WHERE; bir koşulu belirterek sadece o koşula uyan kayıtların seçilmesini sağlar.
GROUP BY; Kayıtların gruplanmasını sağlar. HAVING deyimiyle de ara toplamların alınmasını
sağlar.
HAVING; Sayısal değerlere göre şart tanımlamasında Group By ile kullanılır. WHERE alanlara
göre veri filtrelemesi yaparken HAVING sayısal fonksiyon değerlerine göre filtreleme yapar.
ORDER BY; belirtilen kolona göre listelenen kayıtları sıralamayı sağlar. Sıralama artan (ASC)
ya da azalan (DESC) olabilir, herhangi bir şey yazılmazsa varsayılan değer
ASC(ASCent/artan)dir.
Görüntüleme işlemleri için hali hazırda ilişkili tablolardan oluşturulmuş NORTHWIND
veritabanı kullanılacaktır.
Örnek: Personeller tablosundaki tüm verileri görmek istersek
select * from personeller
Örnek: Sadece personelid,adi,soyadi alanlarını görüntülemek istersek
select PersonelID,Adi,SoyAdi from Personeller
Örnek: Tek tablodan alanları görüntüleyeceğimiz gibi birden fazla tablo da görüntülenebilir.
select * from urunler
select * from Personeller,Urunler
ORDER BY(asc,desc): Alfabetik yada sayısal sıralama yapmak için kullanılır.
Formatı:
SELECT veri_alanları FROM tablo_adi ORDER BY alan_adi/adları ASC/DESC
Örnek: Personeller tablosundaki verileri Adi alanının alfabetik sıralamasına göre listeleyelim
select * from Personeller order by adi ASC
Örnek: Personeller tablosundaki verileri Soyadi alanının alfabetik sıralamasının terine göre
listeleyelim
select * from Personeller order by soyadi DESC
Örnek: Personeller tablosundaki verileri Adi ve Soyadi alanının alfabetik sıralamasına göre
listeleyelim
Not:Adi alanındaki veriler aynı olursa Soyadi alanındaki verilere göre sıralama yapılır
select * from personeller order by adi,soyadi
Örnek: Personeller tablosundaki bilgileri doğum tarihine göre tersten(gençten yaşlıya doğru)
sıralayalım
select * from personeller order by DogumTarihi desc
Örnek: Personeller tablosundaki bilgileri doğum tarihine göre tersten(gençten yaşlıya doğru)
sıralayalım,
Örnek: Adi ve Soyadi alanlarındakilerin aynı olanları da artan sırada.
select * from personeller order by DogumTarihi desc,adi,soyadi
WHERE: Koşul tanımlamak istendiğinde kullanılır. Tanımlanan şart/şartlara uyan kayıtları
filtreleyerek görüntülemek için kullanılır
Formatı:SELECT veri_alanları FROM tablo_adi WHERE şart/şartlar
Örnek: Personeller tablosunda Adi alanı Murat olan tüm kayıtları göster
select * from personeller where adi='janet'
Örnek: Personeller tablosunda Adi alanı Murat olan kayıtların PersonelID,Adi,Soyadi
alanlarındaki verileri göster
select personelID,adi,soyadi from personeller where adi='janet'
Örnek: Personeller tablosunda UnvanEki Ms. veya Mrs. olan kayıtları göster
select * from personeller where UnvanEki='Ms.' or UnvanEki='Mrs.'
Örnek: Personeller tablosunda UnvanEki Ms. ve Sehir alanında London olan kayıtları göster
select Adi,soyadi from personeller where UnvanEki='Ms.' and Sehir='London'
Örnek: Doğum tarihi 01/01/1955 ten büyük olan kişilerin kayıtlarını göster
select * from personeller where DogumTarihi>'1955-01-01'
Örnek: Doğum tarihi 01/01/1955 ten büyük olan kişilerin Sehir kayıtlarını göster
select sehir from personeller where DogumTarihi>'1955-01-01'
WHERE ve ORDER BY 'ı birlikte kullanmak:
Örnek: 01/01/1955 ten sonra doğan kişileri ada göre alfabetik sırala
select * from personeller where DogumTarihi>'1955-01-01' order by adi
BETWEEN komutu: İki değer arasında kalan verilerin olduğu kayıtları göstermek için kullanılır
Örnek: Satislar tablosunda NakliyeUcreti 10 ile 15 arasında olanları göster
select * from satislar where NakliyeUcreti between 10 and 15
Örnek: Satislar tablosunda NakliyeUcreti 10 ile 15 arasında olanların PersonelID'siyle birlikte
göster
select PersonelID,NakliyeUcreti from satislar where NakliyeUcreti between 10 and 15
Örnek: nakliye ücreti 10-15 arasında olan satışların hangilerini personelid si 5 olan personel
yapmıştır
select PersonelID,NakliyeUcreti from Satislar where PersonelID='5' and NakliyeUcreti
between 10 and 15
select PersonelID='5',NakliyeUcreti from Satislar where NakliyeUcreti between 10 and 15
select * from Satislar where PersonelID='5' and NakliyeUcreti between 10 and 15
Örnek: müşteriler tablosunda londra şehrinde yaşayan Satış asistanı sahiplerini göstersin
select musteriadi,musteriunvani,sehir from Musteriler where musteriunvani='Sales Associate'
and sehir='london'
Örnek: personeller tablosunda extension alanındaki verileri 1000-4000 arasında olan
personellerin ad ve soyadları ile personelid'leri bilgilerini gösterin
select personelID,adi,soyadi,extension from personeller where Extension between 1000 and
4000
Örnek: personeller tablosunda extension alanındaki verileri 1000-4000 arasında olan
personellerin ad ve soyadları ile personelid'leri bilgilerini ad'a göre sıralayın
select personelID,adi,soyadi,extension from personeller where Extension between 1000 and
4000 order by adi
Örnek: satislar tablosunda Fransa'ya yapılan satışların hangi müşteriye hangi kodla
yapıldığını gösterin
select musteriID,satisID,sevkulkesi from satislar where SevkUlkesi='france'
Örnek: Satis Detaylari tablosunda urunID'si 65 olan urunler hangi satış kodunda kayıtlıdır.
select satisID,urunID from [Satis Detaylari] where UrunID='65'
Örnek: Tedarikçiler tablosunda WEB sayfası olmayanların hangileri LONRDA'da ise bu
şirketlerin
adlarını listeleyin
select sirketadi,sehir,websayfasi from Tedarikciler where sehir='london' and WebSayfasi is
Null
LIKE:içerisinde belli karakter dizilerinin olduğu verileri barındıran kayıtları filtrelemede
kullanılır
Formatı:SELECT * FROM tablo_adi WHERE alan_adi LIKE veri
% operatorü:belirlenen kriterin dışında kalan kısımları anlatmak için kullanılır
Örnek: personeller tablosunda adi alanında 'an' ile başlayan kayıtların tüm bilgilerini göster
select * from Personeller where Adi like 'an%'
Örnek: personeller tablosunda adi alanında 'et' ile biten kayıtların tüm bilgilerini göster
select * from Personeller where adi like '%et'
Örnek: personeller tablosunda adi alanında içerisinde 'an' olan kayıtların tüm bilgilerini
göster
select * from Personeller where Adi like '%an%'
Örnek: personeller tablosunda adi alanında 'ja' ile başlayan ve 'et' ile biten kayıtların tüm
bilgilerini göster
select * from personeller where adi like 'ja%et'
Örnek: personeller tablosundan 01.01.1960 dan sonra doğan ve ismi 'an' ile başlayanların
personelid , ad, soyad ve yaşadığı şehiri gösterin
select personelID, Adi, Soyadi, Sehir,DogumTarihi from Personeller where
DogumTarihi>'1960-01-01' and adi like 'an%'
Örnek: personeller tablosundan 01.01.1950 ile 01.01.1960 arasında doğan ve unvanı içinde
'pre' bilgisi olanların
Örnek: personelid,ad,soyad unvanı ve doğum tarihini gösterin
select personelID, Adi, Soyadi, Unvan,DogumTarihi from Personeller where DogumTarihi
between '1950-01-01' and '1960-01-01' and unvan like '%pre%'
TARİH KOMUTLARI(YEAR,MONTH,DAY):Tarih tipindeki kayıt alanının içerisinden yıl,ay,gün
bileşenlerini çekmek için kullanılır
Örnek: personeller tablosundan 1950 ile 1960 yılları arasında doğan ve unvanı içinde 'pre'
bilgisi olanların personelid,ad,soyad unvanı ve doğum tarihini gösterin
select personelID, Adi, Soyadi, Unvan,DogumTarihi from Personeller where
YEAR(DogumTarihi) between '1950' and '1960' and unvan like '%pre%'
Örnek: personeller tablosundan Ocak ila Haziran ayları arasında doğanların
personelid,ad,soyad unvanı ve doğum tarihini gösterin
select personelID, Adi, Soyadi, Unvan,DogumTarihi from Personeller where
MONTH(DogumTarihi) between '01' and '06'
Örnek: personeller tablosundan doğum günleri 15 ila 31 arasında olanların
personelid,ad,soyad unvanı ve doğum tarihini gösterin
select personelID, Adi, Soyadi, Unvan,DogumTarihi from Personeller where
DAY(DogumTarihi) between '15' and '31'
Örnek: Satislar tablosunda 1996 yılının 7. ayından sonra yapılan satışları hangi personeller
yapmışsa id'ye göre tersten sıralayın
select satisID,personelID,satistarihi from Satislar where YEAR(satistarihi)>1996 and
MONTH(satistarihi)>7 order by PersonelID desc