ders notu etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
ders notu etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

23 Mart 2013 Cumartesi

MSSQL de Temp tabloyu güncellemek

  • Birleştirdiğimiz tablolarımızı istedğimiz gibi kullanabiliriz.
  • Bu örneğimizde tablomuzu temp table yapıp, üzerinde değişiklikler yapacağız.
  • NORTHWIND database ini kullandığımızı unutmayalım.
ÖRNEK:

SELECT O.OrderId,O.CustomerId,O.EmployeeId,E.FirstName,E.LastName
INTO #Temp
FROM NORTHWIND.dbo.Orders AS O WITH(NOLOCK)
INNER JOIN NORTHWIND.dbo.Employees AS E WITH(NOLOCK) ON E.EmployeeId=O.EmployeeId
WHERE O.ShippedDate='1996-07-16 00:00:00.000'
SELECT * FROM #Temp
UPDATE #Temp SET FirstName='Ahmet',LastName='Ates' WHERE EmployeeId=5
SELECT * FROM #Temp

AÇIKLAMA: Bu örneğimizde joinlediğimiz tabloların sonucu temp tabloya yazdı ve bunun üzerinde değişiklikler yaparak son halini gösterdik.


14 Ekim 2012 Pazar

51. SQL TARİH VE ZAMAN FONKSİYONLARI

  • Tarih ve zaman değerleri üzerinde işlemler yapmamızı sağlayan fonksiyoları içerir.

1-)GETDATE() Fonksiyonu
-O an ki tarih ve saat değerini dönüdürür.

Örnek: SELECT GETDATE()


2-)DATEADD() Fonksiyonu
-Verilen tarihi istenilen sayıda tarih bilgilerinin eklemesini yapar.

-Bu fonksiyonda bilmemiz gereken;
dd(gün)
mm(ay)
yy(yıl) anlamına gelmektedir.

Örnek 1: SELECT DATEADD(dd,60,'15.09.2012')
Açıklama: Belirtilen tarihe 60 gün ekleyen fonksiyon.
//Sonuç .14.11.2012

Örnek 2:
SELECT DATEADD(mm,2,'15.09.2012')
Açıklama: Belirtilen tarihe 2 ay ekleyen fonksiyon.
//Sonuç 15.11.2012

Örnek 3: SELECT DATEADD(yy,3,'15.09.2012')
Açıklama: Belirtilen tarihe 3 yıl ekleyen fonksiyon.
//Sonuç 15.09.2015

3-)DATEDIFF() Fonksiyonu
-Belirtilen iki tarih arasındaki farkı istenilen cinste verir.

Örnek: SELECT DATEDIFF(dd,'10.10.2011','11.11.2012')
Açıklama:İki tarih arasındaki gün farkını verir.
NOT:Ayrıca;
Hafta için 'wk'
Gün için 'dd'
Saat için 'hh'
Dakika için 'mi'
Saniye için 'ss'



4-)DATEPART() Fonksiyonu
-Tarihle ilgili sayısal bilgilerin alınmasını sağlar.

Örnek:
SELECT DATEPART(dd,'13.12.2012')

SELECT DATEPART(mm,'13.12.2012')

SELECT DATEPART(yy,'13.12.2012')



Ders 52'ye geçebilirsiniz.


21 Temmuz 2012 Cumartesi

45. DELETE Kullanımı

  • DELETE ifadesi tablomuzdaki bir veya birden fazla kayıdın silinmesini sağlar. 
  • Eğer koşul belirtmessek bütün kayıtları tablomuzdan siler. O yüzden DELETE ifadesini kullanırken dikkat etmeli ve BEGIN TRANSACTİON ..yapısını kullanmamız önem arz etmektedir.
SÖZ DİZİMİ: DELETE FROM Table
                       WHERE <Sütun_Adı>=<Koşul_Değeri>

ÖRNEK: Sorgumuzda Employees tablumuzdaki bir kayıdı silmek isteyelim.

SORGU: SELECT * FROM Employees
                DELETE FROM Employees WHERE EmployeeID=10
                SELECT * FROM Employees

Ders 46'ya Geçebilirsiniz.

4 Haziran 2012 Pazartesi

38. SUBQUERIES - JOIN Dönüşümü

  • Genel olarak ilişkili alt sorguları birer JOIN ifadesi yerine de kullanabiliriz. 
  • Aralarında sadece kullanım olarak farklılık bulunmaktadır. 
  • Sonuç olarak ise iki sorgudan da aynı sonucu elde ederiz.
Örnek: İlk sorgumuzda çalışanların hitap şekillerini 2 sorguda birbirine eşit olmayanların karşılaştırmasını yaptık. Yani IN ile bir liste alıp bunu kendi içinde eşit olmayanlarla karşılaştırdık.

Sorgu:
SELECT  DISTINCT E1.TitleOfCourtesy FROM Employees AS E1
WHERE E1.City IN
(SELECT E2.City FROM Employees AS E2 WHERE E1.TitleOfCourtesy<>E2.TitleOfCourtesy)



Örnek: Bu sorgumuzda üstteki örneğin JOIN işlemiyle yapılmış halidir.

Sorgu:
SELECT DISTINCT E1.TitleOfCourtesy FROM Employees AS E1
INNER JOIN Employees AS E2 WITH (NOLOCK) ON E1.City=E2.City
WHERE E1.TitleOfCourtesy<>E2.TitleOfCourtesy



Ders39'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.

17 Mayıs 2012 Perşembe

29. OUTER JOIN-RIGHT JOIN Kullanımı

  • Birleştirdiğimiz ikinci tablodaki bütün kayıtları sonuç listesinde görmek istediğimiz zaman RIGHT JOIN... ON... işlemini kullanırız. 
  • Böyle bir durumda ise ilk tabloda eşleşmeyen kayıtlar NULL(boş) olarak döner. 
  • Ayrıca birleştirdiğimiz tabloların yazım sırasını değiştirirsek LEFT JOIN ... ON .... işlemiyle aynı sonucu elde etmiş oluruz.

Söz dizimi:
SELECT <sütun ad(lar)ı>
FROM <ilk_tablo>
RIGHT JOIN <ikinci_tablo>
ON <birinci_tablo>.<anahtar alan> = <ikinci_tablo>.<anahtar_alan>

Örnek: Aşağıdaki örnekte tüm müşteriler ve verdikleri siparişler listelenmiştir.Böylece hem müşteri üzerinden her bir müşterinin verdiği siparişleri ve ayrıntılı müşteri bilgilerine ulaşıyoruz.Ayrıca temel bilgi olarak sirapiş tablosuna müşteri tablosunu bağladığımızı siparişlere göre eşleşen müşteri bilgilerinin geldiğini görüyoruz.
Sorgu:
SELECT * FROM Orders AS O
RIGHT OUTER JOIN Customers AS C ON C.CustomerId=O.CustomerID


Ders 30 ' a geçebilirsiniz.



14 Mayıs 2012 Pazartesi

28. OUTER JOIN-LEFT JOIN Kullanımı

  • LEFT veya RIGHT OUTER JOIN ifadeleri ilişkili alanda birbiriyle eşleşenlerin yanında eşleşmeyen kayıtları da listeler. 
  • JOIN koşuluna uymayan satılar NULL(boş) değer olarak görüntülenirler. 

LEFT JOIN

  • LEFT OUTER JOIN ile yazımdaki ilk tablonun tüm satırları listelenir ve diğer tablo ile eşleşmeyen alanlar NULL(boş) değer ile gösterilir. 
  • Eğer tabloların sorgudaki sırası değişirse aynı sonucu elde edebilmek için RIGHT OUTER JOIN kullanılır.
Söz dizimi:     SELECT <sütun_ad(lar)ı> FROM <ilk_tablo>
LEFT JOIN <ikinci_tablo>
ON <ilk_tablo>.<anahtar_alan> = <ikinci_tablo>.<anahtar_alan>
ÖRNEK: Aşağıdaki sorgunun SELECT kısmında iki sütun tekbir sütun adı altında birleştirilmiştir. Çalıştırıldığında çalışanın tam adı ve müşterilerden aldığı siparişler ve tarihleri listelenecektir.
SORGU:
SELECT Employees.FirstName+' '+Employees.LastName AS Name,OrderID,OrderDate
FROM Employees
LEFT JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID



Ders 29'a geçebilirsiniz.

13 Mayıs 2012 Pazar

27. INNER JOIN Kullanımı

  • SQL de varsayılan (default) olarak kullanılan tablolaları bağlama işlemidir. 
  • Bağlanan tablolarda sadece ilişkili kayıtlar listelenir.
Örnek: Sorgumuzda hangi firmadan hangi ürünü aldığımızı bulmak istiyoruz. Bunun için iki farklı tabloyu birleştirip istediklerimiz SELECT ediyoruz. SELECT * FROM... yaparak da listenen tüm verileri görebilir, istediklerimizi alabiliriz. Diğer bir konuda AS kullanma sebebim daha büyük sorgularla uğraştığımızda bilmeniz gereken bir spde (Stored Procedure) bir tabloya 2 veya daha fazla sorgu cekmeniz gerekebilir. Bunun için ayrı ayrı nesne gibi düşünüp (p,s) gibi üzerinde işlemler yapmak size daha anlaşılabilirlik ve kolaylık sağlayacaktır.

Sorgu:
SELECT ProductName,CompanyName
FROM
Products AS p
INNER JOIN
Suppliers  AS s ON s.Supplierid=p.Supplierid

Ders 28'e geçebilirsiniz.





6 Mayıs 2012 Pazar

25. COMPUTE ve COMPUTE BY Kullanımı

  • COMPUTE ifadesi tüm sonuç listemizi bize gösterir. 
  • Farklı olarak tek sorguda 2 tane sonuç listesi bize döndürür. 2.liste detay listesidir. 
  • Dikkat etmemiz gereken COMPUTE ile kullandığımız sütun SELECT ifadesinde yer almalıdır. 
  • COMPUTE anahtar sözcüğü sorgumuzdaki sütunlara toplam fonksiyonları uygulamamıza izin verir.
  • COMPUTE BY ile detaylı gruplandırma yapılabilir.
Örnek: Sorgumuzda ürün idsi 3 den küçükleri listeliyoruz. Ayrıntı olarak 2. sonuç kümemizde ürün id si 1 ve 2 olan ürünlerimizin sipariş adetine bakıyoruz.
Sorgu:
SELECT ProductId, OrderId, Quantity
FROM [Order Details]
WHERE ProductId<3
ORDER BY ProductId, OrderId
COMPUTE SUM(Quantity)






Örnek:  Bu sorgumuzda COMPUTE BY nasıl kullanılır onu görüyoruz. Ara toplamlara girerek ayrıntılı sorgulama yapıyoruz. Bu sorgumuzda amacımız hangi ürün id den ne kadar sipariş edilmiş onu öğrenelim.
Sorgu:
SELECT ProductId, OrderId, Quantity
FROM [Order Details]
WHERE ProductId<3
ORDER BY ProductId, OrderId
COMPUTE SUM(Quantity) BY ProductId


Ders 26 'ya geçebilirsiniz.

22 Nisan 2012 Pazar

22. WITH ROLLUP Kullanımı

  • GROUP BY ile bir toplama işlevi kullandığımızda her farklı değer için sadece sonuç satırı görüntülenir. 
  • Gruplandırdığımız değerlerin detaylarını farklı yantümceler kullanarak görüntüleyebiliriz. 
  • WITH ROLLUP ile daha detaylı sonuç listesi oluştururuz.
  • Ayrıntılı bilgi ise GROUP BY ile kullanılan CUBE ve ROLLUP komutları bize ara toplamlar vermektedir. Örneğimizde gördüğümüz gibi null,null olarak bütün  değerler ara toplam olarak verilmiş, sonra ProductName sırasında ara toplamlar verilmiştir.
Örnek: Daha detaylı sonuç listemizde GROUP BY değerlerine ekleyerek bunu gerçekleştiriyoruz. İlerleyen derslerde göreceğimiz SQL LEN() fonksiyonunu burda görmüş oluyoruz. Ürünismi(ProductName) uzunluğu 8'den küçük olması koşulunu ekliyoruz. Dikkat etmeniz gereken GROUP BY değerlerine eklemediğiniz sütünu SELECT e yazamazsınız.
Sorgu:
SELECT ProductID,ProductName,CategoryID, SUM(UnitsInStock) AS 'Miktar'
FROM Products
WHERE LEN(ProductName)<8
GROUP BY ProductID,ProductName,CategoryId 
WITH ROLLUP ORDER BY ProductID,ProductName,CategoryId 




Ders 23' e geçebilirsiniz.

21 Nisan 2012 Cumartesi

21. HAVING Kullanımı

  • Toplam fonksiyonlarını kullanırken kısıtlama yapacağımız zaman WHERE özelliğini kullanamayız. 
  • HAVING yantümcesi, GROUP BY ile elde edilecek satırları kısıtlamak için kullanılır.
  •  İşlev olarak WHERE yantümcesi gibi çalışır fakat WHERE yantümcesi gruplama işlemlerinden önce, HAVING yantümcesi ise GROUP BY'dan sonra uygulanır.
Örnek: Dikkat edilmesi gereken HAVING özelliğinin gruplamadan sonra kullanıldığıdır.WHERE özelliğini FROM dan sonra normal olarak kullanabiliriz. Bu sorguda stoklarımızda 500'den az kalan ürün kategorilerimizi listeliyoruz.

Sorgu: SELECT CategoryID, SUM(UnitsInStock) AS 'Miktar' FROM Products GROUP BY CategoryId HAVING SUM(UnitsInStock)<500


Ders 22'ye geçebilirsiniz.

20. GROUP BY Kullanımı

  • DISTINCT anahtar kelimesi yanlızca benzersiz satırları listelemek için kullanırız.
  • Fakat GROUP BY kelimesi belirtilen sütun yada sütunlardaki aynı değere sahip satırları tek bir satırda birleştirmeyi sağlar.
  • GROUP BY genellikle toplam fonksiyonlarıyla (Aggregate Function) kullanılır. 
  • GROUP BY sorgularında kullanılan en yaygın toplama fonksiyonları MIN, MAX, SUM ve COUNT'dır.
  • En önemlisi GROUP BY ile belirtilen sütunlar SELECT ifadesinde de yeralmalıdır.
Örnek: Aşağıdaki ve Resimdeki örneğimizde ne demek istediğimi daha iyi anlayacaksınız. Önce genel bir sorgu ile tablomuzu görelim. Sonra ne istediğimizi düşünüp ona göre sorgumuzu yazalım. Hangi kategoride stokta ne kadar ürünümüz kaldığını bilmek istiyorum. Dikkat etmeniz gereken GROUP BY ile belirlediğiniz kriteri SELECT e de yazmanız aksi takdirde hata alırsınız.

Sorgu: SELECT CategoryID, SUM(UnitsInStock) AS 'Miktar' FROM Products GROUP BY CategoryId


Ders 21'e geçebilirsiniz.

15 Nisan 2012 Pazar

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.

8 Nisan 2012 Pazar

16. AS Kullanımı (Tablo ve Sütunların Yeniden Adlandırılması)


  • Sonuç kümelerindeki sütun adları varsayılan olarak tablodaki alan adlarıdır. 
  • AS yardımcı kelimesini kullanarak sütunları farklı adlarla görüntüleyebiliriz.
  • Aynı şekilde uzun tablo isimlerini de kullanımı daha kolay olacak şekilde değiştirebiliriz.

Söz dizimi: SELECT <sütun adı> AS <yeni ad> FROM <tablo adı> AS <yeni tablo adı>

Örnek: Yön açıklamasını hem istedigimiz dilde hem de daha kısa bir açıklamayla gösterdik.

Sorgu: SELECT  RegionDescription AS [Yön] FROM Region

Ders-17 'ye geçebilirsiniz.

13. SQL ORDER BY


  • ORDER BY yantümcesi satırları, belirtilen sütun(lar)a göre sıralamak için kullanılır.
  • ORDER BY ile hangi sütuna göre sıralayacağımızı ve sıralamanın artan veya azalan şekilde yapılacağını belirleriz. 
  • Sıralama yönü belirtilmez ise SQL veriyi artan şekilde sıralar.
  • Sıralama yapılacak alanlar SELECT ifadesinde yer almak zorunda değildir.
Söz dizimi:    
            SELECT <sütun ad(lar)ı> FROM <tablo adı>
            ORDER BY <sütun adı><sıralama yönü>,<sütun adı><sıralama yönü>

(Bu örneğimizde CategoryID alanına göre artan ,bu CategoryID nin kendi içinde aynı değerler arasındada Unitprice değerini azalan olarak sıralandığını göreceğiz.) 

Sorgu: SELECT ProductID, ProductName,
CategoryID, UnitPrice
FROM Products
ORDER BY CategoryID ASC, UnitPrice DESC
 



Ders-14 'e geçebilirsiniz.

3 Nisan 2012 Salı

12. SQL SELECT DISTINCT


  • DISTINCT kelimesi bir sütundaki benzersiz kayıtları listeler. 
  • Bir sütunda belirli bir kelime iki veya daha fazla sayıda tekrarlanıyor olabilir. 
  • DISTINCT anahtar kelimesi ile her tekrarlanan kelime sadece bir kez listelenir. 

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

(Hangi ülkelerdeki üreticilerle çalıştığımızı görmek isteyelim. Bu durumda tek bir ülkeden birden fazla firma ile çalışıyor olabiliriz.)
Sorgu: SELECT DISTINCT Country FROM Suppliers


Ders 13' 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.