[T-Sql] Triggerlar

Öncelikle herkese merhaba,
Bu yazımda Trigger’ları anlatmaya çalışacağım. Faydalı olması dileğiyle.

Tablolar üzerinde gerçekleştirilen DML komutlarına bakarak belli başlı işlemlerin tetiklenmesi olayına Trigger denir. Trigger’ın karşılığı tetiklemedir. Örneğin bir silme anında verinin silinmesi yerine silindi kolonunun true yapılmasında tetikleyiciler iş yapar. For, After ve instead of modlarında kullanılır.
Örnek kullanım şekli:

create trigger TriggerAdi
on TabloAdi
for Islem
as
--yapılmasını istediğiniz işlemler...

Continue reading

[T-Sql] Fonksiyonlar

Öncelikle bu yazıyı okuyan herkese merhaba,
Uzun süredir (yaklaşık 1 hafta) yazı yazamıyordum. Projelerdi,iş başvurularıydı,görüşmelerdi derken yazıları baya bir aksattık. Hemen bu farkı kapatmalıyız.
Bu yazıda ms-sql deki fonksiyonlardan bahsedeceğiz.

Fonksiyonlar C# taki değer dönen metotlar gibidir. Kullanıldıkları satırda bir veri elde eder. Elde ettiği veriyi tekrar komut satırında çalıştırabiliriz. Aynı şekilde stored procedures için de metod benzetmesi kullanmıştık. Aralarındaki fark stored procedure’ler exec komutu ile çalıştırılabilirler,fonksiyonlar ise select ifadeleri içerisinde kullanılırlar.

System Functions: Veritabanında programability altında function sekmesinin içinde system functions sekmesinde bulunur.

Aggregate Functions : Kümeleme fonksiyonlarıdır. Bir küme içinde işlem yapmak için kullanılırlar.

sum(),count(),max(),min(),avg() gibi

Configuration Functions : Db ayarı getirmek veya değiştirmek için kullanılırlar.

Scalar Functions : Belirli parametreleri alıp geriye tekil değer döndüren fonksiyonlardır.

Table Valued Functions : İşlem sonucunda geriye tablo dönen fonksiyondur.

UserDefined Functions : Kullanıcıların tanımladıkları fonksiyonlardır.

Continue reading

[T-Sql] Stored Procedure

Merhaba arkadaşlar, Geldik dananın zort dediği yere 😀

Biz programcıların en değer verdiği şey sanırım bizim işimizi yapan metodlardır. Bir sefer yazdığımız metodları belki 10 belki 100 kez kullanmışızdır. Bu da bizi büyük bir yükten kurtarmıştır aslında. Konumuz aslında Stored Procedure ama neden metodlardan girdim derseniz ikisi arasındaki benzerliktir cevabım.

Store Procedure parametre alabilen Executable(select ile çağrılmayan) C# daki metotlara benzeyen bir yapıdır. Yapılacak bir işlemi bir kere programlayıp daha sonra çağırarak kullanılmasını sağlar. View’deki gibi güvenlik ayarları sayesinde kullanıcılar üzerinde kısıtlılık oluşturur. Amacı işlemi  tanımlamak ve çağırarak kullanılmasını sağlamaktır.

Continue reading

[T-Sql] View

Merhaba arkadaşlar,
Bu yazımda View’lerden bahsedeceğim.
View‘ler bir veya birden fazla birleşmiş tablonun tek bir tablo gibi davranmasını sağlamak(Sanal tablo) için kullanılır.
Aşağıdaki şekilde oluşturulurlar:


create view miniProducts
as
select 
       p.ProductID,
       p.UnitPrice,
       p.UnitsInStock 
   from Products as p

Continue reading

[T-Sql] DDL (Data Definition Language)

Veritabanı üzerinde nesne oluşturma değiştirme silme işlemleri için kullanılan komutlardır. Bu komutlar tutulan verileri değil, veritabanı içerisinde verinin tutulması veya işlenmesi için kullanılan elemanları işleyen sorgulardır.

Sorgu Çeşitleri :

Create: Yeni bir nesne tanımlamak için kullanılır.

Alter: Nesnenin değiştirilmesi için kullanılır.(Birçok kaynakta güncellenmesi olarak geçer ancak alter var olana eklemek için değil yapıyı yenisiyle değiştirmek için kullanılır.)

Drop: Serverdan veya Database’den herhangi bir elemanı kaldırmak için kullanılır.

Varsayılan ayarlarda veritabanı oluşturur.

Continue reading

[T-Sql] Alt Sorgular Ödev-Cevap

Merhaba arkadaşlar,
Bir önceki yazımda alt sorguları anlatmıştım. En sonunda da bir ödev vermiştim. O ödevin cevaplarını burada veriyorum.

1997 yılında yapılan satışlarda ne kadar ciro elde edilmiştir?


select 
       SUM(od.Quantity*od.UnitPrice) 
   from [Order Details] as od 
   where od.OrderID in(
      select o.OrderID 
          from Orders as o 
           where o.OrderDate 
               between '01.01.1997' and '01.01.1998'
   )

Continue reading

[T-Sql] Alt Sorgular

Merhaba arkadaşlar,
Bu yazımda sizlere alt sorguları yani iç içe select ifadelerini anlatmaya çalışacağım.

Öncelikle ne gibi alanlarda kullanabileceğimize örnek verelim ki kafamızda daha iyi canlansın. Optimize edilmiş bir veritabanında tablolar birbirlerine yabancıl anahtar dediğimiz anahtarlar ile bağlıdır. Bir tablodaki yabancıl anahtar diğer tablodaki birincil anahtar ile ilişkilidir. Bu da iki tablo arasında ilişkili ifadelerin tutulmasına yarar. Northwind veritabanında diagram oluşturduysanız tabloların birbirlerine olan bağlarını rahatlıkla görebilirsiniz.

Örneğin Northwind veritananında Products tablosu ile Categories Tablosu birbirleri ile ilişkilidir. Bu ilişkiyi CategoryID sağlamaktadır.

Continue reading

[T-Sql] Group by ifadesi

Grouping: Bir tablo içerisinde belirlediğimiz bir kolona veya kolonların varyasyonuna göre kümeleme yapar.Bu sayede kümelenmiş grup içerisinde aggregate fonksiyonları kullanılabilir.Fiyata göre gruplayıp görüntülemek istediğimizde group by deyimi kullanılır.
Distinct deyiminin işini yapmaktadır ancak fark aggregate fonksiyonları ile oluşturulan grupları işler.

Aggregate functions -> Belirli bir kümeye uygulanacak işlemleri içerir.

Sum -> verilen küme içinde verilen kolondaki sayısal değerleri toplar.
Count-> verilen küme içinde belirtilen kolondaki elemanları sayar.Null değer dışında bir değer var ise onu sayar.

Fiyatı 18 olan ürünleri gruplayıp bu gruba ait adeti,stoktaki sayıyı toplayıp gösterir:


select 
       p.UnitPrice,
       COUNT(p.UnitPrice) as [Count],
       SUM(UnitsInStock) as [Sum] 
   from Products as p
   group by p.UnitPrice

select distinct p.UnitPrice 
   from Products as p

Continue reading

[T-Sql] Select Sorgusu

Merhaba arkadaşlar, bu yazıda Select ifadelerini anlatmaya calışacağım. Anlatım az örnek fazla olacaktır. Kullanarak ve görerek öğreneceğiz.
Select ifadesi bir veriyi veritabanından ayıklama ve seçmek için kullanılan komuttur. Geriye sonuç dediğimiz
tablo vari veriler döndürür. Bu verileri management studio’da yine tablo şeklinde görülür.

select [kolon isimleri] from [tablo adi]

Sorgularımızı New Query diye adlandırdığımız yeni bir pencerede yazacağız. Bu sayfayı açmak için File menüsünün hemen altındaki New Query butonuna tıklıyoruz.

use Northwind

bu sorgu ile veritabanını seçmiş oluyoruz. Execute butonuna veya F5’e tıklayarak işlemleri çalıştırabiliriz. Eğer ki birden fazla sorgu var ise her bir kodu sırasıyla çalıştırır. Sadece sonuncu sorguyu çalıştırmak istiyorsak eğer, çalıştırmak istediğimiz sorguyu seçmemiz gerekir. Böylece sadece seçili olan sorgu çalışır.

Aşağıdaki sorgu Products(ürün) Tablosundan ProductName(ürün adı),UnitPrice(birim fiyatı),UnitsInStock(Stoktaki birim) bilgilerini getirir:
Continue reading