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

2 Aralık 2012 Pazar

T-SQL'de sp_help System Prosedürünün Kullanımı

  • Genel olarak sistemde bulunan bir tablo hakkında ayrıntılı bilgi almamızı sağlar.
SÖZ DİZİMİ:

EXEC sp_help '@objname'

A. Bütün nesneler hakkında bilgi almak için;
  • Animal veritabanındaki herbir objenin bilgilerini listeler.
USE Animals

exec sp_help


B. İstenilen Obje hakkında bilgi almak için;

Örneğimiz Animals veritabanındaki Kuslar tablosu ile ilgili bilgileri getirir.

USE Animals

exec sp_help 'Kuslar'


NOT:F1 tuşuyla bunu hazır olarak kullanabilirsiniz.

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

44. UPDATE Kullanımı

  • UPDATE deyimi tablomuzda bulunan verileri güncellemek, değiştirmek için kullanılır.
SÖZ DİZİMİ:
         UPDATE <tablo adı>
         SET <sütun adı>= <yeni değer>
         WHERE <sütun adı> = <eski değer> 

ÖRNEK: Sorgumuzda Çalışan tablomuzda bir kaydımızı güncellemek isteyelim. 'Margaret' isimli çalışanın terfi aldığını düşünürsek gerekli güncellemeyi yapalım. 2 tane aynı SELECT sorgusunu farklı görmek için koydum.

SORGU:SELECT * FROM Employees
   UPDATE Employees SET Title='Sales Manager' WHERE EmployeeID=4
   SELECT * FROM Employees



Ders 45' e Geçebilirsiniz.


18 Temmuz 2012 Çarşamba

43.INSERT INTO... VALUES Kullanımı

  • INSERT INTO Deyimi bir tabloya yeni kayıt eklemek için kullanılır.
  • Önce gördüğümüz INSERT Deyiminden farklı olarak sadece istediğimiz sütunlara da kayıt işlemi yapabiliriz.
  • 2 farklı kullanım şekli vardır.
1-) Söz Dizimi 

 INSERT INTO tablo_ismi (kolon1, kolon2, kolon3,...)  
VALUES (deger1, deger2, deger3,...)

2-) Söz Dizimi

INSERT INTO tablo_ismi  
VALUES (deger1, deger2, deger3,...)

ÖRNEK: Çalışan tablomuza sadece isim ve soyad bilgilerini girerek yeni bir kayıt ekleyebiliriz.

SORGU:INSERT INTO Employees(LastName,FirstName)
               VALUES ('Cücü','Cüneyt')


Ders 44'e 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.

26 Mayıs 2012 Cumartesi

36. SUBQUERIES-Sonuç Listesinin Deyim Olarak Kullanılması

  • Sorgularımızda başka bir sorguyu deyim yani yeni bir parametre olarak kullanabiliriz. 
  • Bu amaç için kullanacağımız sorgu ya tek satır sonuç döndürmeli yada tek bir sütun değer listesi döndürmeli.
  • Bir değerler listesi geri döndüren sorgular IN anahtar kelimesi içeren WHERE yantümcesi yerine kullanılabilir. 
Örnek: Sorgumuzda ortalamayı bulup satılan ürünlerimiz ayrıntılı birim fiyatlarını ve bu birim fiyatlarının genel ürün potansiyelinde ortalama ürün fiyatına oranla durumunu göstermekte. Burda alt sorguları kullanarak daha anlaşılabilir sorgu yazabiliriz.

Sorgu: 
SELECT ProductName,UnitPrice,UnitsinStock,
(SELECT AVG(UnitPrice) FROM Products) AS Average,
UnitPrice-(SELECT AVG(UnitPrice) FROM Products) AS Difference
FROM Products 



Ders 37' geçebilirsiniz.

25 Mayıs 2012 Cuma

34. SUBQUERIES (ALT SORGULAR)

  • Kısaca Alt Sorgu bir sorgu içine gömülmüş SELECT sorgularıdır. 
  • Çoğu durumlarda  Alt Sorguyu JOIN ifadelerine dönüştürebiliriz. 
  • Genelde Büyük sorgulardaki karmaşıklığı azaltmak, anlaşılabilirliği arttırmak için kullanılırlar. 
  • Mantık olarak burda yaptığımız bir sorgu sonucu gelen sonuç listesine dayalı yeni sorgular çalıştırmak için kullanırız. 
  • Bilmeniz gereken Alt Sorgularda JOIN işlemi daha hızlı işlemektedir. 
  • Ayrıca daha karmaşık SP'ler yazmaya başladığınızda bunu daha iyi anlayacaksınız. 
  • Scriptlerin anlaşılabilirliği, yazılımcıdan bağımısızlığı ne kadar iyi sağlanırsa yazdığınız sorgular o kadar uzun ömürlü ve kullanılabilir olur. 
  • Kural olarak ise Alt Sorguları parantez içinde yazmalıyız.

İlgili Konular;

35. SUBQUERIES-Sonuç Listesinin Tablo Olarak Kullanılması 
36. SUBQUERIES-Sonuç Listesinin Deyim Olarak Kullanılması 
37. SUBQUERIES-İlişkili Alt Sorgular 
38. ALT SORGULAR - JOIN Dönüşümü
39. SUBQUERIES-HAVING Dönüşümü 
40.SUBQUERİES- EXISTS ve NOT EXISTS Kullanımı

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.

22 Mayıs 2012 Salı

32. SELF-JOINS Kullanımı

  • Bir tablonun kendisiyle JOIN işlemine tutulmasına SELF-JOIN işlemi denir. 
  • Tablodaki aynı değerleri içeren farklı kayıtlar mevcutsa bunları listeleyebilmek için kendisiyle birleştiririz.  
  • Bir tablo içinde bulunan satırlar arasında referans ilişkisi varsa, o tablo için farklı takma adlar (alias) kullanılarak JOIN sorguları gerçekleştirilebilir. 
  • Çok kullanılan bir yöntem değildir.
 Örnek: Aşağıdaki sorgumuzda aynı tabloyu kendisiyle birleştirdik. Daha çok SELF-JOIN işlemini aynı değerleri olan farklı kayıtlar üzerinde işlem yaparken kullanmalıyız. Örnekte basitce aynı tablo içi kıyaslama yaptık. SicilNo olarak her çalışanın altında olan çalışanları listeledik.

Sorgu: 
SELECT a.employeeid AS SicilNo,a.lastname,a.title
,b.employeeid AS AltSicilNo, b.lastname ,b.title
FROM employees AS a
INNER JOIN employees AS b
ON a.title=b.title
WHERE a.employeeid < b.employeeid
ORDER BY a.employeeid



Ders 33'e geçebilirsiniz.

20 Mayıs 2012 Pazar

30. OUTER JOIN- CROSS JOIN Kullanımı

  • CROSS JOIN işlemiyle bağladığımız bütün tablolar herhangi bir kısıtlamaya uğramadan olası tüm eşleşmeler sonuç listesinde gösterilir. 
  • Belirli bir ortak alan belirtmeye gerek yoktur.
Örnek: Sorgumuzda 8 tane kategori çeşidi bulunmaktadır. CROSS JOIN yaptığımızda Region tablosuna ait 4 kayıt herbir Çeşit kayıdına bağlanır. Yani 32 tane kayıt listelenir. Çünkü tablolar arası herhangi bir ortak eşleşme tanımlanmamıştır.

Sorgu: SELECT * FROM Categories CROSS JOIN Region


Ders 31'e geçebilirsiniz.

12 Mayıs 2012 Cumartesi

26. SQL JOIN İşlemleri

  • Bundan önceki derslerimizde hep tek tablo üzerinde çalıştık. 
  • Bazı durumlarda daha anlamlı ve geniş sonuç kümeleri elde edebilmek için birden fazla tablonun verilerine ihtiyacımız olabilir. 
  • Bunun için sorgularımızda iki farklı anahtar kelime daha kullanırız. 
  • Bu anahtar kelimeler JOIN ve ON ifadeleridir. 
  • JOIN ifadesi ile hangi tabloları ve nasıl birleştireceğimizi belirtiriz. 
  • ON ifadesi ile de birleştireceğimiz tabloları hangi alanlar üzerinden bağlayacağımıza karar veririz.
  •  Genelde tablolar Birincil anahtar (Primary Key) ve Yabancı anahtar (Foreign key) üzerinden birleştirilsede diğer alanlar üzerindende birleştirilebilir. Sadece bu alanların aynı türden veri içerdiğinden emin olmanız yeterlidir. 
  • Birincil anahtar (Primary Key) her kayıt için benzersiz (unique) bir değer taşıyan alandır. Örneğin Kişi bilgilerinin tutulduğu bir tabloda TC Kimlik No herkesin farklı olduğu için Primary key olarak kullanılabilir. TC Kimlik No herkesin farklı olduğu için bütün bilgiler bu no üzerinden farklı tablolarda bilgiler tutulabilir.
Ders 27'ye 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.

20 Nisan 2012 Cuma

19. WITH TIES Kullanımı

  • WITH TIES yantümcesi, ORDER BY ile sıralanan sonuç kümesinde son kayıt ile aynı değerde olan kayıtların da listelenmesini sağlar. 
  • Bu durumda sonuç kümeniz belirtiğiniz n sayısından daha fazla olabilir.
  •  WITH TIES yantümcesini sadece ORDER BY yantümcesi ile kullanabilirsiniz.
(İki sorgumuzu dikkatlice inceleyelim ve sonuçlarına bakalım. Resimde daha ayrıntılı görebilirsiniz.) 

Örnek: Normal TOP n ile çalıştırdığımız sorgularımızı eğer WITH TIES ile çalıştırırsak n den farklı sonuç listesi görebiliriz. Burda önemli nokta sıraladığımız yani ORDER BY ile istediğimiz quantity(adet) kısmıdır. Bu durumun anlamı ilk 5 değeri listeledikten sonra en son satıra ait quantity değeri daha varsa onlarıda getirmesidir. İlk sorguda 5 sonuçtan sonuncusunda quantity değerinin 120 olduğunu görmekteyiz. WITH TIES kullanılan sorguda quantity değeri 120 olan bütün değerlerin getirilmesini sağladık.  

Sorgu: SELECT TOP 5 WITH TIES orderid, productid, quantity
                                       FROM [order details] ORDER BY quantity DESC


Ders 20'ye 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.

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.

14. SQL de Matematiksel ve Metinsel işlemler

  • Tablolardaki alanları kullanarak daha etkili ve kesin sonuça dönük sorgular yapmak için SQL deki matematiksel ve metinsel ifadeleri kullanabiliriz.
  • SQL matematiksel işlemlerin sonucunu otomatik olarak üretmeyi sağlayan fonksiyonlara sahiptir.

(Örneğimizde Birim fiyat (UnitPrice) alanı Miktar(Quantity) alanı ile çarpılarak toplam fiyat hesaplanmış ve “TotalCost” adı ile yeni bir alan olarak görüntülenmiştir.)

Sorgu: SELECT OrderID, ProductID,(UnitPrice * Quantity) AS TotalCost
            FROM [Order Details]
           WHERE (UnitPrice * Quantity) > 10000


Ders 15 'e 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.