Merhaba arkadaşlar, bu yazıda Select ifadelerini anlatmaya calışacağım. Anlatım az örnek fazla olacaktır. Kullanarak ve görerek öğreneceğiz.
Select ifadesi bir veriyi veritabanından ayıklama ve seçmek için kullanılan komuttur. Geriye sonuç dediğimiz
tablo vari veriler döndürür. Bu verileri management studio’da yine tablo şeklinde görülür.
select [kolon isimleri] from [tablo adi]
Sorgularımızı New Query diye adlandırdığımız yeni bir pencerede yazacağız. Bu sayfayı açmak için File menüsünün hemen altındaki New Query butonuna tıklıyoruz.
use Northwind
bu sorgu ile veritabanını seçmiş oluyoruz. Execute butonuna veya F5’e tıklayarak işlemleri çalıştırabiliriz. Eğer ki birden fazla sorgu var ise her bir kodu sırasıyla çalıştırır. Sadece sonuncu sorguyu çalıştırmak istiyorsak eğer, çalıştırmak istediğimiz sorguyu seçmemiz gerekir. Böylece sadece seçili olan sorgu çalışır.
Aşağıdaki sorgu Products(ürün) Tablosundan ProductName(ürün adı),UnitPrice(birim fiyatı),UnitsInStock(Stoktaki birim) bilgilerini getirir:
select ProductName, Unitprice, UnitsInStock from Products
Sorgu sonucu aşağıdaki şekildedir.
Kategori ismi ve açıklamasını kategori tablosundan getiren sorgu:
select c.CategoryName as KategoriAdi, c.[Description] as Aciklama from Categories as c
Çalışanları Adı,soyadi,title ve telefon numarasına göre sıralayınız:
select e.FirstName, e.LastName, e.Title, e.HomePhone from Employees as e
“as e ” deyimi ile Employees(çalışan) tablosuna kısa bir ad verdik.
Elimizdeki ürünlerin her birinin stok maliyetlerini listeleyiniz:
select p.ProductName as [Urun Adi], p.UnitPrice*p.UnitsInStock as [Stoktaki Toplam Ucret] from Products as p
Where Deyimi : Sorgu içerisinde bazı elemanları filtrelemek isteyebiliriz. Bu durumda where satırı ile tablodaki her satıra koşul uygulanması sağlanabilir.
Fiyati 50’den büyük ürünler:
select * from Products as p where p.UnitPrice > 50
Stoğu 20den az olan ve fiyatı 50den büyük olan ürünler:
select * from Products as p where p.UnitsInStock < 20 and p.UnitPrice > 50
Stoğu 20 fazla 50den az olan ürünler:
select * from Products as p where p.UnitsInStock > 20 and p.UnitsInStock < 50
Between where deyiminden sonra kullanlır, iki değer arasındakileri getirmek için kullanılır.
Fiyati 20 ile 50 arasında olan ürünler:
select * from Products as p where p.UnitPrice between 20 and 50
IN: verilen değerlerden herhangi birine eşleşen kayıtları getirir.
Fiyati 30,40,21,31,72 olan ürünleri getiriniz:
select * from Products as p where p.UnitPrice in(30,40,21,31,72)
Stoğu 0,3,6,9,11 olan veya fiyati 14,18,25 olan ürünleri listele:
select * from Products as p where p.UnitsInStock in(0,3,6,9,11) or p.UnitPrice in(14,18,25)
Like: metnin içerisinde arama yapmak için kullanılır.
like içinde iki özel kullanım şekli vardır. bunlar “%” ve “_” işaretleridir. “%” sınırsız karakteri işaret eder.
“_” tek karakteri işaret eder. Örneğin “A%” a dan sonra ne gelirse gelsin kabul eder. “_A” ikinci harfi a olanları getirir.
İsmi a ile başlayan çalışanları listeleyin:
select * from Employees as e where e.FirstName like 'A%'
İsmi 5 harfli olup son harfi a olanlar:
select * from Employees as e where e.FirstName like '____A'
İsminin içinde önce a sonra i harfleri geçen ürünleri listeleyiniz:
select * from Products as p where p.ProductName like '%a%i%'
Şişede satılan ürünleri listeleyiniz:
select * from Products as p where p.QuantityPerUnit like '%bottle%'
Not deyimi : sorgu sonucunu tesine çevirir.Koşulda belli bir kesimi seçiyor ise not tam tersini seçtirir.
Şişede satılmayan ürünleri listeleyiniz:
select * from Products as p where p.QuantityPerUnit not like '%bottle%'
Top Deyimi: sorgu sonucunun tamamına ihtiyacımız yoksa baştan 10 tane 20 tane gibi belli bir sayıda eleman seçmek için kullanılır.
select top(10) * from Products
Distinc deyimi : Distinct tekrarlayan verileri engeller.seçilen kolonlara göre aynı verilerin ikikere listelenmesini engeller.
Tüm satışları getir:
select * from [Order Details]
Yaptığımızda productID si benzer olan bir çok sayış yapıldığını göreceksiniz.
Şu ana kadar hangi ürünlerden satılmıştır?
select distinct o.ProductID from [Order Details] as o
Bu şekilde tekrarlanan verilerin görünmesini engelleyebiliriz.
ORDER BY : sıralama işlemi yapar. sorgu sonucunun belirttiğimiz bir kritere göre artan veya azalan sıraya dizer.
söz diziminin en sonuna yazılır.eğer kolon isiminden sonra sıralama şekli verilmemişse asc yani artan sıralama kabul edilir.Azalan sıralama yapmak için kolon isminden sonra desc yazılır.
Aşağıdaki sorgu yazıldığında düzensiz bir halde listelenecektir.
select * from Products as p order by p.ProductName
Aşağıdaki sorguda ise ilk olarak ProductID e göre artan sıralama,içerideki gruplarda UnitPrice(birim fiyat) lara göre azalan bir sıralama ile listelenecektir. Eğer ki bu ikisinden aynı olanlar varsa da onları da quantity(adet) e göre artan bir şekilde sıralayacaktır:
select * from [Order Details] as o order by o.ProductID, o.UnitPrice desc, o.Quantity asc
Satışı en fazla olan satış hangisidir:
select top(3) with ties o.Quantity*o.UnitPrice as Cirosu, o.OrderID from [Order Details] as o order by Cirosu desc
Select ifadesi ile ilgili anlatacaklarım bu kadar. Kaçırdığım bir kısım olursa belirtirseniz sevinirim 🙂
Bu yazım da buraya kadar. Bir sonraki yazımda görüşmek dileğiyle.