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

5 Kasım 2016 Cumartesi

2. SQL Server 2012 ve Yeni Analitik Fonksiyonlar - LAG() Fonksiyonu

  • LAG() fonksiyonu 2012 ile gelen 8 yeni analitik fonksiyondan biridir.
  • Bu fonksiyon extra bir join yapmadan bir önceki satırdaki verileri mevcut satırda işlememize imkan verir. LEAD() fonksiyonu mantığı ile çalışır sadece terse işlemektedir.
Daha iyi anlamak için aşağıdaki örneklerimizi inceleyebiliriz.

Kullanımı;

LAG( scalar_expression [ ,offset ] , [ default ] )
    OVER ( [ partition_by_clause ] order_by_clause )


Örnek Veri tabanımız;


Örnek 1;

Açıklama 1;
İlk örneğimizde en basit anlamda LAG() fonksiyonunun kullanımını gördük. Mevcut satırımızda bir önceki satırda istediğimiz değerini gösteriyoruz. Eğer değer yok ise NULL olarak gözükmekte.

Örnek 2;

   Açıklama 2;
Bu örneğimizde ufak bir değer ataması yaptık. Bir önceki satırdaki Value değişkeni ile mevcut satırdaki Value değerini birbirinden çıkarıyoruz. Bunun gibi satır kontrollerini farklı değerler ve satırlar üzerinde de yapabiliriz. Böylece elimizdeki sorgudaki istediğimiz alanları extra join işlemi yapmadan karşılaştırabiliriz.

Örnek 3;
   Açıklama 3;
Bu örneğimizde kaç satır önceki değerler ile karşılaştırma yapıp mevcut satırda kullanacağımızı gösterdik. Bu değeri daha da arttırabilirsiniz. Böylece mevcut satırda istediğiniz n. satır önceki değerleri çağırıp istediğiniz gibi kullanabilirsiniz. 3 satır önceki değer yok ise NULL gelmekte.

Örnek 4;

   Açıklama 4;
Bu örneğimizde bir önceki kayıt eğer yok ise LAG() fonksiyonu getiremediği için NULL ataması yapıyordu. Bu tarz durumlarda NULL ise hangi değeri atayacağımız belirledik. Örneğimizde de NULL değerlere 0.00 ataması yapıldı.

Örnek 5;
   Açıklama 5;
Son örneğimizde ise dikkat ederseniz PARTITION kullandık. Böylece hem hızlı hem performanslı olan bu yapıda istediğimiz LAG() işlemini hangi alan üzerinden yapacağımız belirtiyoruz. Tabi bu durumda NULL değerlerimiz bir hayli fazla olmakta. Çünkü partition yaptığımız Name değerinde satırların sayısı az.

28 Aralık 2013 Cumartesi

60- SQL Primary Key Kullanımı

  • Primary Key tablomuzdaki kayıtları sütün aracılığıyla eşşiz kayıt haline getirmemizi sağlar.
  • Primary Key(Birincil Anahtar) 
  • Primary Key olan alanlar Null değerler olamaz ve bu bölüme aynı değerler girilemez.  
  • Genelde otomatik artan değerler olarak kullanılır. Bu otomatik artmayı da identity komutu ile gerçekleştirilir.  
  • Identity komutundan sonra işlemin kaçtan başayacağı ve kaçar kaçar artacağı belirtilir. Identity(1,1) 1'den başlayacağını ve 1'er 1'er artacağını gösterir.
  • Primary Key tanımlamak aslında bir nevi Constraint‘tir yani bir nevi kısıtlama yapmaktır.

Tabloyu Create ederken;
 
BirdId int identity(1,1) NOT NULL,

Tabloyu Alter ederken,

ALTER TABLE Animals ADD PRIMARY KEY (BirdId)

bu şekilde primary key kullanabiliriz.

Primary Keyi tablomuzdan kaldırmak için ise;

ALTER TABLE Animals
DROP CONSTRAINT pk_BirdId








 

21 Temmuz 2012 Cumartesi

47. ALTER ve DROP Kullanımı

  • ALTER Komutu nesneler üzerinde değişiklikler yapmamıza imkan verir.
SÖZ DİZİM: ALTER <Nesne_Adı>  <Değişim_Cümlesi>

SORGULAR:
ALTER TABLE Birds
ADD Weight INT NULL
//Birds tablomuza yeni bir Sütun ekleyip değerinin ise NULL olabilir şekilde ayarlıyoruz.

ALTER TABLE Birds
ALTER COLUMN Name VARCHAR(30)
 //Örneğimizde Birds tablomuzda önceden kaydettiğimiz sütunun özelliğini değiştiriyoruz. Artık Name alanı 30 karaktere kadar değer alabilir. 

DROP TABLE Birds
//Veritabanımızdan Birds tablomuzu siler.


Ders 48'e geçebilirsiniz.

3 Temmuz 2012 Salı

42. INSERT...SELECT Kullanımı

  • Bir sorgunun sonuç kümesini yeni bir tabloya kayıt olarak atmak istersek INSERT... SELECT yapısını kullanırız. 
  • Bu durumda dikkat etmemiz gereken 2 durum vardır:
  1. Değer girdiğimiz alanın default(varsayılan) bir  değerinin olup olmadığına,
  2. Tablonun alanlarının boş(NULL) değere izin verip vermediğine dikkat etmeliyiz. Eğer NULL değere izin vermiyorsa gerekli veri tipinde mutlaka değer göndermeliyiz.
ÖRNEK: Sorgumuzda çalışanlarında birer müşteri olduğu göz önünde bulundurularak müşteri tablosuna kaydedilmesi istenmektedir.

SORGU: INSERT customers
SELECT SUBSTRING(firstname,1,2)+SUBSTRING(lastname,1,3)
,lastname, firstname, title, address, city
,region, postalcode, country, homephone, NULL
FROM employees


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

6 Mayıs 2012 Pazar

24. GROUPING Fonksiyonu

  • GROUP BY ile kullanılan ROLLUP ve CUBE ile elde edilen sonuç listesini GROUPING fonksiyonu daha kolay değerlendirip yorumlamamızı sağlar. 
  • GROUPING fonksiyonu ile belirtilen her bir sütun için sonuç listesinde ayrı bir sütun oluşturulur. 
  • Sonuç listesinde oluşturulan bu sütunlarda özet bilgi için 1 , detaylı bilgi için 0 değeri görüntülenir.
Örnek: Sorgumuzda farklı sütunlara dikkat edelim. NULL olan değerler bütün toplamı göstermektedir.
Sorgu:
SELECT ProductId,CategoryId,GROUPING(CategoryId),SUM(UnitPrice )
FROM Products
WHERE UnitPrice BETWEEN 10 AND 11
GROUP BY ProductId,CategoryId,UnitPrice
WITH CUBE

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

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.