PRIMARY KEY ile tablomuzdaki ilgili alanda benzersiz kayıtların tutulmasını istediğimiz durumlarda kullanılır. Yapısal olarak UNIQUE ile karıştırılabilir. Aradaki farkları sıralayacak olursak:

- Birden fazla alan tek bir PRIMARY KEY ile tanımlanabilir. Ancak PRIMARY KEY yapısı her tabloda sadece bir tane olabilir. UNIQUE yapısı bir tabloda birden fazla olabilir.
- PRIMARY KEY yapısı ile boş kayıtlara izin verilmez. UNIQUE yapısında boş kayıtlara izi n verilir.
- PRIMARY KEY yapısı ile tablo üzerinde bir index tanımı oluşturulur her kaydın benzersiz bir tanımı yapılır. Böylece kullandığınız uygulama geliştirme ortamında (Ör: .NET) tablo üzerinde daha etkin sonuçlar elde edilebilir. UNIQUE yapısında ise alandaki değerlerin benzersiz olup olmadığına bakılır. Birden fazla alanda UNIQUE yapıldığında bunları bir index adıyla tanımlanmaı sağlaabilir ancak bu sadece bir tanımladır.

PRIMARY KEY Kullanım Biçimi

SQL Server / Oracle / MS Acess ortamlarında sadece bir alanda kullanım biçimine örnek:

CREATE TABLE Personel
(
id int NOT NULL PRIMARY KEY,
adi_soyadi varchar(20) ,
Sehir varchar(20)
)
PRIMARY KEY kriterini sadece bir alana vereceksek nasıl kullanılacağı gösterilmiştir.
MySQL ortamında sadece bir alanda kullanım biçimine örnek:
CREATE TABLE Personel
(
id int NOT NULL,
adi_soyadi varchar(20) ,
Sehir varchar(20),
PRIMARY KEY (id)

)
Görüldüğü gibi MySQL veritabanında işlem yapacaksanız PRIMARY KEY ifadesini sonradan belirtmeniz gerekmektedir.

MySQL / SQL Server / Oracle / MS Acess ortamlarında birden fazla alanda kullanım biçimine örnek:
CREATE TABLE Personel
(
id int NOT NULL,
adi_soyadi varchar(20) NOT NULL ,
Sehir varchar(20),
CONSTRAINT id_no PRIMARY KEY  (id,adi_soyadi)

)
Burada görüleceği üzere birden fazla alan PRIMARY KEY yapısı içine alınıyor. CONSTRAINT ifadesi ile bu işleme bir tanım giriliyor. Aslında bu tanım bizim tablomuzun index alanını oluşturmaktadır. İndexleme sayesinde tablomuzdaki verilerin bütülüğü daha sağlam olurken aramalarda da daha hızlı sonuçlar elde ederiz. Ayrıca kullandığınz uygulama geliştirme ortamlarında (ör .Net) tablo üzerinde daha etkin kullanım imkanınız olacaktır. PRIMARY KEY ifadesinden sonra ise ilgili alanları virgül ile ayırarak yazarız.

Yuakrıdaki örnekler hep yeni bir veritabanı oluşturuken kullanılan örneklerdir. Ancak var olan bir veritabanında bir alanı UNIQUE yapmak istersek ALTER yapısını kullanmamız gerekir.
 
MySQL / SQL Server / Oracle / MS Acess ortamlarında bir alanda kullanım biçimine örnek:
ALTER TABLE Personel
ADD PRIMARY KEY (id)
MySQL / SQL Server / Oracle / MS Acess ortamlarında birden fazla alanda kullanım biçimine örnek:
ALTER TABLE Personel
ADD CONSTRAINT  id_no PRIMARY KEY (id,adi_soyadi)
Burada dikkat edilecek nokta; ALTER ile sonradan bir alana PRIMARY KEY kriteri tanımlanırken ilgili alanda veya alanlarda NULL yani boş kayıt olmamalıdır.


Eğer PRIMARY KEY olarak kriterlendirilmiş alanı normale çevirmek istersek DROP ifadesini kullanmamız gerekir.
 SQL Server / Oracle / MS Acess ortamlarında PRIMARY KEY yapısını kaldırmak:
ALTER TABLE Personel
DROP  CONSTRAINT id_no
Burada dikkat edilmesi gereken nokta eğer çoklu alanda PRIMARY KEY işlemi yaptıysak, CONSTRAINT ifadesinden sonra tablomuzdaki alan adı değil, oluşturduğumuz index adı yazılmalıdır. Eğer tek bir alanda oluşturduysak o zaman CONSTRAINT  ifadesinden sonra sadece alana adını yazabiliriz.
MySQL ortamlarında UNIQUE yapısını kaldırmak:
ALTER TABLE Personel
DROP  PRIMARY KEY id_no

MySQL yapısından silerken tek fark direk olarak PRIMARY KEY ifadesi kullanılır.

SQL PRIMARY KEY Kullanımı(SQL Birincil Anahtar)

CREATE TABLE ifadesi ile var olan veritabanımıza yeni bir tablo oluşturulur. Ancak oluşturulacak tablo alanlarının belli başlı kriterlere göre oluşmasını isteyebiliriz. Sadece bir alan için bunu yapabileceğimiz gibi bütün alanlar içinde uygulayabiliriz.

CONSTRAINTS Kullanım Biçimi
CREATE TABLE
(
alan_adi1 veri_tipi(boyutconstraint_adi,
alan_adi2 veri_tipi(boyutconstraint_adi,
alan_adi3 veri_tipi(boyutconstraint_adi,
....
)

Kullanılabilecek kriterler aşağıdaki gibidir:


NOT NULL: 
Alanında boş geçilemeyeceğini belirtir.
UNIQUE: Bu alana girilecek verilerin hiç biri birbirine benzeyemez. Yani tekrarlı kayıt içeremez.
PRIMERY KEY: Not Null ve Unique kriterlerinin her ikisini birden uygulanmasıdır.
FOREIGN KEY: Başka bir tablodaki kayıtlarla eşleştirmek için alandaki kayıtların tutarlılığını belirtir.
CHECK: Alandaki değerlerin belli bir koşulu sağlaması için kullanılır.
DEFAULT: Alan için herhangi bir değer girilmezse, varsıyalan olarak bir değer giremeyi sağlar.

Yuklarıdaki kriterlerin detaylı açıklamalarını sol taraftaki menüden ilgili kriter ismine tıklayarak öğrenebilirsiniz.

SQL CONSTRAINTS Kullanımı

CREATE TABLE ifadesi ile var olan veritabanımıza yeni bir tablo oluşturulur. Bu işlemi yapabilmek için mevcut kullanıcımızın tablo oluşturma yetkisine sahip olması gerekmektedir.

CREATE TABLE Kullanım Biçimi
CREATE TABLE
(
alan_adi1 veri_tipi(boyut),
alan_adi2 veri_tipi(boyut),
alan_adi3 veri_tipi(boyut),
....
)
alan_adi: tablomuzdaki verinin depolanacağı alan adı belirtilir.
veri_tipi: 
ilgili alanın hangi veri tipinde olacağını belirtir (varchar, integer, double vb.)
boyut: 
ilgili alanın en fazla olabilecek boyutu belirtir.

Örnek: 
Personel isminde yeni bir tablo oluşturmak için kullanılacak kod aşağıdaki gibidir.
CREATE TABLE Personel
(
id int,
adi_soyadi varchar(25),
sehir varchar(15),
bolum varchar(15),
medeni_durum bolean
)
Bu kod ile id isminde bir sayısal alan, boşluklar dahil olmak üzere numara ve harften oluşan 25 karakterli adi_soyadi, 15 karakterli sehir ve bolum ile medeni_durum adında bolean yani "evet-hayır", "var-yok", "1-0" gibi sadece iki seçenekli bir alan tanımlanıyor. Oluşan tabloda herhangi bir kayıt olamayacaktır.
Çıktısı:

idadi_soyadisehirbolummedeni_durum
     

SQL CREATE TABLE Kullanımı( Kodla Tablo Oluşturmak)

SQL CREATE DATABASE Kullanımı
CREATE DATABASE ifadesi ile yeni bir veritabanı oluşturulur. Bu işlemi yapabilmek için mevcut kullanıcımızın veritabanı oluşturma yetkisine sahip olması gerekmektedir.

CREATE DATABASE Kullanım Biçimi
CREATE DATABASE veritabani_adi
Açıkçası kod bu kadar ve detaylandıracak bir şey yok.
Örnek: Kargo isminde yeni bir veritabanı oluşturmak için kullanılacak kod aşağıdaki gibidir.
CREATE DATABASE Kargo

SQL Kodla Veritabanı Oluşturmak(Create Database)

SELECT INTO ifadesi ile bir tablodaki verileri alıp yeni bir tablo oluşturup içine kopyalayabiliriz. Sonuçta veritabanında yeni bir tablo oluşturulacağı için veritabanı üzerinde işlem yapan kullanıcının yeni bir tablo oluşturma yetkisine sahip olması gerekmektedir.

SELECT INTO Kullanım Biçimi
SELECT alan_ad(lari)
INTO yeni_tablo_adi [IN hedef_database]
FROM tablo1
NOT 1: Eğer yeni oluşturacağımız tablo aynı veritabanı içindeyse [IN hedef_database] ifadesi kullanılmaz. Eğer farklı bir veritabanı içine kopyasını alacaksak o zaman IN operatörü ile hedef veritabanını belirtmemiz gerekir.

NOT 2: Select Into yapısı ile yeni oluşturulacak olan tabloya, mevcut tablomuzdaki alanlar veri tipleri ve içindeki verilerle birlikte aynen kopyalanır. Eğer alan adını mevcut isminden farklı bir isimle oluşturmak istersek o zaman AS yapısı kullanabiliriz.
SELECT id, ad_soyad AS isim, yasadigi_sehir AS sehir
INTO personel_yedek
FROM personel
NOT 3: Eğer tablo içindeki verileri hariç tutup, sadece alan adları ve veri tiplerini almak istersek WHERE 1=0 eklememiz gerekir.
SELECT id, ad_soyad, sehir
INTO personel_yedek
FROM personel
WHERE 1=0

Select Into Örnekleri:

- Farklı ve harici veritabanına kopyalama
: Acces veritabanlarında geçerli olan bir yapıdır. IN ifadesinden sonra belirtilen yoldaki veritabanına tablomuz kopyalanır.
SELECT *
INTO personel_yedek IN 'c:\backup.mdb'
FROM personel
- Aynı veritabanı içinde tablo kopyalama: Veritabanımızdaki işlem kayıtlarını yıllara göre tuttuğumuzu varsayalım. Her yeni yıl geldiğinde elimizde bulunan boş bir şablon veritabanını kullanarak bir kopyasını yeni çalışma yılı için oluşturabiliriz. Bu örnekte islemler_sablon isimli tablomuzun bir kopyası islemler_2014 adıyla oluşturuluyor. Böylece 2014 yılı için işlem kayıtlarının depolanacağı bir tablo elde etmiş oluruz.
SELECT *
INTO islemler_2014
FROM islemler_sablon
- Belli kritere göre seçilen kayıtları yeni bir tabloya kopyalama: Tablomuzda bulunan kayıtları istediğimiz bir kritere göre seçerek yeni bir tabloya kopyalayabiliriz. Aşağıdaki örnekte Personel tablosunda bulunan kayıtlardan Sehir alanında İstanbul yazanlar seçiliyor. Bu seçilen kayıtlardan sadece ad_soyad alanında bulunan kayıtlar istanbul_personelleri isimli yeni bir tabloya aktarılıyor.

SELECT ad_soyad
INTO istanbul_personelleri
FROM personel
WHERE sehir='istanbul'

SQL SELECT INTO Kullanımı(İnsert İnto Cesitleri)

SQL UNION Kullanımı
UNION ile iki adet tablomuzdaki seçeceğimiz alanları birleştirerek tek bir tablo alanıymış gibi kullanabiliriz. Union ile iki tablodaki alanlar birleştirilirken tekrarlayan kayıtlar bir defa alınır. Eğer tekrarlayan kayıtların alınması isteniyorsa UNION ALL kullanılmalıdır.

UNION Kullanım Biçimi
SELECT alan_ad(lari) FROM tablo1
UNION
SELECT alan_ad(lari) FROM tablo2

UNION ALL Kullanım Biçimi
 

SELECT alan_ad(lari) FROM tablo1
UNION ALL
SELECT alan_ad(lari) FROM tablo2

Görüleceği üzere iki tane SELECT ifadesi kullanılmaktadır. Yani iki ayrı sorgu yapısını UNION ile birleştirmiş oluyoruz. Burada dikkat edilecek olan nokta Select ifadesinden sonra yazılacak alan sayısı her iki sorgu ifadesinde de aynı olmalıdır. Alan adları farklı olabilir. Yani birinci select ifadesinde Şehir alanı kullanılırken diğer select ifadesinde Adres alanı kullanılabilir. Sonuçta anlamsız bir veri çıkabilir ancak yapı bu şekilde çalışmaktadır. Alanları birleştirirken yazım sırasına göre birleştirme yapmaktadır. Yani birinci Select ifadesinden sonra Adi_soyadi, Sehir yazıldıysa, çekilen verinin anlamlı olması için ikinci select ifadesinden sonra da Adi_soyadi, Sehir şeklinde yazılması gerekmektedir. Eğer ikinci bölüme Sehir, Adi_soyadi yazılırsa birinci tablodan adi_soyadi alanındaki veriler ile ikinci tablodan Sehir  alanındaki veriler birleştirilir. Ancak bazı SQL editör programları böylesi bir durumun önün geçmek için kendi içlerinde kontrol mekanizması kurarak kullanıcıyı uyarabilmektedirler.

Örnek Tablo Uygulaması:
Örnek olarak aşağıdaki gibi Personel isimli tablomuz olsun.
idAdi_soyadiSehir
1Salih ESKİOĞLUİstanbul
2Ayhan ÇETİNKAYAKocaeli
3Serkan ÖZGÜRELErzincan
4İlhan ÖZLÜİstanbul
İkinci tablomuz olan Musteriler ise aşağıdaki gibi olsun.
idAdi_soyadiSehir
1Veysi YamlıVan
2Sırrı DermanMersin

Örnek1:

SELECT Sehir FROM Personel
UNION
SELECT Sehir FROM Musteriler

Bu kod ile iki tabloda Sehir alanlarındaki veriler tekrar edenler bir defa alınmak suretiyle birleştirilmiş olunur. Dikkat edileceği üzere PErsonel tablosunda iki tane İstanbul bulunmaktadır.
Çıktısı:
Sehir
İstanbul
Kocaeli
Erzincan
Van
Mersin
Örnek2:

SELECT Sehir FROM Personel
UNION ALL
SELECT Sehir FROM Musteriler

Burada UNION ALL kulanılmıştır. Yani her iki tabloda Sehir alanında bulunan kayıtlar olduğu gibi alınmıştır. Personel tablosunda iki tane İstanbul kaydı vardır. Bunlar olduğu gibi alınacaktır.
Çıktısı:
Sehir
İstanbul
Kocaeli
Erzincan
İstanbul
Van
Mersin
Örnek3:

SELECT Adi_soyadi, Sehir FROM Personel
UNION ALL
SELECT Adi_soyadi,Sehir FROM Musteriler

İki tablo olduğu gibi birleştirilmiştir.
Çıktısı:
Adi_soyadiSehir
Salih ESKİOĞLUİstanbul
Ayhan ÇETİNKAYAKocaeli
Serkan ÖZGÜRELErzincan
İlhan ÖZLÜİstanbul
Veysi YamlıVan
Sırrı DermanMersin

SQL UNION Kullanımı

¢Tablo tipi değişkenler yerine buraya kadar gördüğümüz konular içinde geçici tablolar da kullanılabilir.
¢Ancak tablo tipi değişkenler geçici tablolara göre biraz daha az veri için ve daha iyi performans sağlamak üzere kullanılır.
¢Tablo türü değişkenler aslında arka planda bir geçici tablo desteği ile gerçeklenmiştir.

¢Genellikle çoklu ifade ile tablo döndüren kullanıcı tanımlı fonksiyonlarla kullanılır.
Örnek;

¢Tablo tipi değişken kullanarak öğrenci tablomuzdaki vize notu ve final notu bilgilerine göre öğrencilerin geçip kalma durumunu gösteren T-SQL kodunu yazalım

T-SQL Tablo tipi değişkenler kullanmak(SQL View kullanımı)


T-SQL'de if else yapısı aşağıdaki gibidir;


IF(Sart1)
BEGIN
  İslemleriniz
END

ELSE IF(Sart2)
BEGIN
  İslemleriniz
END

ELSE
BEGIN
  İslemleriniz
END

Örnek: Tabloya göre bayanların sayısını bularak istenilen mesajı veren sorguyu yazın.


Dikkat

IF … ELSE yapısından True ya da False içeren Boolean değeri döner. Bu yapının koşul ifadesi kısmında örnekte olduğu gibi SELECT ifadesi kullanılabilir. Ancak SELECT ifadesi kullanıldığında koşul kısmı parantez içinde olmalıdır ve sorgudan tek bir değer dönmelidir.

T-SQL İf Else Yapısı

/*elemanları 1-100 arasında rastgele değerler olan 20 elemanlı bir dizideki
            sayıların toplamını, ortalamasını, en büyük sayıyı, en küçük sayıyı bulan programı yazınız*/
            Random rnd = new Random();   
            int []dizi=new int[20];
               
            int max=0,min=100,toplam=0;
               
            for(int i=0; i<20; i++)
            {
                dizi[i]=rnd.Next(0,100);
            }
             Array.Sort(dizi);

            for (int i = 0; i < 20; i++)
            {
                Console.Write(dizi[i] + " ");
            }

            for (int i = 0; i < 20; i++)
            {
                if (dizi[i] > max)
                    max = dizi[i];
                if (dizi[i] < min)
                    min = dizi[i];
                toplam += dizi[i];
            }
            Console.WriteLine("------istenilen değerler------");
            Console.WriteLine("\n En büyük: " + max);
            Console.WriteLine("En küçük: " + min);
            Console.WriteLine("toplam: " + toplam);
            Console.WriteLine("sayıların ortalaması:" + (float)toplam /(float) dizi.Length);

            Console.ReadKey();
 

        }

Elemanları 1-100 arasında rastgele değerler olan 20 elemanlı bir dizideki sayıların toplamını, büyügünü,kucugunu yazdıran C# Console Uygulaması

//klavyeden girilen bir kelimenin alfabetik olarak sıralanması            Console.Write("Bir Kelime Giriniz = ");

string isim = Convert.ToString(Console.ReadLine()); 
int uzunluk = isim.Length;            

char[] dizi = new char[uzunluk];            

string sirali = "Alfebetik Sıra İle Dizilişi = "; 

for (int i = 0; i < uzunluk; i++)           

{                dizi[i] = isim[i];            }            Array.Sort(dizi);            

for (int i = 0; i < uzunluk; i++)           

{                sirali += dizi[i];            }            Console.WriteLine(sirali);           

Console.ReadLine();

C# klavyeden girilen bir kelimenin alfabetik olarak sıralanması

1.Belirtilen Dizinin Eleman Sayısını Veren Metot Length        
//Diziler Ve Mettolar            İnt[] Sayilar = New İnt[10];            İnt Elemansayisi = Sayilar.Length;            Console.Writeline("Sayilar Dizisinin Eleman Sayisi" + Elemansayisi); 2.Dizi İçine Klavyeden Girilen Sayıları Sıralayarak Listeleyen Program //5 Elemanlı Bir Dizi Tanımlandı
            İnt[] Sayilar =New İnt[5];
            //Klavyeden Sayı Girişi Yapılıyor
            For(İnt İ=0;İ<5;İ++)
            {
            Console.Write((İ+1)+". Sayıyı Giriniz : ");
            Sayilar[İ]=Convert.Toınt32(Console.Readline());
                }

            //Diziye Girilen Değerler Sıralanıyor
            Array.Sort(Sayilar);

            Console.Writeline("Sayıların Sıralanmış Hali");
            Console.Writeline("--------------------------");
        //Dizi Sıralı Hali Ekrana Yazdırılıyor
        Foreach (İnt Sayi İn Sayilar)            Console.Writeline(Sayi);
        } 


Array.Reverse()Dizinin Elemanlarının Mevcut Sırasını Tersine Çevirmek İçin Kullanılır.Kullanım Şekli : Array.Reverse(Diziadi); Şeklindedir.
Örnek : Dizi İçerisine Klavyeden Girilen Sayıları  Büyükten Küçüğe Sıralayarak Sıralı Listeyi Ekrana Yazan C# Konsol Uygulaması
            //Diziler Ve Mettolar            //5 Elemanlı Bir Dizi Tanımlandıİnt[] Sayilar =New İnt[5];
//Klavyeden Sayı Girişi YapılıyorFor(İnt İ=0;İ<5;İ++)
{   Console.Write((İ+1)+". Sayıyı Giriniz : ");   Sayilar[İ]=Convert.Toınt16(Console.Readline());} //Diziye Girilen Değerler Küçükten Büyüğe SıralanıyorArray.Sort(Sayilar);
 //Küçükten Büyüğe Sıralanan Değerler Tersine Sıralanarak Büyükten Küçüğe SıralanıyorArray.Reverse(Sayilar);
 Console.Writeline("Sayıların Sıralanmış Hali");
Console.Writeline("--------------------------");
//Dizi Sıralı Hali Ekrana YazdırılıyorForeach (İnt Sayi İn Sayilar)
    Console.Writeline(Sayi);        } 

C# Diziler Ve Metotlar ve Örnekler

žAlt sorgu sadece bir tek değer döndürüyorsa, buna tekil değer döndüren alt sorgu denir.
žAlt sorgular bazen kayıtları filtrelemek için kullanılır.

žGrupsal fonksiyonlar kullanılarak elde edilebileceği gibi, WHERE kısmında verilecek bir filtre neticesinde de tekil bir sonuç döndürmesi sağlanabilir.


Tekil Sonuç Döndüren Alt Sorgular

žUygulamada, bir sorgudan elde edilen sonuç, bir diğer sorguyu ilgilendirebilir. Bu gibi durumlarda alt sorgular ya da bir başka deyişle iç sorgular kullanılır.

žAlt sorgu, SELECT deyimi içerisinde ikinci bir SELECT deyiminin kullanılması ile oluşturulur. İkinci select deyimi parantez içinde yer almalıdır.
žAlt sorgular veri tabanı performansı açısından daha sonra düşünülmesi gereken çözümler arasında yer almalıdır.
žAlt sorgunun kullanım şekli aşağıda yer almaktadır:
 SELECT liste
  FROM tablo
  WHERE ifade işleç
  (SELECT liste
             FROM tablo);
Alt Sorgular İle İlgili Genel Kurallar
žAlt sorgularda sütun sayısı birden fazla olamaz.
žAlt sorgular parantez içinde yazılır.
žAlt sorgularda Order By kullanılamaz.
žOrder By ve Group By içerisinde alt sorgu kullanılmaz.
žAlt sorgulara takma isimler verilerek sütun isimleri yazılır.
žAlt sorgu = ifadesi ile karşılaştırılmışsa alt sorgudan dönen tek değer olmalıdır.Eğer birden fazla değer dönüyorsa in veya not in kullanılmalıdır. 

žIN ve NOT IN alt sorgularla çalışırken kullanılabilir.
žBildiğimiz gibi IN içinde anlamını vermekte, NOT IN içinde olmayan anlamını vermektedir.
žGenellikle karmaşık sorguları parçalamak için veya sorguyu daha rahat tanımlayıp parça parça test edebilmek için veya daha başka bir nedenden ötürü bir sorgunun içinde başka bir sorguya yer vermek gerekebilir.
žBu durumda, içiçe geçmiş SELECT ifadelerinden yararlanılır. İçiçe geçmiş her bir SELECT ifadesinin parantezlerle belirtilmiş olması gerekir.
žİçiçe geçmiş SELECT ifadelerini iki grupta inceleyeceğiz.


SQL Alt Sorgular Ve Alt Sorgu Kuralları Alt Sorgularla ilgili genel kuralla

T-SQL DEĞİŞKENLER VE ÖRNEKLER
T-SQL kullanmanın en büyük sebeplerinden biri değişken kullanımına olanak tanımasıdır. Burada kastımız olan değişken diğer tüm programlama dillerinde yer alan bir veri tipi ile sınırlandırılmış, yaratılmasının ardından hafızada belli bir yer kaplayan, üzerine veri ataması yapılabilen ve daha sonra ismi kullanılarak program içerisinden çağrılıp kullanılabilecek yapıdır. Yazım şekli :
declare @degisken_adi <veri_tipi> [(boyut)]

Örnek :
declare @fld_arac_no VarChar(30)
declare @fld_id int

Değişkene bir gerçek karşılık atanması durumunda değişkene değer atama denir.
SET komutu kullanılır. Değişkene atanan değer programın ilerleyen aşamalarında farklı bir değer ile değiştirilebilir. Yeni değerin atanmasının ardından eski değer yok olur.
Örnek :
declare @fld_arac_no VarChar(30)
Set @
fld_arac_no = 40
Set @
fld_arac_no = 50 //Araç No artık "50" değerinde
Örnek : 
                BEGIN TRANSACTION
                UPDATE KITAPLAR SET s_sayisi=0
                UPDATE KITAPLAR SET kitap_adi=‘Deneme’
                 SELECT * FROM KITAPLAR

                ROLLBACK


T-SQL Örnekleri Ve T-SQL Degisken Türleri

Transaction Log: Transaction ile bir veri tabanında meydana gelen tüm değişikliklerin sıralı olarak kaydedildiği dosyadır.

T-SQL Transaction Log Nedir? Neden Kullanılır ?

Rollback: Transaction işlemindeki SQL ifadelerinden herhangi birisinin yapmış olduğu değişiklikleri geri almaktır. Herhangi bir sorun karşısında rollback işlemi ile veriler ilk haline geri gelir.

T-SQL Rollback Nedir ?

Commit: Oluşturulan Transaction işlemi başarılı bir şekilde gerçekleştirildiğinde yapılan değişiklikler veri tabanına kalıcı olarak aktarılmasıdır.

T-SQL Commit Nedir ?

Transaction, özet olarak daha küçük parçalara ayrılamayan işlem demektir. Özellikle bir grup işlemin arka arkaya gerçekleşiyor olmasına rağmen, seri işlemler halinde ele alınması gerektiğinde kullanılır. Transaction bloğu içerisindeki işlemlerin tamamı gerçekleşinceye kadar hepsi gerçekleşmemiş varsayılır.


Bir banka uygulamasını düşünün. Bir kullanıcı başka bir kullanıcıya havale yaptığında ne olacağına bakalım. Öncelikle havale yapanın hesap bilgilerinden havale yaptığı miktar düşülür. Ardından alıcının hesabına bu miktar eklenir ve havale gerçekleşmiş olur. Ancak her zaman şartlar istendiği gibi olmayabilir. Örneğin, gönderenin hesabından para düşüldüğü anda elektrik kesilebilir ya da program takılabilir. Bu durumda, ne olur?

Örneğin, gönderenin hesabından para düşülmüştür ama alıcının hesabına da geçmemiştir yani bir kısım paranın sahibinin kimliği kaybedilmiş olur. Bu da sistemin olası durumlar dışında veri kaybetmeye müsait bir hal alması demektir. Bu durumun bir şekilde önlenmesi gerekir.

Daha küçük parçalara ayrılamayan en küçük işlem yığınına Transaction denir. Geçerli kabul edilmesi bir dize işlemlerin tamamının yolunda gitmesine bağlı durumlarda transaction kullanılır. Transaction bloğu ya hep ya hiç mantığı ile çalışır. Ya tüm işlemler düzgün olarak gerçekleşir ve geçerli kabul edilir veya bir kısım işlemler yolunda gitse bile, blok sona ermeden bir işlem bile yolunda gitmese hiçbir işlem olmamış kabul edilir. 


SQL Server 3 farklı Transaction desteği sağlar:


1. Harici(Explicit) Transaction: SQL Server’ in kullanıcı tarafından bir BEGIN TRAN ifadesi ile transaction’a başlatılması şeklindeki bloktur. Bir aksilik olması halinde SQL Server tarafından veya kullanıcı tarafından COMMIT ifadesi ile gerçekleşmiş olarak veya ROLLBACK ifadesi ile hiç olmamış olarak sonlandırılabilir.

2.Dahili(Implict) Transaction: SQL Server’in belli ifadelerden sonra otomatik olarak Transaction açmasını sağlar. Bu mod da, bu belli ifadeler kullanıldıktan sonra, kullanıcı tarafından transaction’ın sonlandırılması gerekir. Bu nedenle zahmetli bir mod’ dur.

3.Auto Commit: Hiç bir transaction mod’ u tayin edilmedi ise, SQL Server bu mod da çalışır. Auto Commit modunda iken, her bir batch(yığın, Query Analyzer için iki go arasındaki ifade veya bir defada çalıştırılan bütün SQL ifadeleri) bir transaction bloğu olarak ele alınır. Batch içerisinde bir sorun olursa, SQL Server otomatik olarak bütün batch’i  geri alır(ROLLBACK eder).



T-SQL nedir? Transact SQL Çeşitleri

VPS'in açılımı Virtual Private Server olup Türkçe anlamı ise Sanal Özel Sunucu anlamını taşır. Sanal sunucular  (VPS), temel fiziksel sunucu sisteminin üzerine yüklenen çeşitli sanallaştırma yazılımları kullanılarak (Hyper-V, VMware ESXi, Solus VM, Citrix Xen Server, Parallels Virtuozzo vb.) hazırlanırlar.


Ana sunucu sistemi üzerinden, sunucu performansına bağlı olarak birden fazla sanal sunucu oluşturulabilmektedir. Oluşturulan bu sunucuların, kullanım açısından, fiziksel sunuculardan hiçbir farkı yoktur. Sanal sunucuların fiziksel sunuculardan tek farkı fiziksel bir alan kaplamıyor olmasıdır. Böylelikle elektrik ve donanım maliyetleri de ciddi oranda düşmektedir. VPS sunucuların kullanım amaçlarından kısaca bahsetmek gerekirse, herhangi bir fiziksel sunucunun kullanım amacından hiç bir farkı yoktur. Fiziksel sunucular ne amaçla kullanılıyorsa (Web Sunucusu, Database Sunucusu, Mail Sunucusu vb.) sanal sunucularda aynı amaçla kullanılırlar...

VPS (Virtual Private Server) Nedir? Neden Kullanılır ?