Sorgulama dili etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Sorgulama dili etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

17 Haziran 2012 Pazar

39. SUBQUERIES-HAVING Dönüşümü

  • İlişkili alt sorgularla elde ettiğimiz sonuçları aynı zamanda HAVING işlemi ile de elde edebiliriz. Bu bize kullanım çeşitliliği sağlar.
Örnek: İnceleyeceğimiz iki örnekte aynı kategorideki ürünlerden birim fiyatı ortalama birim fiyatından yüksek olan ürünleri kategoriye göre listelenmesini istiyoruz. İlk örneğimizde herhangi bir dönüşüm yapmadan gerekli koşullarımızı sağlıyoruz.

Sorgu:
SELECT ProductName,CategoryID,UnitPrice FROM Products AS p1
    WHERE p1.UnitPrice>(SELECT AVG(UnitPrice) FROM Products AS p2 WHERE p1.CategoryId=p2.CAtegoryId)
    ORDER BY CategoryId




Örnek: Bu örneğimizde INNER JOIN ve HAVING kullanarak aynı sonucu listeliyoruz.

Sorgu:
SELECT p1.ProductName,p1.CategoryID,p1.UnitPrice FROM Products AS p1
    INNER JOIN Products AS p2 WITH (NOLOCK) ON p1.CategoryID=p2.CategoryID
    GROUP BY p1.ProductName,p1.CategoryID,p1.UnitPrice
    HAVING p1.UnitPrice>AVG(p2.UnitPrice)
    ORDER BY p1.CategoryId


Ders 40 'a geçebilirsiniz.

25 Mayıs 2012 Cuma

33. UNION Kullanımı

  • Bazen sonuç kümesinin tek olmasını isteriz. 
  • Yani birden fazla yazdıgımız SELECT sorgularından dönen sonuç listeleri sorgu sayısı kadardır. 
  • Bunu tek bir sonuç listesinde döndürmek için UNION kullanırız. 
  • Görüntülenecek olan tablolar aynı veritüründe aynı sayıda ve aynı düzendeki sütunlardan oluşmalıdır.

Örnek: Aşağıdaki örnekte Çalışanlar (Employees) tablosu ve Yön(Region) tablosu verileri birleştirilmiştir. Birinci sorgunun SELECT ifadesindeki takma adın görüntülendiğine dikkat edin.

Sorgu: 
SELECT EmployeeID,City FROM Employees UNION
SELECT RegionID,RegionDescription FROM Region



Ders 34 'e geçebilirsiniz.

15 Nisan 2012 Pazar

18. TOP n Kullanımı

  • Bazı durumlarda bir tablo veya sorgudaki tüm kayıtları görmek istemeyebiliriz. 
  • Bir sonuç kümesindeki ilk n satırı veya tüm kayıtların belirli bir yüzdesini görüntüleyebilmek için TOP n anahtar kelimesini kullanırız.
  • TOP n veya TOP n PERCENT anahtar kelimeleri ORDER BY  yan tümcesini ile birlikte kullanılmalıdır.
  •  Aksi halde listelenen verilerde WHERE ifadesi ile belirtilen koşula uyan kayıtlar rastgele dizileceğinden, istediğimiz sonucu elde edemeyebiliriz.
 Söz Dizimi:  SELECT TOP n * FROM <Tablo Adı>

Örnek:Siparişlerimizi en çok sipariş sayısından azalacak şekilde ilk 10 tanesini listeleyelim.

Sorgu: SELECT TOP 10 * FROM [order details] ORDER BY quantity DESC 


Ders 19'a Geçebilirsiniz.

17. SQL Toplam Fonksiyonları

1-) AVG Fonksiyonu
  • Aritmetiksel ortalama (avarage) hesaplamak için kullanılır.  
  • Bu hesaplama sırasında boş (NULL) değerler işleme katılmaz.  
  • AVG fonksiyonu ile koşula bağlı olarak hesaplamalarda yaptırılabilir. 
Söz dizimi: AVG (<Sutun Adı>)

Örnek: Örneğimizde 1. kategorideki ürünlerimizin birim fiyatlarını biliyoruz. İstediğimiz bu kategorideki ürünlerimizin ortalamala birim fiyatları bulmak.
Sorgu:  SELECT AVG(UnitPrice) AS 'Ortalama Birim Fiyatı' FROM Products WHERE CategoryID=1


          2-) MAX Fonksiyonu
  • Tablo içinde, belirtilen sütun (alan) içindeki en büyük değeri bulur.  
  • MAX fonksiyonu, bir sütundaki en yüksek değeri verir. Boş (NULL) değerler işleme katılmaz. 
  • MAX fonksiyonu alfabetik sıralamadaki ilk metinsel ifadeyi de bulmamızı sağlar. 
Söz dizimi: MAX (<Sutun Adı>)

Örnek: Bu örneğimizde 1. kategorideki birim fiyatı en yüksek olan ürünümüzü buluyoruz.
Sorgu: SELECT MAX(UnitPrice) AS 'En Düşük Fiyat' FROM Products WHERE CategoryID=1 


3-) MIN Fonksiyonu
  • Tablo içinde belirtilen sütun (alan) içindeki en küçük değeri bulur. 
  • MIN fonksiyonu bir sütundaki kayıtlardanki en küçük değeri verir. Boş (NULL) değerler işleme katılmaz.  
  • MIN fonksiyonu alfabetik sıralamadaki son metinsel ifadeyi de bulmamızı sağlar.
Söz dizimi: MIN (<Sutun Adı>)

Örnek: Bu örneğimizde 1. kategorideki birim fiyatı en düşük olan ürünümüzü buluyoruz.
Sorgu: SELECT MIN(UnitPrice) AS 'En Yüksek Fiyat' FROM Products WHERE CategoryID=1


4-) SUM Fonksiyonu
  • Fonksiyonla belirtilen sütun ile ilişkili olarak toplama işlemini yapar. 
  • SUM fonksiyonu belirtilen sütundaki sayısal değerlerin bir toplamını geri döndürür. 
Söz dizimi: SUM (<Sutun Adı>) 

Örnek: Bu örneğimizde de 1.kategorideki ürünlerimizin toplam birim fiyatlarını buluyoruz.
Sorgu: SELECT SUM(UnitPrice) AS 'Toplam Fiyat' FROM Products WHERE CategoryID=1


       5-) COUNT Fonksiyonu

Ders-18'e geçebilirsiniz.

25 Mart 2012 Pazar

11. NULL Değerler

  • Veri girişi esnasında, alana herhangi bir değer yazılmazsa ve alan için herhangi bir varsayılan (default) değer atanmamışsa alanda boş (null) değeri saklanır.  
  • Null değeri boşluk (‘ ‘) veya sıfır (0) değerinden farklıdır. 
  • Belirli bir alanına hiçbir değer girilmemiş kayıtları listelemek için IS NULL arama kriteri kullanılır. 
  • Bir tablodaki hangi alanların varsayılan değerleri olacağına veya alanın NULL değere izin verip vermediğine, tablo tasarımı sırasında karar verilir. 
  • Eğer boş olmayan satırları listelemek gerektiğinde IS NOT NULL arama kriterini kullanılır. 
(Örneğimizde fax numaraları girilmemiş ve default değer atanmamış firmaları sorgulayalım.)

Sorgu:  SELECT CompanyName,City,Fax FROM Suppliers WHERE Fax IS NULL





(Fax numaraları girilmiş firmaları sorgulayalım.)

Sorgu: SELECT CompanyName,City,Fax FROM Suppliers WHERE Fax IS NOT NULL




Ders-12' ye geçebilirsiniz.

17 Mart 2012 Cumartesi

9. BETWEEN ...AND... Kullanımı

  • BETWEEN ... AND..... operatörü 2 değer ile belirtilen aralığı sınar. Bu değerler sayı, metin veya tarih olabilir. Aralık kriteri için 2 değerde dahildir.
Söz dizimi:     SELECT <sütun adı> FROM <tablo adı>
                        WHERE <sütun adı> BETWEEN <değer 1> AND <değer 2>

(1996-07-16 tarihinde sipariş verenler ve siparişin gönderildiği yeri döndüren örneğimiz;)
Sorgu: SELECT CustomerID,ShipCity FROM ORDERS WHERE ShippedDate='1996-07-16'


(Yeni öğrendiğimiz BETWEEN ile daha ayrıntılı sorgumuzu yapabiliriz. Örneğin gönderim tarihini hatırlayamadığımızı düşünürsek BETWEEN....AND.... kullanmak en mantıklısı olucak.)

Sorgu: SELECT CustomerID,ShipCity,ShippedDate FROM Orders WHERE ShippedDate BETWEEN   '1996-07-01' AND '1996-08-01'

Not: Dikkat etmeniz gereken aralık değerlerinin başlangıç ve bitiş tarihlerini de kapsadığıdır. Bu aynen sayı aralıklı sorgularda da geçerli.

Ders-10'a geçebilirsiniz.


13 Mart 2012 Salı

8. Mantıksal Operatörler

  • AND , OR , NOT mantıksal operatörlerinin yardımıyla birden fazla koşulun gerçekleşimini sağlayarak karmaşık veya birleşik koşullu listelemeler yapabiliriz. 
  • BETWEEN ifadesi de AND operatörü ile aynı işlemleri gerçekleştirebilmektedir. 
  • AND operatörünün anlamı, birleştirilen koşulların tümüne uyan kayıtları bize listeler. 
  • OR operatörünün anlamı, tanımladığımız koşullardan en az bir tanesine uyan kayıtları listeler. 
  • NOT operatörü ise kendisinden sonra gelen koşulu sağlamayan kayıtları listeler. 
  • Parantez kullanımı ikiden fazla koşul olması durumunda koşulların öncelik sırasını belirler.
  • Parantez kullanılmaması durumunda SQL önce NOT, sonra AND ve en son da OR mantıksal operatörünü işler.

Söz Dizimi:      SELECT <sütun adı> FROM <tablo adı>
                        WHERE <koşul> AND <koşul>[AND <koşul>...]

(Öreğimizde Japonya'daki veya Londra'daki üreticileri listelemek istediğimizde;)
Sorgu: SELECT CompanyName,ContactName,City,Country FROM Suppliers WHERE 
                    Country='Japan'  OR  City='London'




(3 veya 4. kategorideki birim fiyatı 10$'dan yüksek ürünleri listelemek istersek; )
Sorgu: SELECT * FROM Products WHERE (CategoryID=3 OR CategoryID=4) AND UnitPrice>10


Ders-9 'a  geçebilirsiniz.