29 Aralık 2012 Cumartesi

SQL Server'da Fonksiyon Oluşturma ve Kullanma

  • Fonksiyonlar istenilen veri tiplerini alıp istenilen veri tiplerini veya bir tablo bile geri döndürebilir.
  • Birden çok parametre vereceğimiz zaman bunları virgül ile ayırmamız gerekmektedir. 
Function Create(Fonksiyon  Oluşturma) 
  • Örneğimizde Animals tablomuzdaki Kusların ortalama ağırlıklarını döndüren bir fonksiyon yazalım.

ÖRNEK:

CREATE FUNCTION fnc_OrtalamaAgirlik
(
@KusNo int
)
RETURNS int
AS
BEGIN
  DECLARE @Result int
  SET @Result = (SELECT AVG(Weight) FROM Animals.dbo.Kuslar WHERE KusNo <=@KusNo)
RETURN(@Result)
END


Function Kullanma(Fonksiyon  Kullanma)  
  • İstediğimiz lokasyondan doğru path i vererek fonksiyonumuzu çağırabiliriz.
 ÖRNEK:

DECLARE @KusNo int
SET @KusNo = 5
SELECT dbo.fnc_OrtalamaAgirlik(@KusNo) AS Ortalama



58. SELECT INTO Deyiminin Kullanılması

  • SELECT INTO ile ilgili veritabanı üzerindeki verilerle kopya veritabanı oluşturabiliriz.
  • Kullanım durumlarına değinirsek  örneğin tablomuza değişiklik yapmadan önce yedekleyebiliriz.
  • Ayrıca bütün bir veritabanını kopyalamak yerine istediğimiz verileri içeren yeni bir kopya oluşuturup onu yedekleyebiliriz.

SÖZ DİZİMİ;

SELECT kolon_ad(ları) INTO [yeni_veritabanı.]yeni_tablo_adı
FROM ilgili_veritabanı

ÖRNEK:

SELECT * INTO Animals.dbo.Kuslar_Yedek FROM Animals.dbo.Kuslar
 

23 Aralık 2012 Pazar

SQL Serverda Karakter Sorunları

  • SQL Serverda Unicode Karakter Nasıl Kullanabiliriz?
-SQL Server elle girdiğimiz string değeri ASCII olarak algılar.

-Bu string Unicode String olarak algılaması için string ifadesini başına 'N' koymamız gerekmektedir.
  • Bozuk Karakterilerin Karşılığını Nasıl Bulabiliriz?  
 -Tabi ki belli başlı harfleri kontrol ederek onlara bizdeki karşılıklarını atayarak bozuk karakterlerin karşılığını bulabiliriz.

DECLARE @gelen NVARCHAR(MAX)
DECLARE @sonuc NVARCHAR(MAX)
SET @gelen = N'þýrýnga'

SET @sonuc = Replace(@gelen COLLATE Latin1_General_BIN,N'ð', N'ğ');  
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ð', N'Ğ'); 
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN, N'Ð', N'Ğ');  
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ý', N'ı');  
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'Ý', N'İ');  
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'þ', N'ş');  
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'Þ', N'Ş');
SELECT  @sonuc  COLLATE Turkish_CI_AS ;





Yukardaki örneğimizdeki gibi bir fonsiyon ile gerekli dönüşümü yapabilirsiniz.

9 Aralık 2012 Pazar

SQL' de VIEW Tanımlama ve Kullanımı

  • Öncelikle view lere neden ihtiyaç duyarız onu anlatalım.
  • Vıewler kısaca ben bütün tablodaki sütunları değilde sadece şu şu sütunlar listelensin demek için kullanılır.
  • Örneğin bir çalışan tablonuz olsun ve bu tabloda personelin adresinden tutun aldığı maaşa kadar bilgiler bulunsun.Bu durumda sadece herkese açık verileri tutan yeni bir tablo create etmek yerine belirli sütunları gösteren bir view create edebiliriz.
  • Ayrıca parçalı sorgularımızı da view e bağlayabiliriz. Bu view üzerinden yeni sütun ekleyip silebiliriz. 
  • Veri tabanı view da oluşan datayı saklamaz. Dolayısıyla bir viewun geçtiği SQL deyimi her çalıştırıldığında ilgili view sanal kümeyi yeniden oluşturur.

SÖZ DİZİMİ:

CREATE VIEW Kuslar_view
(KusNo,Adı)AS
SELECT KusNo,Adı FROM Kuslar


NOT: Eklediğimiz VIEW ın Yapıdaki yerini ve sorgusunu aşağıdaki resimde görebilirsiniz.


NOT: Database imizde bulunan VIEW ler hakkında ayrıntılı bilgi almak için System sp sini kullabiliriz.

SÖZ DİZİMİ:

SELECT * FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE



NOT: Ayrıca view içindeki sorgumuzu öğrenmek istediğimiz zaman da aşağıdaki sorgu cümlemizi kullanabiliriz.

SÖZ DİZİMİ:

SELECT * FROM  INFORMATION_SCHEMA.VIEWS



Vıewlerimizi silmek gayet basit.Drop ederek View imizi veritabanımızdan sileriz.

DROP VIEW [view adı]

NOT: Özetlemek gerekirse view ile kullanıcılara göstermek istediğimiz verileri gösterir istemediklerimiz yokmuş gibi yaparız.

8 Aralık 2012 Cumartesi

T-SQL de sp_helptext System Prosedürünün kullanılması

  • sp_helptext prosedürü bizim tanımladığımız yada sistemde bulunan objelerin tanımlamalarını text formatında gösterir.
  • Böylece istediğimiz objenin tüm içeriğini nerede olduğunu aramadan Örneğimizle direk alabiliriz.
SÖZ DİZİMİ:
sp_helptext '@objname'

USE NORTHWIND
GO
EXEC
sp_helptext 'Ten Most Expensive Products'
GO



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.

1 Aralık 2012 Cumartesi

T-SQL'de sp_rename System Prosedürünün Kullanılması

  •  SQL de nesnelerimizin adlarını değiştirmek için sp_rename sistem procedürünü kullanılırız.
SÖZ DİZİMİ:

exec sp_rename @object_name, @new_object_name, @object_type

1-) Tablo adının değiştirilmesi 

SELECT object_id('Birds')
exec sp_rename  'Birds','Kuslar'


SELECT object_id('Birds')
SELECT * FROM Birds
Invalid Object Name 'Birds' hatası döndürecektir.

SELECT * FROM Kuslar
Sorgusunu çalıştırarsınız, Birds tablosundan taşıdığımız kolonları göreceksiniz.
İçerisinde data olduğu için kayıtlı verileri görebilirsiniz.



2-) Kolon adının değiştirilmesi : 

  • Biraz önce create ettiğimiz ve adını Kuslar olarak değiştirdiğimiz tablonun name kolonunu Adı olarak değiştirelim..
  • sp_rename prosedürünün bizim şimdiye kadar kullanmadığımız, default u 'object' olan bir parametresi daha var.  
  • Kolonlar, sysobjects de yer almazlar ve birer database objesi değillerdir ve tablo ismi olmadan da birşey ifade etmezler. 
  •  x tablonun y kolonu diye saklanırlar ve çağırılırlar.  Bu yüzden ismini değiştirdiğimiz nesnenin kolon tipinde olduğunu ve hangi tabloya ait olduğunu  da söylememiz gerekir.
exec sp_rename 'Kuslar.Name','Adı','COLUMN'

Kuslar tablomuza ait olan name isimli kolonu Adı olarak değiştirdik.

SELECT * FROM Kuslar
sorgusunu çağırarak kolon adının değiştiğini görebiliriz.


3-) Index değerinin değiştirilmesi
  • sp_rename ile indexleri de yeniden adlandırabiliriz.
 exec sp_rename 'Kuslar.BirdId', 'KusNo','INDEX'


NOT: sp_rename ile syscomments de bulunan text alanındaki nesne ismini değiştiremeyiz.
Bu yüzden 'function','stored procedure','trigger' ve 'view' gibi programlanabilir nesneler için sp_rename i kullanmamalıyız.
Bu tür nesneler için sp_rename yerine önce bu nesleri drop(silme) edip sonra istediğimiz yeni isim ile yeniden create(oluşturma) edebiliriz.

NOT: Oluşturulan her bir nesne nin bir id si vardır ve sql serverda nesneler id leri ile saklanırlar.
object_id system function ını kullanarak objenin id sini öğrenebilir ve varolup olmadığından da böylecek emin olabiliriz.
object_id (objectname) null döndürüyorsa o isimde nesne ilgili database de yok demektir.