12 Ocak 2017 Perşembe

SQL YAPISAL SORGULAMA DİLİ


Veritabanları ve tablolar oluşturmayı, oluşturulan tablolara kayıt ekleme, silme, güncelleme ve listeleme işlemlerinin yapılabilmesini sağlayan bir alt sorgulama dilidir.

SQL'in kendine özgü deyimleri ve kuralları vardır. Hemen hemen tüm ilişkisel veri tabanı yönetim sistemlerinin ortak dili olarak kabul edilmiştir.


Verileri sorgulamak için SQL kullanan başlıca veri tabanı yönetim sistemleri şunlardır:

Oracle, Microsoft SQL Server,Sysbase, DB2, MySQL, Microsoft Access. Sqlite, Paradox


Veritabanı, herhangi bir alanda belli bir amaca yönelik olarak düzenlenmiş verilerden oluşan yapı olarak tanımlanabilir. Bir firmanın ürün bilgilerinin, bir kitapevinin kitap stok bilgilerinin vb. saklandığı yapılar örnek olarak verilebilir.

Bir veritabanı tablosu, verilerin daha düzenli olarak saklanması için satırlar ve sütunlardan oluşmaktadır. Bütün kayıtlar satırlarda yer almaktadır. Her alandaki kayıtlar birbirinden farklıdır ve verilerin birbirlerine karışmasını engellemektedir.

Örneğin öğrenci bilgilerinin tutulduğu bir tabloda bir varlığa ait kayıtlar satırlarda yer almaktadır. Sütunlar ise ilgili varlığa ait nitelikleri tutmaktadır. Bu nitelikler Adı, Soyadı vb. niteliklerden oluşmaktadır.


Bir veritabanı tasarlanmadan önce bir tablo içerisinde hangi niteliklerin yani sütunların bulunması gerektiği belirlenmelidir. Bu en önemli unsurların başında gelmektedir.

Daha sonraki adımlarda tablolar arasında bir ilişki bulunabildiğinden bu öğeler doğru ve dikkatli belirlenmelidir. Dolayısı ile bir veritabanının en önemli öğesi tablolar olmaktadır. Tablolar arasında ilişkilerin belirlenmesi varlık ilişki modelinin en önemli adımlarından biridir.

Aşağıdaki şekilde, bir tabloya ait satır, sütun ve kayıtlar görülmektedir.



Sabit uzunlukta karakter dizilerini tutar. char(n) şeklinde kullanılır. n karakter sayısıdır ve 1 ile 8000 arasında değer alır. Belirlediğimiz n değerinden daha kısa uzunlukta olan veriler boşluk ile belirlediğimiz bu n değerine tamamlanır.

Bu «productName» alanına 30 karakterlik bilgi yazılabileceğini göstermektedir.


MS SQL Server’ a ait veri türleri şöyledir.

char (uzunluk): Sayısal olmayan yani alfabetik verileri tanımlamak için kullanılmaktadır. Bir sütunda saklanacak olan verinin boyutu uzunluk parametresi ile belirtilir.

Örnek: ‘products’ tablosunda, «productName» alanı aşağıdaki şekilde tanımlanabilir.


char ile kullanımı aynıdır. char’dan farklı olarak unicode karakterleri de saklayabilir.

ANSI: American National Standards Institute, Unicode: Evrensel Kod.

Bilgisayar temelde aritmetik ve mantıksal işlemler yapabildiğine göre matematiksel bir anlamı olmayan harf ya da karakterler nasıl işleme alınıyor? Bu bahsettiklerimiz ASCII sayesinde mümkündür. Tüm bilgisayar dünyasında standart olarak kabul edilen ve her bir karaktere karşılık gelen sayısal değerlerin belirlendiği ASCII (American Standart Code for Information Interchange) isminde karakter tablosu kullanılır. Tüm bilişim dünyasında ASCII standardının kullanılması, farklı yörelere ve kurumlara ait uygulamalara ortak bir zemin sunar. Bu tablo 1963 yılında ANSI tarafından oluşturulmuştur.

Evrensel Kod tek bir yazılımın ya da bir web sitesinin yeniden tasarlanmasına ihtiyaç duyulmadan her türlü dil ve ülke için uyumlu hale getirilmesini sağlar. Aynı zamanda verinin çeşitli işletim sistemleri içerisinden aktarımını da sorunsuz hale getirmektedir.
Bu «staffName» alanına 20 karakterlik bilgi yazılabileceğini göstermektedir.

nchar (uzunluk): Yine bu veri türü de alfabetik karakterlerin tanımlanması için kullanılmaktadır. Bu veri türü bilgileri ANSI formatta değil de Unicode formatında saklamaktadır. ANSI formatı 256 farklı karakter barındırabilir fakat Unicode formatı 65.536 farklı karakteri barındırabilmektedir.

Örnek: ‘staff’ tablosunda, «staffName» alanı aşağıdaki şekilde tanımlanabilir.


Sabit uzunlukta karakter dizilerini tutar. varchar(n) şeklinde kullanılır. n karakter sayısıdır ve 1 ile 8000 arasında değer alır. Belirlediğimiz n değeri alabileceği maksimum karakter sayısıdır. Karakter sayısı daha kısa veri girersek char gibi boşlukla tamamlanmaz. Kaç karakter veri girilirse boyutu ona göre değişir.

varchar (uzunluk): Yine bu veri türü de alfabetik olan alanlar tanımlamak için kullanılmaktadır. Diğer iki veri türünden farklı olarak değişen tek şey uzunluk bilgisidir. Burada parametre olarak belirtilen uzunluk, aynı zamanda maksimum uzunluk olmaktadır.

Örnek: ‘staff’ tablosunda, «staffName» alanı aşağıdaki şekilde tanımlanabilir.



varchar ile kullanımı aynıdır. Varchar’dan farklı olarak unicode karakterleri de saklayabilir. nvarchar(n) şeklinde kullanılır ve n değeri 1 ile 4000 arasındadır.

nvarchar (uzunluk): ‘varchar’ veri türü için geçerli olan her şey bu veri türü içinde aynen geçerlidir. Farklı olarak veriler ANSI formatta değil de Unicode formatta tutulmaktadır.

Örnek: ‘staff’ tablosunda, «staffName» alanı aşağıdaki şekilde tanımlanabilir.

varchar(max) ile aynı özelliktedir. maksimum 2,147,483,647 karakter veri girilebilir.

text: Çok büyük açıklama verilerini saklamak için kullanılmaktadır. Örneğin bir tabloda Açıklama olarak tanımlanan bir nitelik alanına çok sayıda karakteri içeren bir bilgi girilmek istenildiğinde kullanılabilmektedir. 2 GB ta kadar veri girilebilen bir alandır.

Örnek: ‘products’ tablosunda, «description» alanı aşağıdaki şekilde tanımlanabilir.


nvarchar(max) ile aynı özelliktedir. maksimum 1,073,741,823 karakter veri girilebilir.

ntext:  ‘text’ veri türü için bahsetmiş olduğumuz bütün özellikleri barındıran bir veri türüdür. Farklı olarak verileri ANSI formatta değil de Unicode formatta tutmaktadır.

Örnek: ‘products’ tablosunda, «description» alanı aşağıdaki şekilde tanımlanabilir.

Dosyaları (binary data) saklamak için kullanılır. Maksimum 2,147,483,647 bayt (2 GB) büyüklüğünde dosya saklayabilir.

image: Veritabanında resim tutmak için kullanılan bir veri türüdür.

Örnek: ‘staff’ tablosunda kişinin adı, soyadı bilgilerinin yanı sıra resim bilgisi de tutulmak isteniyorsa bu veri türü kullanılabilir.

4 bayt yer kaplar. C#’ta da int tipine karşılık gelir.

int (integer): Tam sayı verilerini saklamak için kullanılmaktadır. Bu alana pozitif ve negatif tamsayılar girilebilir. Bu alana girilebilen negatif ve pozitif tamsayılar

-2.147.483.648 ile 2.147.483.647 arasındaki değerler girilebilir.

Örnek: ‘staff’ tablosunda kişinin aldığı ücret bilgisi tutulmak isteniyorsa bu veri türü kullanılabilir.



bigint (big integer): Çok büyük sayısal verileri saklamak için kullanılan bir veri türüdür. Bu alana -9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807 arasındaki değerler girilebilir.
8 bayt yer kaplar. C#’ta long tipine karşılık gelir.
Örnek: staff tablosunda kişinin aldığı ücret bilgisi tutulmak isteniyorsa bu veri türü kullanılabilir.


smallint (small integer): Küçük tamsayı değerlerini tanımlamak için kullanılan bir veri türüdür. Bu alana -32.768 ile 32.765 arasındaki değerler yazılabilir.

Örnek: ‘staff’ tablosunda kişinin aldığı ücret bilgisi tutulmak isteniyorsa bu veri türü kullanılabilir.



tinyint: Bu alan 0 ile 255 arasındaki sayısal değerlerin eklenebilmesi için kullanılan bir veri türüdür.
Örnek: ‘products’ tablosunda ürünlerin adet bilgileri tutulmak isteniyorsa bu veri türü kullanılabilir.


decimal: Ondalıklı yani virgüllü sayıların saklanması için tanımlanan bir veri türüdür.
Kapladığı alan kullanılan basamak sayısına göre değişir. Virgülden önce ve sonra toplam basamak sayısı 1-9 arası 5 bayt; 10-19 arası 9 bayt; 20-28 arası 13 bayt; 29-38 arası 17 bayt yer kaplar.
Örnek: ‘products’ tablosunda ürünlerin fiyat bilgileri tutulmak isteniyorsa bu veri türü kullanılabilir.

float: Çok büyük kesirli sayıları saklamak için kullanılan bir veri türüdür.
Kullanılmak istenen boyuta göre ortalama değer alır. float(n) şeklinde kullanılır. Mesela virgülden sonra 20 bitlik bir alan kullanılmasını istiyoruz. O zaman float(20) olarak yazılır ve verdiğimiz bu boyuta göre kaydetmek istediğimiz sayı yuvarlanır.
Örnek: ‘staff’ tablosunda çalışanın aylık prim bilgileri tutulmak isteniyorsa bu veri türü kullanılabilir.



real: ‘float’ a göre daha küçük ondalıklı sayıları saklamak için kullanılan bir veri türüdür.
Örnek: ‘staff’ tablosunda çalışanın aylık prim bilgileri tutulmak isteniyorsa bu veri türü kullanılabilir.
money ve smallmoney: Parasal değerlerin saklanması için kullanılan veri türleridir.
Örnek: ‘staff’ tablosunda çalışanın aylık ücret bilgileri tutulmak isteniyorsa bu veri türü kullanılabilir.


datetime ve smalldatetime: Tarih ve saat bilgilerinin saklanması için kullanılan veri türleridir.
YYYY-MM-DD hh:mm:ss[.mmm] şeklinde tarihi tutar (2011-01-21 12:35:29.123 gibi). 8 bayt yer kaplar.
smalldatetime: YYYY-MM-DD hh:mm:ss şeklinde tarih tutar. 4 bayt yer kaplar. 1900-01-01 00:00:00 ile 2079-06-06 23:59:59 arası tarih değerlerini saklar.
Örnek: ‘staff’ tablosunda çalışanın doğum tarihi bilgisi tutulmak isteniyorsa bu veri türü kullanılabilir.

binary: İkili (binary) verilerin saklanması için kullanılan bir veri türüdür.

binary(n) şeklinde, n değeri 1 ile 8000 arasında değer alır.

n bayt kadar yer kaplar.


bit: 0 ve 1 gibi iki değerin yani iki seçenekli verilerin saklanmasını sağlayan veri türüdür.

Örnek: ‘staff’ tablosunda çalışanın sigortalı olup olmadığı bilgisi tutulmak isteniyorsa bu veri türü kullanılabilir.