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 ?

Windows XP de IT Yöneticilerinin kullandıkları Adminpak Windows 7 ile RSAT olarak karşımıza çıkıyor. Windows 7 Enterprise, Professional yada Ultimate sürümlerine yükleyebileceğiniz RSAT ile Windows Server 2003, 2003 R2, 2008, 2008 R2 ile Windows Server 2008 in Server Core sürümlerinin yönetimi yapabiliyoruz. Windows 7 32 bit ve 64 bit için ayrı ayrı sürümler halinde yükleme imkânımız bulunuyor Fakat RSAT Windows Vista üzerinde çalışmıyor. Windows Vista kullananlar için özel bir sürüm yayınlanmış.

Windows 7 için RSAT indirme link'i :

RSAT for Windows 7 (64bit)
RSAT for Windows 7(32bit)

Windows Vista için Rsat indirme link'i:

RSAT for Windows Vista

Hatırlayacağınız gibi Core server üzerine AD kurulumu yapmıştık.Ve bu server üzerinde user ekleme,silme,Organization Unit(OU) oluşturma,gpo gibi şeyleri yapmamız biraz zor olacağı için
AD rollünü Windows 7 üzerinde kullanarak bunları yapabileceğimizi görüceğiz.

Öncelikle RSAT kuracağımız bilgisayarda dikkat etmemiz gereken şey Windows Updateleriinin güncel olmasıdır.

Verdiğimiz linklerden kullandığımız windows 7  işletim sistemine uygun RSAT 'ı indirdikten sonra. Domaine dahil olmuş bir windows 7 bilgisayarımıza RSAT'ı yüklemeye başlıyoruz.(Not: Rsat ile AD'ye bağlanmamızı kolaylaştırmak için windows 7 'yi domaine dahil ediyoruz.)



İndirdiğimiz dosyaya çift tıklıyoruz.Karşımıza bu ekran geldikten sonra bir süre bekliyoruz.Sonra bu windows update'ini yüklemek isteyip istemediğimizi soruyor.yes diyoruz.

Karşımıza Windows Yazlım Lisans Sözleşmesi geliyor.I accept diyoruz.

Görüldüğü gibi RSAT yükleme işlemi başlamış bulunuyor.Bu işlem biraz uzun sürecektir(15-20 dk arası).
Yükleme bittikten sonra sırası ile start>control panel>programs'a ulaşıyoruz.


Roll ve features eklemek için tıklayacağımız yer "Turn Windows Featres on or off".


Ad ile ilgili rollü bu şekilde seçtikten sonra ok butonuna tıklıyoruz.

Görüldüğü gibi AD Users And Computer Start menümüze geldi.Şimdi AD'nin kurulu olduğu Pc'ye bağlanıp AD'yi nasıl yöneteceğimizi görelim.

AD Users and Computers'i tıkladıktan sonra karsımıza gelen ekranda görüldüğü gibi sağ tıklayıp change domain controller diyoruz.

Gelen ekrana ister domain controllerimizin ip adresini gerek bilgisayar ismini gerekse domain ismimizi yazalım bizim icin otomatik bir arama yapıp buluyor.Ben "Delibal.local" şeklinde arattırdım ve görüldüğü gibi buldu.Domain controllerinizi bulduktan sonra ok butonuna tıklıyoruz.

Karşımıza gelen ekran ise alışkın olduğumuz AD users and computers erkanıdır.Peki burada bir işlem yapıp yapamadığımızı nasıl deneyebiliriz.

Ben murat adlı bir kullanıcı oluşturup onunla logon olmaya çalışcağım.


Oluşturduğum kullanıcı ile logon olma şeklim.

Görüldüğü gibi Windows 7 de RSAT aracılığı ile AD rolünü kullanmış olduk.

Başka roller içinde aynı basamakları uygulayabilirsiniz.

RSAT(Remote Server Administration Tools) Nedir? Windows 7 Üzerinde Kullanımı.