SQL GROUP BY Kullanımı
Bir fonksiyonu kullanırken bazı durumlarda GROUP BY fonksiyonu ile belli alanlara göre gruplamak gerekebilir.

GROUP BY Kullanım Biçimi
SELECT alan_adi1, fonksiyon(alan_adi2)
FROM tablo
GROUP BY (alan_adi)
Aşağıdaki gibi Ürünler tablomuz olsun
idUrun_adiFiyat
1Buzdolabı1500
2LCD TV1850
3Çamaşır Makinesi950
4Çamaşır Makinesi850
Örnek1:
SELECT Urun_adi, SUM(Fiyat)
FROM Urunler
Group By Urun_adi
Çıktısı:
Urun_adiExpr1000
Buzdolabi1500
LCD TV1850
Çamaşır Makinesi1800
Örnekte Urun_adi alanına göre bir gruplama işlemi yapılmıştır. Ve her grubun fiyatı ayrı olarak toplanmıştır. Burada görüldüğü üzere alan adı Expr1000 olarak görünmekedir. Aşağıdaki örnekte bu ismi daha anlamlı hale nasıl getirildiğinigörebilirsiniz.
Örnek2:
SELECT Urun_adi, Count(Urun_adi) AS Urun_adedi
FROM Urunler
Group By Urun_adi
Çıktısı:
Urun_adiUrun_adedi
Buzdolabi1
LDC TV1
Çamaşır Makinesi2

Burada ürünler gruplanıp, hangi üründen kaç tane olduğu bilgisi elde edilmiş. Burada AS ile ilgili alanın adı daha anlamlı bir hale getirilmiştir.

SQL GROUP BY Kullanımı

SQL SUM() Kullanımı
SUM() fonksiyonu ile belirtilen alandaki değerlerin toplamı elde edilir. Elimizdeki ürnlerin toplam değerini bulmak için kullanılabilir. Veya elimizdeki toplam stok adedini bulabiliriz.
Sadece sayısal alanlarda kullanılabilir.

SUM() Kullanım Biçimi
SELECT SUM(alan_adi) FROM tablo
Aşağıdaki gibi Urunler tablomuz olsun
idUrun_adiFiyat
1Buzdolabı1500
2LCD TV1850
3Çamaşır Makinesi 1000 Devir950
4Çamaşır Makinesi 800 Devir850
Örnek1:
SELECT Sum(Fiyat)
FROM Urunler
Çıktısı:
Expr1000
5150
Burada görüldüğü üzere alan adı Expr1000 olarak görünmekedir. Aşağıdaki örnekte bu ismi daha anlamlı hale nasıl getirildiğinigörebilirsiniz.
Örnek2:
SELECT Sum(Fiyat) AS Camasir_Mak_Toplam_Degeri
FROM Urunler
WHERE Urun_adi Like 'Çamaşır Makinesi%'
Çıktısı:
Camasir_Mak_Toplam_Degeri
1800

Burada AS ile ilgili alanın adı daha anlamlı bir hale getirilmiştir. Dikkat edileceği üzere  WHERE kullanılarak elimizde bulunan bütün çamaşır makinelerinin toplam değeri elde edilmiş oldu.

SQL SUM() Kullanımı( SQL Toplam İşlemi)

MAX() fonksiyonu belirtilen alandaki en büyük değeri verir. Tablomuzdaki 100 lerce ürün kaydının olduğunu düşünün. En yüksek fiyatın ne olduğunu bulmak istediğimizi düşünün. Böyle bir durumda tek tek fiyatları kontrol edip en pahalı fiyatı bulabiliriz. Ancak bu oldukça büyük bir zaman kaybına yol açacaktır. Bunun yerine bir sql kodu ile sonuca direk ulaşabiliriz. Aynı şekilde muhasebe departmanı müdürü veya şirektin genel müdürü, personele ödediği en yüksek maaşı görmek isteyebilir. Bu durumda da bir sql kodu ile sonuca gidebiliriz. Veya sıcaklık ölçüm değerlerinin olduğu bir tablo düşünün. Ay içerisinde veya yıl içinde en yüksek sıcaklık değerinin ne olduğunu bulmak istediğimiz zaman MAX() fonksiyonu oldukça faydalı bir kullanım olacaktır.
Sadece sayısal alanda değil aynı zamanda da metinsel alanlarda da kullanılabilir. Bu durumda metinsel veriyi A'dan Z'ye dizip en sondaki kaydı verecektir.

MAX() Kullanım Biçimi
SELECT MAX(alan_adi) FROM tablo
Aşağıdaki gibi Ürünler tablomuz olsun
idUrun_adiFiyat
1Buzdolabı1500
2LCD TV1850
3Çamaşır Makinesi950
4Bulaşık Makinesi850
Örnek1:
SELECT Max(Fiyat)
FROM Urunler
Çıktısı:
Expr1000
1850
Burada görüldüğü üzere alan adı Expr1000 olarak görünmekedir. Aşağıdaki örnekte bu ismi daha anlamlı hale nasıl getirildiğinigörebilirsiniz.
Örnek2:
SELECT Max(Fiyat) AS EnYuksekFiyat
FROM Urunler
Çıktısı:
EnYuksekFiyat
1850

Burada AS ile ilgili alanın adı daha anlamlı bir hale getirilmiştir.

SQL MAX() Kullanımı

LAST() fonksiyonu belirtilen alandaki son kayıt değerini verir. Bu fonksiyon sadece MS Access veritabanlarında çalışmaktadır. Diğer veritabanlarında son kayda ulaşmak için faklı sql kodları kullanılmaktadır. Ancak bu kullanım veritabanının o anki don kaydına erişim sağlamaz. Kayıtları alafebetik ve numarasal olarak dizdirdikten sonra son kayıt değerine erişilir.

FIRST() Kullanım Biçimi
SELECT LAST(alan_adi)
FROM tablo
SQL Server Veritabanlarında ilk kaydı bulma:
SELECT TOP 1 alan_adi
FROM tablo
ORDER BY alan_adi DESC
MySQL Veritabanlarında ilk kaydı bulma:
SELECT alan_adi
FROM tablo
ORDER BY alan_adi DESC
LIMIT 1
ORACLE  Veritabanlarında ilk kaydı bulma:
SELECT alan_adi
FROM tablo
ORDER BY alan_adi DESC
WHERE ROWNUM <= 1
Aşağıdaki gibi Urunler tablomuz olsun
idUrun_adi
1Buzdolabı
2LCD TV
3Çamaşır Makinesi
4Çamaşır Makinesi
Örnek1:
SELECT LAST(Urun_adi)
FROM Urunler
Çıktısı:
Expr1000
Çamaşır Makinesi
Burada görüldüğü üzere alan adı Expr1000 olarak görünmekedir. Aşağıdaki örnekte bu ismi daha anlamlı hale nasıl getirildiğini görebilirsiniz.
Örnek2:
SELECT LAST(Urun_adi) AS Son_Kayit
FROM Urunler

Çıktısı:
Birinci_Kayit
Çamaşır Makinesi
Burada AS ile ilgili alanın adı daha anlamlı bir hale getirilmiştir.
Örnek3:
SELECT TOP 1 Urun_adi
FROM Urunler
ORDER BY Urun_adi DESC

Çıktısı:
Urun_adi
LCD TV
SELECT TOP 1 ile SQL Server veritabanlarında ilk kaydı bulabiliriz. Dikkat edileceği üzere alan adı Expr1000 değil, direk olarak veritabanındaki isimle geldi. Ancak dikkat edeceğiniz üzere bizim tablomuzdaki son kayıt Çamaşır Makinesi. DESC ilk kayıtlar büyükten küçüğe göre dizilince LCD TV başa geçmiş oldu. SELECT TOP 1 ile de son ilk kaydı yani aslında sıralanmış ilk kaydın değerini almış olduk
Örnek4:
SELECT LAST(id) AS Son_Kayit_id
FROM Urunler
WHERE Urun_adi<>'Çamaşır Makinesi'

Çıktısı:
Son_Kayit_id
2
Bu örnekte WHERE ile Urun_adi alanında Çamaşır Makinesi yazmayan kayıtlar seçilmiştir. Seçili olan bu kayıtlardan sonuncu olanın id alanındaki değer alınır.
Örnek5:
SELECT FIRST(Urun_adi) AS Sirali_ilk_urun
FROM Urunler
ORDER BY Urun_adi DESC

Çıktısı:
Sirali_ilk_urun
LCD TV

Tablomuzdaki kayıtları Urun_adi alanına göre DESC kullanılarak büyükten küçüğe sıralayarak dizdiğimiz zaman ilk kayıt değişmektedir.

SQL LAST() Kullanımı(SQL Son Kayıtı Bulmak)

FIRST() fonksiyonu belirtilen alandaki ilk kayıt değerini verir. Bu fonksiyon sadece MS Access veritabanlarında çalışmaktadır. Diğer veritabanlarında ilk kayda ulaşmak için faklı sql kodları kullanılmaktadır. 

FIRST() Kullanım Biçimi
SELECT FIRST(alan_adi)
FROM tablo
SQL Server Veritabanlarında ilk kaydı bulma:
SELECT TOP 1 alan_adi
FROM tablo
MySQL Veritabanlarında ilk kaydı bulma:
SELECT alan_adi
FROM tablo
LIMIT 1
ORACLE  Veritabanlarında ilk kaydı bulma:
SELECT alan_adi
FROM tablo
WHERE ROWNUM <= 1
Aşağıdaki gibi Urunler tablomuz olsun
idUrun_adi
1Buzdolabı
2LCD TV
3Çamaşır Makinesi
4Çamaşır Makinesi
Örnek1:
SELECT FIRST(Urun_adi)
FROM Urunler
Çıktısı:
Expr1000
Buzdolabi
Burada görüldüğü üzere alan adı Expr1000 olarak görünmekedir. Aşağıdaki örnekte bu ismi daha anlamlı hale nasıl getirildiğini görebilirsiniz.
Örnek2:
SELECT FIRST(Urun_adi) AS Birinci_Kayit
FROM Urunler

Çıktısı:
Birinci_Kayit
Buzdolabı
Burada AS ile ilgili alanın adı daha anlamlı bir hale getirilmiştir.
Örnek3:
SELECT TOP 1 Urun_adi
FROM Urunler

Çıktısı:
Urun_adi
Buzdoalbi
SELECT TOP 1 ile SQL Server veritabanlarında ilk kaydı bulabiliriz. Dikkat edileceği üzere alan adı Expr1000 değil, direk olarak veritabanındaki isimle geldi.
Örnek4:
SELECT FIRST(id) AS Birinci_Kayit_id
FROM Urunler
WHERE Urun_adi='Çamaşır Makinesi'

Çıktısı:
Birinci_Kayit_id
3
Bu örnekte WHERE ile Urun_adi alanında Çamaşır Makinesi yazan kayıtlar seçilmiştir. Seçili olan bu kayıtlardan birinci olanın id alanındaki değer alınır.
Örnek5:
SELECT FIRST(Urun_adi) AS Sirali_ilk_urun
FROM Urunler
ORDER BY Urun_adi DESC

Çıktısı:
Sirali_ilk_urun
LCD TV

Tablomuzdaki kayıtları Urun_adi alanına göre DESC kullanılarak büyükten küçüğe sıralayarak dizdiğimiz zaman ilk kayıt değişmektedir.

SQL FIRST() Kullanımı(SQL İlk Kayıtı Bulmak)

COUNT() fonksiyonu belirtilen alandaki veya tablodaki toplam kayıt sayısını verir. Burada dikkat edilmesi gereken alan üzerindeki kayıt sayıları alınırken boş verilerin dikkate alınmamasıdır. 

COUNT() Kullanım Biçimi
SELECT COUNT(alan_adi) FROM tablo
veya
SELECT COUNT(*) FROM tablo
veya
SELECT COUNT(DISTINCT alan_adi) FROM tablo
Birinci kullanım biçiminde belirttiğimiz alandaki boş olanlar hariç kaç tane kayıt olduğunu elde ederiz. İkinci kullanım biçiminde ise tablomuzdaki toplam kayıt sayısını elde ederiz. DISTNINCT kullanımında ise belirtilen alandaki tekrar eden kayıtlar sadece bir defa sayılır. DISTINCT kullanımı MS Access veritabanlarında desteklenmemektedir.
Aşağıdaki gibi Urunler tablomuz olsun
idUrun_adiFiyat
1Buzdolabı1500
2LCD TV1850
3Çamaşır Makinesi 
4Çamaşır Makinesi850
Örnek1:
SELECT COUNT(Fiyat)
FROM Urunler
Çıktısı:
Expr1000
3
Tablomuzda 4 tane kayıt olması rağmen kodumuz bize 3 değerini döndürdü. Çünkü fiyat alanındaki verilerden birisi boştur. Boş veriler dikkat alınmamaktadır. Burada görüldüğü üzere alan adı Expr1000 olarak görünmekedir. Aşağıdaki örnekte bu ismi daha anlamlı hale nasıl getirildiğini görebilirsiniz.
Örnek2:
SELECT COUNT(*) AS Camasir_Mak_Sayisi
FROM Urunler
WHERE Urun_adi='Çamaşır Makinesi'
Çıktısı:
Camasir_Mak_Sayisi
2
Burada AS ile ilgili alanın adı daha anlamlı bir hale getirilmiştir. Dikkat edileceği üzere  WHERE kullanılarak elimizde bulunan çamaşır makinelerinin sayısı elde edilmiş oldu.
Örnek3:
SELECT COUNT(DITINCT Urun_adi) AS Tekrarsiz_kayit_sayisi
FROM Urunler

Çıktısı:
Tekrarsiz_kayit_sayisi
3

Tablomuzda Urun_adi alanında bulunan kayıtlardan tekrar etmeyen kayıtlar seçiliyor. Toplamda 4 tane kayıt olmasına rağmen Çamaşır makinesi iki defa olduğu için kodumuz bize sonuç olarak 3 değerini döndürmektedir.

SQL COUNT() Kullanımı

AVG() fonksiyonu ile belirtilen alandaki değerlerin ortalaması elde edilir. Elimizdeki ürnlerin ortalama değerini bulmak için kullanılabilir.
Sadece sayısal alanlarda kullanılabilir.

AVG() Kullanım Biçimi
SELECT AVG(alan_adi) FROM tablo
Aşağıdaki gibi Urunler tablomuz olsun
idUrun_adiFiyat
1Buzdolabı1500
2LCD TV1850
3Çamaşır Makinesi 1000 Devir950
4Çamaşır Makinesi 800 Devir850
Örnek1:
SELECT AVG(Fiyat)
FROM Urunler
Çıktısı:
Expr1000
1287,5
Burada görüldüğü üzere alan adı Expr1000 olarak görünmekedir. Aşağıdaki örnekte bu ismi daha anlamlı hale nasıl getirildiğinigörebilirsiniz.
Örnek2:
SELECT AVG(Fiyat) AS Camasir_Mak_Ortalama_Degeri
FROM Urunler
WHERE Urun_adi Like 'Çamaşır Makinesi%'
Çıktısı:
Camasir_Mak_Ortalama_Degeri
900
Burada AS ile ilgili alanın adı daha anlamlı bir hale getirilmiştir. Dikkat edileceği üzere  WHERE kullanılarak elimizde bulunan bütün çamaşır makinelerinin oratalam değeri elde edilmiş oldu.
Örnek3:
SELECT Urun_adi,Fiyat
FROM Urunler
WHERE Fiyat>(SELECT AVG(Fiyat) FROM Urunler)
Çıktısı:
Urun_adiFiyat
Buzdolabi1500
LCD TV1850

Bu örnekte fiaytı ortlamanın üstünde olan ürünler listelenmektedir. Önce ikinci SELECT yapısı ile ortalama fiyat bilgisi elde ediliyor. Daha sonra bu bilgi WHERE ile yapısı ile fiyat alanına aktarılıyor. Kontrol işareti olarak > yani büyüktür işareti kullanılarak elde edilen ortalama fiyattan büyük olan değerlerin alınması sağlanıyor.

SQL AVG() Kullanımı( SQL Fonksiyon)

   Devexpressde gridview doldurmak aşağıdaki gibi olmaktadir;    


        bag.Open();
        SqlDataAdapter myAdapter = new SqlDataAdapter();
        DataSet myDataSet = new DataSet();
        SqlCommand komut = new SqlCommand("up_stok_hareket @action = 'L'", bag);
        myAdapter.SelectCommand = komut;
        myAdapter.Fill(myDataSet, "up_stok_hareket");
        ASPxGridView1.DataSource = myDataSet;
        ASPxGridView1.AutoGenerateColumns = true;
        ASPxGridView1.DataBind();
        bag.Close();

Devexpress ASPX Gridview Doldurmak

SQL ile NULL kayıtları Bulmak
Tablomuzdaki veri girişleri esnasında bazı alanlara veriler girilmemiş olabilir. Bu durumda veritabanından çekilen raporlarda bazı hatalar oluşabileceği gibi ortaya çıkan spnuçlar da yanıltıcı olabilir. Oluşturacağımız sorgu ile tablomuzdaki boş kayıtları göz ardı ederek daha sağlıklı sonuçlar elde edebiliriz. Bunun için WHERE ifadesinden sonra IS NULL operatörü ile boş kayıtlar seçilebileceği gibi IS NOT NULL operatörü ile de boş olmayan kayıtlar seçilebilir.

Not: NULL değer ile 0 değeri birbirinin aynısı değildir. İlgili alana sıfır değeri girilmiş olsa bile o alan NULL yani boş değildir.

Boş kayıtları bulmak için kullanım biçimi:
SELECT alan_ad(lari)
FROM tablo_adi
WHERE alan_adi IS NULL
Boş olmayan kayıtları bulmak için kullanım biçimi:
SELECT alan_ad(lari)
FROM tablo_adi
WHERE alan_adi IS NOT NULL
Aşağıdaki gibi Urunler tablomuz olsun
idUrun_adiFiyatStok
1Buzdolabı150010
2LCD TV18505
3Çamaşır Makinesi 1000 Devir 1
4Çamaşır Makinesi 800 Devir8501
Örnek1:
SELECT Urun_adi, fiyat
FROM Urunler
WHERE Fiyat IS NULL
Çıktısı:
Urun_adiFiyat
Çamaşır Makinesi 1000 Devir 
Tablomuzda fiyatı olmayan ürünlerin listesini almak için yukarudaki kod kullanılabilir..
Örnek2:
SELECT Urun_adi,(stok*fiyat) AS Stok_degeri
FROM Urunler
WHERE Fiyat IS NOT NULL
Çıktısı:
Urun_adiStok_degeri
Buzdolabı15000
LCD TV9250
Çamaşır Makinesi 800 Devir850

Ürünlerin stok adedi ile birim fiyatını çarparak elimizdeki ürünlerin toplam değerini bulabiliriz. Ancak fiyatın boş olduğu durumda stok adedi ile çarpımda sorun olacaktır. Bu sebeple IS NOT NULL kullanılarak fiayt alanı boş olan kayıt hesaplamaya dahil edilmemiştir.

SQL ile NULL kayıtları Bulmak

SQL AUTO INCREMENT (Otomatik Artan Numara)
Tablomuza her kayıt eklendiğinde bir alanda bulunan değerin benzersiz olmasını ve otomatik olarak artmasını isteyebiliriz. Daha çok kayıtlarımız için bir id numarası alanı kullanıyorsak, auto increment kullanılır. Sadece sayısal alalarda kullanılır.

Otomatik numara artışı olan bir alana yazdığımız program üzerinden değer göndermeyiz. Gönderdiğimiz takdirde hata alırız. Kayıt ekleme örneği:
INSERT INTO Personel (adi,soyadi) VALUES ('Salih','ESKİOĞLU')

Burada görüldüğü gibi id alanı hiç kullanılmadı. Veritabanımıza kayıt eklenirken id alanına numara otomatik olarak verilecektir.
Yani INSERT INTO Personel (id,adi,soyadi) VALUES (5,'Salih','ESKİOĞLU') şeklinde yazarsak hata alırız.

Tablomuzu oluştururken ilgili alana kriter olarak tanımlanır. Farklı veritabanlarında kullanım biçimi değişiktir.


MySQL kullanım biçimine örnek:
CREATE TABLE  Personel
(
id int NOT NULL AUTO_INCREMENT,
adi varchar(10),
soyadi varchar(10),
PRIMERY KEY (id)
)

AUTO_INCREMENT ifadesi ile id alanına 1 'den başlayarak her seferde bir sayı aotomatik artan numara eklenmesi sağlanabilir. Eğer ilk başlangıç değerinin 100 olmasını istiyorsak ilgili satırı söyle yazmamız gerekir:

id int NOT NULL AUTO_INCREMENT=100
SQL Server kullanım biçimine örnek:
CREATE TABLE  Personel
(
id int IDENTITY(1,1) PRIMARY KEY,
adi varchar(10),
soyadi varchar(10)
)
SQL Server tarafında IDENTITY kelimesi kullanılır. Parantezin içindeki birinci rakam başlama değerini, ikinci rakam ise artış miktarını belirler. Bu örnekte ilk numara 1 'den başlayacaktır ve her kayıt eklendiğinde id alanı bir numara artacaktır. Eğer ilk kayıt numarasını 50'den başlamasını ve 5 farkla eklenmesini istersek IDENTITY(50,5) yazmamız yeterli olacaktır.

MS Access kullanım biçimine örnek:
CREATE TABLE  Personel
(
id integer PRIMARY KEY AUTOINCREMENT,
adi Text,
soyadi Text
)
Access veritabanlarında AUTOINCEMENT kelimesi kullanılır. Varsayılan olarak 1 'den başlar ve her kayıt için 1 numara artarak gider. AUTOINCREMENT(500,5) ile ilk kayıt numarası 500 olur ve eklenen her kayıt için üzerinde 5 eklenerek gider.
 
ORACLE kullanım biçimine örnek:
CREATE Sequence otomatik_artis
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
)

Görüldüğü üzere Oracle veritbanlarında durum biraz farklı. Önce tablomuzu oluşturuyor. Tablomuzu oluşturduktan sonra Create Squence ile otomatik artış tanımı yapıyoruz. Burada yazılan otomatik_artis ifadesi tablomuzda yeni bir alan oluşturmaz. Bu bir tanımdır. Oluşturduğumuz bu tanımı tablomuzda birden fazla alanda kullanabiliriz.

Burada;
MINVALUE 1 ile alanın alabileceği en düşük değer belirtilir.
STARVALUE WITH 1 ile kaydın başlaam değer belirtilir.
INCREMENT BY 1 ile artış değeri belirtilmiştir.
CACHE 10 ile veritabanı performansını arttırmak için sonraki verilecek 10 numarayı hafızaya alır ve yeni kayıt eklenirken veritabanına bakıp sonr numarayı arttırmak yerine hafızadan sıradaki numarayı otomatik olarak verir. Özellikle artış değeri 1 olmayann durumlarda performansı arttırır.

Kayıt giriş örneği:
INSERT INTO Personel (ID,Adi,calistigi_ay_sayisi) VALUES(otomatik_artis.nextval,'Salih',otomatik_artis.nextval)

bu örnekte görüleceği üzere diğer veritabanlarından farklı olarak ID alanıda yazılmıştır. Otomatik_artis.nextval ile id alanına otomatik sayı artışı uygulanmıştır. Ayrıca calistigi_ay_sayisi alanına da aynı tanım uygulanmıştır. Neticede dönemsel çalışan bir personelimiz varsa en son kayda bakarak toplam kaç ay çalıştığını öğrenebiliriz.

SQL AUTO INCREMENT (Otomatik Artan Numara)

DEFAULT kriteri ile oluşturduğumuz tabloda bir alanın değeri eğer kullanıcı tarafından boş olarak geçilirse, sistemin o alana otomatik olarak bir değer atamasını sağlayabiliriz. Böylece verilerimizin bütünlüğü sağlanmış olacağı gibi ileride geliştireceğimiz uygulamalarda hata ile karşılaşma ihtimalimizde düşecektir.

DEFAULT Kullanım Biçimi
CREATE TABLE Kargo
(
id int,
adi_soyadi varchar(20) ,
adres varchar(20),
odeme_tipi varchar(25) DEFAULT 'Ücret Alıcı'
)
Yukarıdaki örnekte kargo takibi yapmak üzere Kargo isminde bir tablo oluşturulmuştur. Eğer yeni bir kargo takip kaydı girilirken odeme_tipi bilgisi boş geçilirse otomatik olarak ilgili alana 'Ücret Alıcı' ifadesi yazılacaktır. DEFAULT kriteri ile sadece belirleyeceğimiz bir veri değil, sistem verileride kullanılabilir.
CREATE TABLE Kargo
(
id int,
adi_soyadi varchar(20) ,
adres varchar(20),
kayit_tarihi date DEFAULT getdate()

)
Görüldüğü gibi kayit_tarihi alanına eğer bir değer belirtmezsek, otomatik oalrak günün tarihini atacaktır. Buradaki  getdate() ile günü tarihi bilgisi elde edilmektedir.

Yuakrıdaki örnekler hep yeni bir veritabanı oluşturuken kullanılan örneklerdir. Ancak var olan bir veritabanında bir alanı DEFAULT yapmak istersek ALTER yapısını kullanmamız gerekir.

MySQL veritabanlarında kullanım biçimine örnek:
ALTER TABLE Kargo
ADD odeme_bilgisi SET DEFAULT 'Ücret Alıcı'
SQL Server / MS Acess veritabanlarında kullanım biçimine örnek:
ALTER TABLE Kargo
ADD COLUMN  odeme_bilgisi SET DEFAULT 'Ücret Alıcı'
Oracle  veritabanlarında kullanım biçimine örnek:
ALTER TABLE Kargo
MODIFY odeme_bilgisi DEFAULT 'Ücret Alıcı'


Eğer DEFAULT olarak kriterlendirilmiş alanı normale çevirmek istersek DROP ifadesini kullanmamız gerekir.
 SQL Server / Oracle / MS Acess ortamlarında DEFAULT yapısını kaldırmak:
ALTER TABLE Kargo
ALTER COLUMN odeme_bilgisi DROP DEFAULT
MySQL ortamlarında UNIQUE yapısını kaldırmak:
ALTER TABLE Kargo
ALTER COLUMN odeme_bilgisi DROP DEFAULT

Burada dikkat edilmesi gereken nokta iki tane ALTER ifadesinin kullanılmasıdır. Yani ALTER TABLE Kargo DROP odeme_bilgisi DEFAULT kullanımı yanlış olacaktır. Çünkü normal şartlarda direk olarak DROP yazılırsa belirtilen alan tablodan silinir. Bunun için iki defa ALTER kullanılmıştır.

SQL DEFAULT Kullanımı

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)