4 Aralık 2016 Pazar

68. SQL AUTO INCREMENT Kullanımı

  • Bazı veritabanı işlemlerimizde her bir kaydın eşssiz(unique) bir değeri olmasını isteyebilir, ilerideki işlemlerde bu değer üzerinden datalarımıza erişmek isteyebiliriz. Bu gibi durumlarda tablolarımızda bir kolonu sayı tipinde yapıp bir kural çerçevesinde (örneğin her yeni kayıt ekleme işleminde 1 arttır gibi) değiştirerek bunu sağlayabiliriz.
  • Sadece sayılarda kullanılan bu Auto-Increment özelliği ile değerimizin otomatik artmasını sağlayarak benzersiz bir değere atamış oluruz.
Örnek;

CREATE TABLE  Meyveler
(
id int IDENTITY(1,1) PRIMARY KEY,
adi varchar(20),
renk varchar(10),
tur varchar(20)
)

  • MsSQL de otomatik sayı arttırım IDENTITY(value1,value2) özelliği ile yapılmaktadır.
  • value1 başlangıç değerini belirtir.
  • value2 ise artış miktarını göstermektedir.
  • Yukardaki örneğimizde tablodaki id alanı 1 den başlayacak ve birer birer artacak şekilde insert edecek. Örneğin id alanımız 1000den başlasın ve sadece çift sayılar tutsun istiyorsak şu şekilde tanımlamalıyız: IDENTITY(1000,2)

67. SQL REPLACE Fonksiyonu Kullanımı

  • REPLACE fonksiyonu ile istediğimiz bir metin içerisinde istediğimiz bir metini başka bir metinle ile değiştirebiliriz.
  • Kendi tablomuzda bulunan veriler üzerinde de bu işlemi uygulayabilir sonuçları istediğimiz kolonda gösterebiliriz.
  • Aşağıdaki örnekleri inceleyebiliriz.


Söz Dizimi
REPLACE (Ana_Metin, Ana_Metin_İçinde_Aranan_Değer,Değiştirilecek_Değer)



21 Kasım 2016 Pazartesi

66. SQL PATINDEX Kullanımı

  • SQL PATINDEX Fonksiyonu belirttiğimiz bir metinde yada tablomuzun herhangi bir kolonunda seçtiğimiz karakterin "değerin" başlangıç pozisyonunu döner.
  • Eğer aradğımız karakter metnin içinde yok ise 0 döner. 
  • Aşağıdaki örnekleri inceleyip sizlerde uygulayabilirsiniz.
Söz Dizimi:
PATINDEX( '%Aradığımız kalıp%' , İçinde_Arayacağımız_İfade) 





  
Not: Aynı şekilde Tablodaki alanların içinde de bu şekilde arama yapabiliriz.

65. SQL CONCAT Kullanımı

  • SQL CONCAT fonksiyonu kısaca alanları birleştirmek için kullanılır.
  • SELECT cümleciklerimizde direkt metinleri birleştirebileceğimiz gibi tablomuzdaki farklı alanları da istediğimiz sıra veya ek metinlerle birleştirip yeni bir kolonda gösterebiliriz.
  • Aşağıdaki örneklerle pekiştirelim...
Not:Aynı şekilde tablomuzda alanları da birleştirebiliriz.

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


61-Foreign Key Kullanımı

  • Foreign key öncelikle başka bir tablo ile tablomuzu ilişkilendirmeye yarar.
  • Ayrıca kendi tablomuzdaki bu alan ilişkilendirdiğimiz tablodaki alandaki değerler olabilir.
  • Yani foreign key ile ilişkilendirdiğimiz her sütun ilgili tablodaki sütunda bulunan değerler ile kısıtlanmış olur.
  • Foreign key olan sütun null olabiliyorsa eşleşmeye bakılmaz.
Foreign key tanımlamak için, tablomuzdaki FK olacak sütunu yazdıktan sonra REFERENCES yazıp bağlamak istedğimiz tablounun adını ve parantez içindede ilgili sütunu yazarız.Aşağıdaki gibi;

CREATE TABLE Musteri
(MusteriNo int NOT NULL PRIMARY KEY,
IlNo int NOT NULL REFERENCES Il(IlNo)

  • Il tablosu foreign key ile bağladığımız tablo.Böylece müşteri tablosunda bulunan her ılNo alanı Il tablosundakilerden biri olmaz zorunda. 
  • Birden fazla foreign key de kullanabiliriz.

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








 

20 Nisan 2013 Cumartesi

59- SQL UNIQUE Kullanımı

Bazı durumlarda tablomuzda bir sütünün eşsiz yani tekrarlanmayan olmasını isteriz.
Bunun için bu tür alanlar tanımlanırken Unique Key contsraint tanımı yapılır.

Primary key den farkı ise Unique key bir tabloda birden fazla olmasıdır,
primary key ise tabloda sadece 1 adet olabilir.

Ayrıca Unique Key Contstraint olarak tanımlanmış bir alan NULL olabilir,
fakat değeri null dan farklı olursa kesinlikle daha önce girilen değerlerden farklı olmak zorundadır.

Not: Primary Key alanı tanımlandığında otomatik olarak Unique olarak oluşur.

ÖRNEK: Yeni oluştururken kullanımı,

CREATE TABLE Personel
(
No int NOT NULL UNIQUE,
Soyad varchar(255) NOT NULL,
Ad varchar(255),
Adres varchar(255),
Sehir varchar(255)
)

ÖRNEK: Var olan tabloda sonradan ekleme yaparken,

ALTER TABLE Personel
ADD UNIQUE (No)

23 Mart 2013 Cumartesi

MSSQL de Temp tabloyu güncellemek

  • Birleştirdiğimiz tablolarımızı istedğimiz gibi kullanabiliriz.
  • Bu örneğimizde tablomuzu temp table yapıp, üzerinde değişiklikler yapacağız.
  • NORTHWIND database ini kullandığımızı unutmayalım.
ÖRNEK:

SELECT O.OrderId,O.CustomerId,O.EmployeeId,E.FirstName,E.LastName
INTO #Temp
FROM NORTHWIND.dbo.Orders AS O WITH(NOLOCK)
INNER JOIN NORTHWIND.dbo.Employees AS E WITH(NOLOCK) ON E.EmployeeId=O.EmployeeId
WHERE O.ShippedDate='1996-07-16 00:00:00.000'
SELECT * FROM #Temp
UPDATE #Temp SET FirstName='Ahmet',LastName='Ates' WHERE EmployeeId=5
SELECT * FROM #Temp

AÇIKLAMA: Bu örneğimizde joinlediğimiz tabloların sonucu temp tabloya yazdı ve bunun üzerinde değişiklikler yaparak son halini gösterdik.


3 Şubat 2013 Pazar

SQL de Hata Fırlatmak(Raise Error in SQL)

  • Bazı durumlarda SQL serverın hata fırlatmasını beklemeden kendimiz sorgunun hata fırlatıp bitmesini isteriz.
  • Örneğin yazdığımız sp yada trigger hata vermeden bizim kendi kontrollerimiz ile hata fırlatmasını sağlayabiliriz.
  • İstediğimiz durum SQL Hatası olmayıp bizim koyduğumuz kontrol neticesinde bir mantık hatası olabilir.
ÖRNEK:

CREATE PROC sp_ciftsayininkaresi
@sayi INT
AS
BEGIN
IF(@sayi%2!=0)
    BEGIN
    RAISERROR ('Girilen sayı çift sayı değildir.',10,1)
    END
ELSE
    PRINT @sayi*@sayi
END

NOT: Basit bir sp yazıyoruz. İstediğimiz sp ye gelen değerin hep çift sayı olması aksi halde işlem yapmamamız.






SP yi çalıştırdığımız zaman;

EXEC sp_ciftsayininkaresi 3



20 Ocak 2013 Pazar

SQL Server da Temp(Geçici) ve Değişken(Variable) Tabloların Kullanılması

  • SQL Serverda Geçici tablo oluştururken iki seçeneğimiz bulunmakta. Bunlar kullanım şeklinize göre farklılık gösterebilir.
  • Birinci kullanım şeklimiz geçici tabloları (Temporary tables).
  • İkinci kullanım şeklimiz değişken tablolar (Table variables). 
  • Bu iki yönteminden birbirlerine karşı avantaj ve dezavantajları bulunmaktadır.
1-) Geçici Tablolar (Temporary Tables)
  • Temp Tabloların normal tablolardan başlıca farklı system database lerden olan tempdb içinde tutuluyor olmalarıdır.
  • Oluşturduğumuz tablonun temp table olduğunu SQL Servera bildirmek için başına '#' işareti koyarız.
  • SQL Serverda geçici tablolara sadece bulundukları ortamlardan erişilebilir. Eğer temp table a global olarak diğer ortamlardan da erişilmesini istiyorsak o zaman global temp table kullanmamız gerekmektedir.
  • Global temporary tables (Genel geçici tablolar) tanımlamak için temp table dan farklı olarak CREATE TABLE dediktenden sonra tablomuzun ismini vermeden önce '##' (2 adet) koyarız.
  • Global temporary tables ın bütün özellikleri temp table ile aynıdır.
  • Ayrıca oluşturduğumuz tabloyu kullanıdıktan sonra silmeyi unutmayalım. Unutsak dahi oturum kapandığında SQL Server otomatik bütün temp table ları silecektir. 
SÖZ DİZİMİ:

CREATE TABLE #TemporaryTable(
     number INT PRIMARY KEY,
     name NVARCHAR(50),
     surname NVARCHAR(50)
)





--Direk sorgu sonucu gelen listeyi temp tabloya eklemek için;

SELECT * INTO #TemporaryTable FROM Person


--Tablomuzu silmek için;
DROP TABLE #TemporaryTable  

NOT: SQL Serverda '#' ile başlayan tablolar SQL Server durduğu ana kadar saklanır. Fakat tablolarımızı tempdb.. altına kendimiz normal tablo ekler gibi eklersek tablolarımız SQL Server kapatılana kadar orda saklanır. SQL Server kapatıldığında temp tablolarımızın silinmesini istiyorsak bu yapıyı kullanabiliriz.


  1-) Değişken Tablolar (Table Variables)

  •  Değişken tablolarda aslında geçici tablolara benzemektedir. Fakat fark olarak oluşturduğumuz tablonun bir kısmı tempdb de bir kısmında Sunucu olarak kullanıdığımız SQL Server belleğinde tutulmaktadır.
  • Değişken tablolarda da geçici tablo gibi bir yapı vardır. Değişken tablo oluşturduğumuz zaman tablo isminin başına '@' işareti koyarız.
  • Değişken tablolara erişim geçici tablolara göre daha hızlı olmaktadır. Fakat değişken tablolara fazla veri yüklemek belleği dolduracağından performans kaybına da yol açabilir.
  • Değişken tablolar, kullanıcı tanımlı fonksiyonlar (User Defined Functions) içinde kullanılabilirken, geçici tabloların UDF içinde kullanımı mümkün değildir. 
  • Stored Procedure ler içinde 2 tablo yapımızıda kullanabiliriz.
  • Değişken tablolar üzerinde index tanımı yapamayız fakat geçici tablolar üzerinde yapabiliriz.
  • Değişken tablolar tanımlandıktan sonra (declare) alter table ile değiştiremeyiz.
 SÖZ DİZİMİ:

DECLARE @TemporaryTable TABLE (
     number INT PRIMARY KEY,
     name NVARCHAR(50),
     surname NVARCHAR(50)
)

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