Rastgele Yazılar : Tablespace Yönetimi - 3
Rastgele Yazılar : Oracle eksiksiz bir bulut resmi çiziyor
Rastgele Yazılar : RAC(Real Application Cluster) Architecture(Mimarisi)
Rastgele Yazılar : Veri Madenciliği Nedir
Rastgele Yazılar : Flashback Database Komutu Kullanımı ve Yapabilirlikleri
Rastgele Yazılar : Nedir bu Data Warehouse?
Rastgele Yazılar : Slowly Changing Dimensions Nedir?
Rastgele Yazılar : Oracle 'start' ve 'shutdown' aşamaları
Rastgele Yazılar : Oracle Veritabanı İpuçları
Rastgele Yazılar : Oracle Mantıksal Yapısı
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.
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
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
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
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
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.
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