Sağlık ve Bilişimde Objektif Haber

  English

Merhaba,

    Çözüm Haber dergisinin bu ilk sayısında ve bundan sonraki sayılarında, Sql komutlarını tanıtarak, Çözüm Bilgisayar Yazılımlarındaki kullanım şekillerinden örnekler vereceğiz.

    Aşağıdaki uygulamalar, Çözüm Yazılımlarının ana menüsündeki F9-Sql İşlemlerinde uygulanmıştır. Sizler de bu örnekleri aynı menüde uygulayabilirsiniz.

    Bu ilk sayımızda, Hasta kayıtlarımızı cinsiyetlerine göre gruplandırarak, grafik olarak raporlayacağız. Öncelikle bazı sql komutlarını öğrenmemiz gerekiyor.

SELECT

    Tablo veya view (görüntü) içerisindeki veri satırlarını geri döndürür. SELECT komutunda sonra mutlaka FROM komutu kullanılmalıdır. FROM, geri döndürülecek verilerin kaynağını belirler.

SELECT * FROM hasta

komutu ile, hasta tablosundaki tüm alanlar görüntülenir.

SELECT hs_key, hs_ad, hs_soyad FROM hasta

komutu ile hasta tablosundaki 3 alan görüntülenir. FROM komutundan sonra, tablo ismi yazılabileceği gibi view ismi de yazılabilir.

CREATE OR REPLACE / DROP VIEW CREATE [OR REPLACE] VIEW viewname AS viewquery

    Tablo ile aynı özellikleri taşıyan fakat içerisinde kayıt bulundurmayan nesnelerdir. SELECT komutu ile içeriği görüntülenmek istendiğinde, içindeki sql cümleciğini çalıştırır ve sonuçları tablo şeklinde döndürür.

CREATE VIEW hastarap AS SELECT hs_key, hs_ad, hs_soyad, cinsiyet FROM hasta

    Viewname, yeni oluşturduğumuz view'a vereceğimiz isimdir. Örnekte hastarap ismi verilmiştir. Viewquery, view oluşturma esnasında, esas alınan sorgu ifadesidir. View'ın içeriği bu sorgu ifadesine göre belirlenir.

    Örnekte, viewquery olarak SELECT hs_key, hs_ad, hs_soyad, cinsiyet FROM hasta ifadesi yazılmıştır.

     Komutunu çalıştırdığımızda, hastarap adlı bir view oluşturulur. SELECT ifadesi ile view içeriği görüntülenmek istendiğinde, view oluşturma esnasında belirtilen viewquery cümleciği çalıştırılır ve sonuç olarak döndürülür.

SELECT * FROM hastarap

    Sql'i çalıştırıldığında, viewquery olarak belirlenen SELECT hs_key, hs_ad, hs_soyad, cinsiyet FROM hasta çalıştırılır ve bu sorgunun sonucu geri döndürülür. Bu durumda, yukarıdaki sql'in sonucu şu şekilde olacaktır.

    Sütun isimleri olarak, hs_key yerine dosya, hs_ad yerine ad, hs_soyad yerine soyad yazalım. Bunun için hastarap view'ına ait viewquery ifadesini değiştirmemiz gerekecek. Bunu iki şekilde yapabiliriz.

HS_KEY
HS_AD
HS_SOYAD
CINSIYET
1
SAADET
GÜNDÜZER
K
2
ZAFER
İLDEŞ
E
3
SEVGİ
DUMAN
K

    İlk olarak DROP VIEW hastarap yazıp, öncelikle ilk oluşturduğumuz view'ı drop ederiz ve sonra yeni haliyle tekrar oluştururuz.

CREATE VIEW hastarap AS SELECT hs_key AS dosya, hs_ad AS ad, hs_soyad AS soyad, cinsiyet FROM hasta

    Ya da, CREATE OR REPLACE komutunu kullanarak (bu durumda DROP komutunu kullanmamıza gerek kalmaz), öncekinin üzerine tekrar oluştururuz.

CREATE OR REPLACE VIEW hastarap AS SELECT hs_key AS dosya, hs_ad AS ad, hs_soyad AS soyad, cinsiyet FROM hasta

    Yukarıdaki sql'i çalıştırdıktan sonra, SELECT * FROM hastarap denildiğinde aşağıdaki sonucu elde ederiz.

DOSYA
AD
SOYAD
CINSIYET
1
SAADET
GÜNDÜZER
K
2
ZAFER
İLDEŞ
E
3
SEVGİ
DUMAN
K

DECODE

    DECODE(Alan, Aranan Değer, Sonuç [,Aranan Değer, sonuç...] [,default) Komut içerisinde if (eğer) ifadesinin kullanılmasıdır. Alan, şarta tabi tutacağımız alanı ifade eder. Aranan Değer, Alan içerisinde aradığımız değerdir.. Sonuç ise, eğer alandaki değer aranan değer ise, geri döndürülür. Şöyle ki; HASTA tablosunda kayıtlı olan hastalarımızın cinsiyet bilgisi cinsiyet alanında; Erkek için E, Kadın için K olarak saklanır. SELECT * FROM hastarap ifadesi çalıştırıldığında yukarıdaki sonucu elde etmiştik. Şimdi, DECODE komutunu kullanarak K harfi yerine Kadın yazdıralım.

CREATE OR REPLACE VIEW hastarap AS SELECT hs_key AS dosya, hs_ad AS ad, hs_soyad AS soyad, DECODE(cinsiyet, 'K', 'Kadın') AS kcinsiyet FROM hasta

    Yukarıdaki ifadeyi çalıştırarak hastarap' ı tekrar oluşturalım ve arkasında SELECT * FROM hastarap diyelim.

HS_KEY
HS_AD
HS_SOYAD
KCINSIYET
1
SAADET
GÜNDÜZER
Kadın
2
ZAFER
İLDEŞ
3
SEVGİ
DUMAN
Kadın

    Görüldüğü üzere Zafer İLDEŞ' in cinsiyet alanında herhangi bir değer yazmıyor ve cinsiyet alanı yerine yenicinsiyet alanı oluştu. Şimdi erkekler için de bir sütun oluşturalım.

CREATE OR REPLACE VIEW hastarap AS SELECT hs_key AS dosya, hs_ad AS ad, hs_soyad AS soyad, DECODE(cinsiyet, 'K', 'Kadın') AS kcinsiyet, DECODE(cinsiyet, 'E', 'Erkek') AS ecinsiyet FROM hasta

    Yukarıdaki ifadeyi çalıştırarak hastarap'ı tekrar oluşturalım ve arkasından SELECT * FROM hastarap diyelim.

HS_KEY
HS_AD
HS_SOYAD
KCINSIYET
ECINSIYET
1
SAADET
GÜNDÜZER
Kadın
2
ZAFER
İLDEŞ
Erkek
3
SEVGİ
DUMAN
Kadın

    Kadın ve Erkekler için oluşan bu iki sütunu, yine DECODE komutunun özelliklerini kullanarak birleştirelim ve yeni cinsiyet alanı yerine cinsiyet alanı oluşturalım.

CREATE OR REPLACE VIEW hastarap AS SELECT hs_key AS dosya, hs_ad AS ad, hs_soyad AS soyad, DECODE(cinsiyet, 'K', 'Kadın', 'E', 'Erkek') AS cinsiyet FROM hasta

HS_KEY
HS_AD
HS_SOYAD
CINSIYET
1
SAADET
GÜNDÜZER
Kadın
2
ZAFER
İLDEŞ
Erkek
3
SEVGİ
DUMAN
Kadın

    İkinci şartı ortadan kaldırarak, DECODE komutunu biraz daha kısaltabiliriz.

CREATE OR REPLACE VIEW hastarap AS SELECT hs_key AS dosya, hs_ad AS ad, hs_soyad AS soyad, DECODE(cinsiyet, 'K', 'Kadın', 'Erkek') AS cinsiyet FROM hasta

    Görüldüğü üzere, 'Erkek' için herhangi bir şart yazılmadı. Bunun anlamı, cinsiyeti K olanlara Kadın, diğer kayıtlara Erkek yazılacağıdır.

COUNT

COUNT(ifade)

    Verilen ifadedeki veya bir sütun içerisindeki değerleri sayar ve geri döndürür. Tek başına kullanılabileceği gibi, bir veya birkaç alanla birlikte de kullanılabilir, bu durumda GROUP BY ifadesinin kullanılması gerekir.

SELECT COUNT(*) FROM HASTA ifadesi, hasta tablosundaki kayıt sayısını geri döndürür.

COUNT(*)
300,741

    Cinsiyetlerine göre hasta sayılarını almak için

SELECT cinsiyet, COUNT(*) AS toplam FROM HASTA GROUP BY cinsiyet şeklinde bir ifade yazılmalıdır.

CİNSİYET TOPLAM
Kadın 118,118
Erkek 182,583

    Bir veya birden fazla alanla birlikte COUNT, AVG, SUM, MAX, MIN, STDDEV, VARIANCE gibi komutlar kullanıldığında GROUP BY komutunun kullanılması gerekir. Şimdide DECODE komutunu kullanarak, K yerine Kadın, E yerine Erkek yazdıralım.

SELECT DECODE(cinsiyet, 'K', 'Kadın', 'Erkek') AS cinsiyet , COUNT(*) AS toplam FROM hasta GROUP BY DECODE(cinsiyet, 'K', 'Kadın', 'Erkek')

    Bu sonucu grafik olarak görmek için Ctrl+G tuşuna basınız.

DUAL

    Son olarak, SELECT ifadesiyle birlikte kullanılan DUAL komutunu inceleyelim. SELECT komutu kullanılırken, FROM komutundan sonra kaynak belirtilmelidir. Oracle'ın fonksiyonlarını kullanırken (SYSDATE, ROUND, ABS, TAN, COS, CEIL vb.) eğer bu fonksiyonlar bir tablo ile kullanılmayacaksa, kaynak yerine DUAL yazılır. Örneğin, oracle'ın sistem tarihini

SELECT SYSDATE FROM DUAL ifadesi ile öğrenebiliriz.

    123.45 sayısını yuvarlatılmış halini bulmak için SELECT ROUND(123.45) FROM dual yazmamız gerekir.