10 Ekim 2008 Cuma

Veri Tipleri ve Temel SQL Queryleri

ORACLE VERİ TİPLERİ

Kullandığımız veritabanında, verileri saklayabilmemiz için tablolar yaratmamız gerekmektedir. Bu tablolarında bünyesinde de birtakım veri tipleri mevcuttur. Bu veri tipleri, saklanabilecek verinin bir anlamda kimliğini açığa çıkartmaktadır.

Veri tipleri arasında;

- CHAR(X): Büyüklüğü 1 byte ile 2000 byte arasındadır ve bu aralıktaki karakter değerlerini saklayabilmek için kullanılır. CHAR'ın özelliği, tablo yaratılırken eğer CHAR(5) olarak bir değişken yarattıysak, verilen değelerin tamamı doldurulacak demektir. Eğer 5'ten büyük bir karakter girmeye çalışırsanız hata alırsınız fakat düzeltemenin yoluda modify etmektir.

- VARCHAR2(X): Büyüklüğü 1 byte ile 4000 byte arasındadır. CHAR'dan en büyük farkı ve en büyük kullanılma sebeplerinden biri ise, VARCHAR(200) ile VARCHAR(2)'nin yaratıldıkları zaman aynı yeri kaplıyor olmasıdır. Yani, bir değer girilene kadar veritabanında aynı miktarda yeri işgal ediyorlar. Burada gelebilecek soru; neden varchar değilde varchar2 olabilir. varchar reserved keyworddür ve ileriki bir zamanda kullanılmak üzere saklanmıştır.

NUMBER(X,Y): X tam kısmı, Y ise ondalıklı kısmı temsil eder. Örneğin; number(4,1) yazarsak 3 tam sayılı ve bir ondalıklı sayı olacak demektir. Belirtilen ondalıklı sayıdan daha büyük ondalıklar girildiğinde, Oracle bu ondalığı, belirtilen ondalığa kadar rounded-up olarak yuvarlar. Ondalık belirtmeden de bir değişken tanımlanabilir. Bu bir tam sayı olacağını ifade edecektir.

DATE: Bu veri tipi, tarih ve zaman bilgilerini barındırır. Toplam 7 byte büyüklüğündedir ve en küçük birimi saniyedir.

LONG, RAW, TIMESTAMP, CLOB, ROWID gibi diğer veri tipleri de mevcuttur.

SQL QUERYLERİ
Veritabanına kaydettiğimiz verileri alma, görünteleme, raporlama vb işleri yerine getirmemize yarayan, Oracle veritabanının olduğu gibi diğer bütün veritabanlarının en temel yapıtaşı, atomu olan sorgulama sistemine SQL Queryleri denir(QUERY-Cümle). SQL Queryleri ile, ilişkisel veritabanı özellikleri, tablo birleştirme, yaratma, düşürme, boşaltma, pl/sql içinde dinamik olarak gömebilme, yönetim komutlarını yerine getirebilme, kullanıcılar yaratabilme, yaratılanlara haklar tanıyabilme ve düşürebilme, system kullanıcısının segmentlerindeki bilgileri toplama, görüntüleme gibi nice komutu yerine getirebiliriz.
Basit bir SQL yapısı ve sorgu örneği ise şu şekilde verilebilir:
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
Yukarıdaki yapı, bir sql sorgusunda sırayla takip edilmesi gereken yapıdır. Bu yapıda select'in ardından gelecek bir group by veya havingden önce gelebilecek bir order by sorgunun hata vermesine ve çalışmamasına sebep olacaktır.
SELECT *
FROM DENEME;
Yukarıdaki sorguda istenilen şey, DENEME tablosundaki bütün kolonlardaki verilerin çekilmesi. Buradaki "*" bütün kolonları simgelemektedir. Yani, yukarıda belirttiğim veri tiplerinden tabloya işlenmiş olanları ve içlerinde barındırdığı verilerin tamamı demektir.
Eğer DENEME tablosunda 2 veri tipi kayıtlı ise örneğin, kullanici_adi varchar2(40) ve kullanici_soyadi varchar2(45), yukarıdaki sorguyu şu şekilde de yazabiliriz:
SELECT KULLANICI_ADI, KULLANICI_SOYADI
FROM DENEME;
Ya da,
SELECT D.*
FROM DENEME D;
Bu da, DENEME tablosuna D tagı ekliyoruz ve D'nin bütün verilerini çekmek istiyoruz demektir.
Sütünların hepsini çekebilidiğimiz gibi bir kısmınıda, belirtli koşullarla ve taglarla çekebiliriz. Örneğin;
SELECT KULLANICI_ADI AS AD, KULLANICI_SOYADI AS SOYAD
FROM DENEME;
Unutmayalım ki yukarıda kullandığım "AS" keyword'ü Oracle 9i ile birlikte depracate edilmiştir ve kullanılmamaktadır. Bunun yerine;
SELECT KULLANICI_ADI AD, KULLANICI_SOYADI SOYAD
FROM DENEME;
diyebiliyoruz. Bu şekilde yazılan bir sorgunun ekrana yansıması ise sütün adı olarak KULLANICI_ADI değilde, AD olması olacaktır.
SQL QUERYLERİ İLE VERİLERİN SINIRLANMASI
Bir select cümlesi ile bütün verileri almak istemiyorsak ve birtakım veriler arasından da bir gruplarını seçmek istiyorsak kullandığımız çok nitelikli ve bol miktarda fonksiyon ve grup fonksiyonları vardır.
Örneğin;
Bir tabloda eğer birden fazla grup_id'si bulunuyorsa ve biz sadece tekil olarak grup_idleri görmek istiyorsak DISTINCT kullanmalıyız.
SELECT DISTINCT GRUP_ID
FROM DENEME;
Distinct için unutulmaması gereken en önemli nokta ise, ardından gelen bütün sütünlar da distinct, yani tekil olacaktır. Yukarıdaki örnekte grup_id'nin yanına user_id'de ekleseydik, ikisinin birden tekil olacağı anlaşılacaktı.
Bir diğer veri sınırlandırma yöntemi ise WHERE koşuludur. Bu koşul ile tabloda bulunan verilerin içeriğine göre sorgular yazabilir ve görmek istediğimiz kadarını görmeyi başarabiliriz.
Örneğin;
SELECT KULLANICI_ADI AD, GRUP_ID ID
FROM DENEME
WHERE GRUP_ID IS NULL;
Deneme tablosundan kullanici_adini AD olarak ve grup_id'yi ID olarak çektiğimiz ancak grup_idlerinin NULL değer, yani değersiz, boş olduğu verileri bu şekilde alabiliriz. NULL demek sıfır demek değildir!..
Bundan sonraki konumuzda, Mantıksal operatörler olan AND, FALSE, NULL gibi konularla diğer sınırlandırma operatörlerini inceleyeceğiz.
İyi günler,
Ogan

1 yorum:

Adsız dedi ki...

ogan merhaba w
epsayfanı takip ediyorum. Ve seni taktir ediyorum Çok güzel ve yararlı bilgiler veriyorsun Başarılarının devamını dilerim Eline sağlık ŞÜKRAN

Takip et: @oganozdogan