12 Ocak 2017 Perşembe

TO_CHAR ( ) Fonksiyonu



Bu fonksiyon, tarih veya sayısal bilginin istenildiği gibi biçimlendirilerek karakter dizisine dönüştürülmesini sağlar. İki farklı uygulama alanı bulunmaktadır.
Eğer tarih bilgisini karakter dizisine, yani bir katara dönüştürmek söz konusu ise;
    TO_CHAR (tarih, ‘biçimlendirme ifadesi’)
Eğer, bir sayısal değerin karakter katarına dönüştürülmesi isteniyorsa,
        TO_CHAR (sayı, ‘biçimlendirme ifadesi’)
tanımı kullanılır.



Tarihle ilgili biçimlendirme ifadesi; bazı biçimlendirme elemanlarından ve kurallardan oluşur. Biçimlendirme ifadesi, tek tırnaklar arasında yazılır ve büyük küçük harf ayrımına karşı duyarlıdır. Tarih ile ilgili biçimlendirme ifadelerinde aşağıdaki tanımlardan yararlanılır;



Zamanla ilgili biçimlendirme ifadeleri ise aşağıdaki elemanlardan oluşabilir;

Örnek-1: Personelin işe giriş tarihlerini MM/YY biçiminde elde etmek için şu şekilde bir sorgu düzenlenebilir;

SELECT adi, TO_CHAR (giris_tar, 'MM/YY')
FROM personel

Örnek-2: Personel maaşlarını, binler hanesinden ayırarak elde etmek istiyoruz. Ayrıca ücret rakamının sol tarafına ($) işaretini yerleştireceğiz. Amacımıza uygun sorgu şu şekilde düzenlenebilir;

SELECT adi, TO_CHAR (maasi, ‘$99.999')
FROM personel

TO_NUMBER ( ) Fonksiyonu





Karakter alan olarak tanımlanmış bir sütunun içerdiği sayısal değerleri, sayısal veri türüne dönüştürmek için TO_NUMBER ( ) fonksiyonu kullanılır. Bu fonksiyon şu şekilde tanımlanır;

     TO_NUMBER (katar, ‘biçimlendirme ifadesi’)

Biçimlendirme ifadesi, TO_CHAR  () fonksiyonunda olduğu gibidir.


Örnek: İşe giriş tarihlerine göre personel tablosunu sorgulayacağız. Arama ifadesi "Ocak 1, 1980" biçiminde olabilir. Bu ifadeyi SELECT deyiminin yorumlayabileceği bir biçime dönüştürmek gerekiyor. Amacımıza uygun SELECT deyimi şu şekilde olabilir;

SELECT adi, giris_tar      FROM personel
           WHERE giris_tar = TO_DATE ('Ocak 1, 1980', MONTH DD, YYYY')

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.



SQL FONKSİYONLARININ KULLANIMI


Bu bölümde, SQL yapısal programlama dilinde standart olarak bulunan ve veri tabanı yönetiminde bizlere büyük kolaylıklar sağlayan temel SQL fonksiyonlarını ve bu fonksiyonların nasıl kullanılacağını gösterilmketedir.
Fonksiyon kavramı,
SQL'de fonksiyonların yeri,
Tek satır fonksiyonlarının kullanımı:
Karakter fonksiyonları,
Sayısal fonksiyonlar,
Tarih fonksiyonları,
Dönüştürme fonksiyonları,
Diğer SQL fonksiyonları.
İç içe fonksiyon kullanımı.

Fonksiyon Nedir?

Fonksiyonlar veya bir başka deyişle işlevler, SQL'e bazı güçlü özellikler katan olanaklar olarak değerlendirilir.

SQL fonksiyonları, aynen programlama dillerinde olduğu gibi, kullanıcıya bazı özel işlemleri ve hesaplamaları otomatik olarak sağlar.
Bir fonksiyon; çeşitli argümanları girdi olarak alıp bir sonuç üreten hazır bileşenlerdir.
Kullanıcının, fonksiyonun adını ve gerekli argümanları tanımlaması yeterlidir. Bu bilgilere dayalı olarak fonksiyon, bir sonuç döndürür (üretir).

SQL Fonksiyonları

SQL fonksiyonları iki ana grup altında incelenmektedir:
Tek satır fonksiyonları,
Çift satır fonksiyonları.

Tek satır fonksiyonları, tablonun bir satırı için uygulanır ve her satır için bir sonuç üretilir.

Çoklu satır fonksiyonları ise, bir grup satıra uygulanır ve sonuç buna göre elde edilir.


Tek Satır Fonksiyonları

Tek satır fonksiyonları, tablonun her bir satırına uygulanan fonksiyonlardır.

Tek satır fonksiyonlarının birçok türü bulunmaktadır.
Karakter fonksiyonları,
Sayısal fonksiyonlar,
Tarih fonksiyonları,
Dönüştürme fonksiyonları,
Genel fonksiyonlar.

STDDEV ( ) Fonksiyonu


Standart sapma, sayısal verilerin aritmetik ortalamalardan farklarının kareli ortalaması olarak bilinir. Bu kavram istatistiksel veri analizlerinde sıkça kullanılır. Söz konusu hesaplamayı yapan SQL fonksiyonu ise; STDDEV ( ) 'dir.

Örnek-1: Personel maaşlarının standart sapmasını bulmak istiyoruz. Bunun için SELECT deyimi aşağıda gösterildiği biçimde kullanılır;

SELECT STDDEV (maasi) AS "Standart_Sapma"
    FROM personel

SUM ( ) Fonksiyonu



Sütunların içerdiği sayısal değerleri toplamak amacıyla SUM ( ) fonksiyonundan yararlanılır.

Örnek-1: Tüm personel maaşlarının toplamını hesaplayan SELECT deyimi aşağıda gösterildiği biçimde oluşturulabilir;

SELECT SUM (maasi) AS "Toplam"
    FROM personel

Örnek-2: Sadece erkek personele ödenen aylık toplam maaş ne kadardır?

SELECT SUM (maasi) AS "Toplam Ödenen"      FROM personel            WHERE cinsiyet = 1

AVG ( ) Fonksiyonu




Herhangi bir sütunun içerdiği sayısal değerlerin aritmetik ortalamasını hesaplamak amacıyla; AVG ( ) fonksiyonu kullanılır. Bu fonksiyonun uygulandığı sütunun veri türü sayısal olmalıdır.

Örnek-1: Personel maaşlarını göz önüne alalım. Maaşların ortalamasını bulmak için şöyle bir yol izlenir;

SELECT AVG (maasi) AS "Ortalama"
    FROM personel

Örnek-2: Personel arasında, bolumID’si 5 olanların ortalama maaşı aşağıda gösterildiği biçimde hesaplanabilir;

SELECT AVG (maasi) AS "Ortalama"      FROM personel            WHERE bolumID = 5

Sayısal Fonksiyonlar


Sayısal fonksiyonlar dört işlemin yanı sıra AVG, SUM, STDDEV, VARIANCE, MAX, MIN, COUNT, ABS, SQR, RAND, POWER, CEILING, FLOOR, ROUND, EXP, LOG ve trigonometrik fonksiyonlar olan SIN, COS, TAN ve COT fonksiyonlarını kapsamaktadır.

Bu fonksiyonları örnekler üzerinde anlatarak devam edeceğiz. Bunun için bir personel tablosu oluşturup ve içerisine yeterli miktarda kayıt girelim.