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.

1. SQL Server 2012 ve Yeni Analitik Fonksiyonlar - LEAD() Fonksiyonu

  • LEAD() fonksiyonu 2012 ile gelen 8 yeni analitik fonksiyondan biridir.
  • Bu fonksiyon extra bir join yapmadan bir sonraki satırdaki verileri mevcut satırda işlememize imkan verir. İlk defa duyan için gerçekten açıklaması biraz zor. Örnek vermek gerekirse 2 satırlı bir sorgumuzda değerlerle 2. satırda bulunan herhangi bir kolonun değerini kıyaslayabiliriz.
Daha iyi anlamak için aşağıdaki örneklerimizi inceleyebiliriz.

Kullanımı;

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

Not: Dikkat etmemiz gereken ifade alanı (scalar_expression) olarak yazdığımız kısım tek değer dönmelidir.


Örnek Veri tabanımız;



Örnek 1;


Açıklama 1;
İlk örneğimizde en basit anlamda LEAD() fonksiyonunun kullanımını gördük. Mevcut satırımızda bir sonraki satırın istediğimiz değerini gösteriyoruz.

Örnek 2;

   Açıklama 2;
Bu örneğimizde örnek bir atama yaptık. Bir sonraki 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.

Örnek 3;

   Açıklama 3;
Bu örneğimizde kaç satır sonraki 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ın değerlerini çağırıp istediğiniz gibi kullanabilirsiniz.

Örnek 4;

   Açıklama 4;
Bu örneğimizde bir sonraki kayıt eğer yok ise LEAD() 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 LEAD() işlemini hangi alan üzerinden yapacağımız belirtiyoruz. Tabi bu durumda NULL değerlerimiz bir hayli fazla olmakta.

15 Haziran 2014 Pazar

64- SQL Grant Kullanımı

  • Kullanıcıya yetki verir.
  • Genel yapısı şu şekildedir.
GRANT (all | izinler)
ON (izneTabiTutulanlar)
TO (izinVerilenler)

  • Aşağıdaki yapıda User kullanıcısına tablo oluşturma yetkisi veriyoruz.
GRANT CREATE TABLE TO User
  • Aynı şekilde kullanıcıya güncelleme, silme ve ekleme yetkisi de verebiliriz.
GRANT INSERT,UPDATE,DELETE TO User

  • Örneğin kullanıcımıza istediğimiz tablodan select çekebilmesine izin verelim.
GRANT SELECT ON Tablomuz TO User

WITH GRANT OPTION: Dereceli yetkilendirme işleminde kullanılır. Yani siz bir kullanıcıya yetki verdiniz diyelim o kullanıcı da sizin gibi başka kullanıcılara izin verebilir.
  • Aşağıdaki örneğimizde biz kullanıcımıza Sehir tablomuza ekleme ve select atma yetkisi veriyoruz.Önemli kısmı WITH GRANT OPTION olduğu için User kullanıcısı da başka bir kullanıcıya kendinde olan bu 2 hakkı verebilir. Dikkat etmemiz gereken asla fazlasını yani kendinde olmayan bir hakkı veremez.
GRANT SELECT,INSERT ON Sehir TO User
WITH GRANT OPTION

11 Mayıs 2014 Pazar

63- SQL Constraints(Kısıtlayıcı) Türlerin Kullanımı

  • Veritabanımızda bulunan verilere mantıksal kısıtlamalar getirmek için kullandığımız bazı türler vardır.
  • Veri modelinde bir genelleme, bütünlük sağlamak açısından önemlidir.
  • Kısıtılamalarımızı tablomuzu create ederken tanımlarız.
  • Tanımlama aşamasında Null olup olmayacağı başka bir tabloyla ilişkisi olup olmadı vs. gibi tablodaki alanla ilgili spesifik sütün tanımlamaları yaparız.
Constraints Types 

Primary Key Constraint
Birincil anahtar kısıtlayıcı anlamındadır. Her girilen değerin farklı olması demektir. Aynı değerden ilgili sütuna 1 kez girebiliriz.. Her tablonun en fazla 1 adet Primary Key Constraint’i olabilir.
  
Unique Constraint
Tekil alan kısıtlayıcı anlamındadır. Birincil anahtar olan ve tablodaki diğer alanlar içinde aynı içeriğe sahip verilerin olmaması için Unique Constraint tanımlanır. Hesap No primary key ve Sehir No. Unique şeklinde bir tanımlama Unique Constraint’e bir örnektir.

Foreign Key Constraint
Yabancıl anahtar kısıtlayıcı anlamındadır. Bir tablodaki bir sütuna ait verilerin başka bir tablonun belirli bir sütunundan gelmesini denetler.Sadece bağladığımız sütundaki değerleri içerebilir.

Default Constraint
Varsayılan kısıtlayıcı anlamındadır. Tablodaki herhangi bir alan için girilmesi gereken bir değerin atanmasıdır. INSERT komutu için geçerlidir. Örneğin, müşteri tablosunda yeni bir kayıt ekleyeceğimiz zaman o alana default ülke bilgisi için eklenecek değer 'Türkiye' olabilir.

Check Constraint
Kontrol kısıtlayıcı anlamındadır. İstedğimiz formata göre verilerin girilmesini sağlar. Örneğin, Hesap No alanına 7 karakterin girilmesi Check Constraint ile sağlayabiliriz.

Kullanımı;

CREATE TABLE table_name
(
column_name1 data_type(size) constraint_name,
column_name2 data_type(size) constraint_name,
column_name3 data_type(size) constraint_name,
....
);

62-NOW() Fonksiyonun Kullanımı

NOW() fonksiyonu sistemde o anki tarih ve saati döner.

SELECT NOW() AS Tarih