Sayfalar

27 Ocak 2013 Pazar

Şema Nesnelerinin Yönetimi ve Silinen Tabloları Kurtarma

Merhaba arkadaşlar!

Daha önce DDL ve şema nesnelerini anlatan yazılar yazdık. Fakat şema nesneleri üzerinde nasıl değişimler yapacağımız hakkında çok fazla bilgi vermedik. Biraz da bunlardan bahsedelim istiyorum.

Tablolar Üzerinde Değişimler
Daha önce ALTER TABLE komutundan bahsetmiştik. Zaten ALTER komutunu var olan bir nesneyi düzenlemek amacıyla kullandığımızı biliyoruz. Peki ALTER TABLE ile neler yapılabilir?
  • Var olan sütunları değiştirebilirsiniz. Bir sütunda veri tipini, verinin boyutunu ve varsayılan değer kısımlarını değiştirebilirsiniz. Varsayılan değer kısmını değiştirirseniz bu önceki kayıtları etkilemez. Bundan sonraki kayıtlar bu değere göre düzenlenirler.
    ALTER TABE tabloismi
    MODIFY (sütunismi veritipi [DEFAULT varsayilandeger]
    [, düzenlenecek diger sütunlar]);
  • Yeni sütun ekleyebilirsiniz. Eklediğiniz son sütun tabloda en sona yerleşir.
    ALTER TABE tabloismi
    ADD (sütunismi veritipi [DEFAULT varsayilandeger]
    [, eklenecek diger sütunlar]);
  • Var olan bir sütunu silebilirsiniz
    ALTER TABE tabloismi
    DROP sütunismi;
  • Kullanılmayan sütunları "kullanılmayan" olarak işaretleyebilirsiniz. Böylece veritabanındaki performansa pozitif katkıda bulunabilirsiniz. Bir sütunu UNUSED olarak işaretlemek için:
    ALTER TABLE tabloismi
    SET UNUSED [COLUMN] (sütunismi);

    UNUSED durumunu kaldırmak için:
    ALTER TABLE tabloismi
    DROP UNUSED COLUMNS;

25 Ocak 2013 Cuma

Veri Sözlüğü ve Kullanıcı Erişim Hakları

Merhaba Arkadaşlar!

Biliyoruz ki Oracle RDBMS; güvenli oluşuyla tercih edilen bir sistemdir. Zaten veritabanına bağlandığınız andan itibaren size verilen yetkilerle hareket etmek durumundasınız. Tabiri caizse bir başkasının şemasında at koşturmanıza izin verilmez :) Her kullanıcı kendi şemasında çeşitli haklara sahip olduğu gibi başkalarının şemalarında da bazı ayrıcalıklara sahiptir. Tahmin edeceğiniz gibi bu hakları veritabanı yöneticileri belirler. Bazen de yetkili olan kullanıcılar kendi şemalarında diğer kullanıcıların neler yapabileceğini belirleyebilirler. Bugün tüm bunların nasıl yapılacağını öğreneceğiz.

Tüm bu hak verme işlemleri PL/SQL ile sağlanır. Veritabanı yöneticileri, kullanıcıyı daha oluştururken bu hakları belirlerler. Kullanıcı aktif olup, veritabanına bağlandığı andan itibaren, bu haklar devreye girerler. Yani DBA sizin ne kadar özgür olmanızı istiyorsa o kadar özgürsünüz demektir :) Bu sınırların ötesine geçemezsiniz.

Takdir edersiniz ki bu hakların verilmesi büyük önem arz eder. Bir kullanıcıya yanlışlıkla maaşların tutulduğu tabloya yazma hakkı verirseniz ve bu kullanıcı da muzur çıkar ve biraz da SQL biliyorsa, tüm şirketi ters yüz edebilir. Bazen öyle durumlar olur ki DBA bile bazı tablolar üzerinde tam yetkili olamaz.Bu açıdan bakıldığında bu konunun önemli olduğunu anlıyoruz. Şimdi; SQL konuları boyunca sürekli veri sözlüğü olarak bahsettiğimiz alan hakkında bilgi vererek konuya başlayalım. Zira bu konu bugünkü konu ile de yakından ilgili.

24 Ocak 2013 Perşembe

Hiyerarşik Sorgulama

Merhaba Arkadaşlar!

Veriler veritabanında çoğu kez bir ağaç yapısıyla yerleşirler. Örneğin; bir şirketin organizasyon yapısını düşünürseniz, en başta şirketin sahibi, onun altında bölümlerin yöneticileri, onun altında iş birimlerinin yöneticileri ve en altta da çalışanlar şeklinde hiyerarşik bir yapıda dizilirler. Bu bir ağaç yapısıdır. Ağaç yapısında düğümler ve dallar olur. Dallar düğümleri birbirine bağlayan ilişkilerdir. Burada elbette ağaç veri yapısını anlatmayacağım.

Açıklamak istediğimiz nokta şu: Veritabanlarında saklanan veriler arasındaki hiyerarşiyi nasıl ortaya çıkarabiliriz? Örneğin sizden bir şirketin çalışanları arasındaki hiyerarşik yapıyı bulmanız istendi. Bunu nasıl sorgularsınız? Elbette Oracle'ın PL/SQL'i bu duruma bir çözüm getiriyor. Hemen bakalım:

SELECT [LEVEL], sütunlar, ifadeler...
FROM tabloismi
[WHERE sartlar]
[START WITH sartlar]
[CONNECT BY PRIOR sartlar];


ROLLUP ve CUBE İle İstatistik Oluşturma

Merhaba Arkadaşlar,

SQL ile ilgili konuları tamamladık. Şimdi bazı temel PL/SQL kavramlarını öğrenmeye çalışacağız. Elbette PL/SQL uzmanı olmak için uğraşmıyoruz :) Ancak bizim için çok yararlı olabilecek komutları öğrenmek durumundayız. Ki Oracle sertifikasyon sınavlarını başarmak isteyen biriyseniz; bu kavramların da sınav konularına dahil olduğunu bilmenizi isterim.

Bu kez, daha önceden öğrendiğimiz GROUP BY ifadesini yeni kavramlarla zenginleştireceğiz. Bunlar ROLLUP ve CUBE kavramları.

Biliyoruz ki Oracle'ın, iş dünyasında tercih edilmesinin önemli nedenleri arasında; "çok özel istatistiksel bilgi sunma kabiliyeti" sayılır. Hatta öyle ki bu yetkinliklerden OLAP uygulamasını kullanmadan da faydalanabilirsiniz. Biliyorsunuz ki OLAP çok boyutlu bir raporlama sistemi ve veritabanızdaki verilerle oluşturacağınız raporlamalarda size inanılmaz kolaylık sağlayan bir sistem. Ancak OLAP kullanmak istemediğinizi yada sisteminizde OLAP sisteminin aktif olmadığını düşünelim. Verilerinizi nasıl istatistiksel olarak görüp değerlendireceğiz?

Konuya geçmeden önce hemen GROUP BY ifadeli olan SQL cümlemizin son halini kısaca hatırlayalım:

22 Ocak 2013 Salı

HR Şeması İle Uygulamalı SQL(Şema Nesneleri)

Merhaba Arkadaşlar!

Bu yazıda tablolardan sonraki diğer şema nesneleriyle ilgileneceğiz. Böylelikle SQL konusunu bitirmiş oluyoruz. Ancak daha sertifika sınavları sadece SQL'den ibaret değil. Bu sınavlar için PL/SQL'in bazı konularını daha bilmeniz gerekiyor. Bunları da mümkün oldukça burada işleyeceğiz.

1. Görüntüler(Views)
Görüntüler hayali, aslında fiziksel olarak var olmayan tablolardır. Sanal bir tablo olarak düşünebilirsiniz. Bu tabloları bir veya birden fazla gerçek yani fiziksel olarak var olan tabloların birleşiminden oluşturursunuz. Böylelikle aşağıdaki avantajları yakalarsınız:
  • Çok sık kullanılan ve aynı tabloda bulunmayan verilerin bir tabloda birleşimi ile kullanım kolaylığı sağlar.
  • Veriyi tablodan bağımsız hale getirir ve kullanım esnekliği sağlar.
  • Erişimini kısıtlamak istediğiniz verileri bu yöntemle kısıtlarsınız.
  • Karmaşık sorguların (çok fazla JOIN içeren v.b.) kolaylaştırılmasını sağlar.
Bu faydalarla görüntüler işinizi gerçekten kolaylaştıracaktır. Tablo oluştururken kullandığımız DDL komutları bütün şema nesneleri için kullanılır. Oluşturmak için CREATE VIEW, değiştirmek için CREATE OR REPLACE VIEW, düşürmek/kaldırmak için DROP VIEW şeklinde kullanılır.

20 Ocak 2013 Pazar

HR Şeması İle Uygulamalı SQL(DDL)

Merhaba arkadaşlar!

SQL'e ait son konularla devam ediyoruz. DML komutlarından sonra sıra DDL komutlarında. DDL'e geçmeden neden DDL komutlarına ihtiyaç duyuluyor kısaca bahsedelim:

Bildiğiniz gibi DDL-Data Definiton Language yani Veri Tanımlama Dili, veritabanı nesnelerini oluşturmak ve yönetmek maksadıyla kullanılır. Peki nedir bu veritabanı nesneleri:

  • Tablolar: Verilerin saklandığı satır ve sütunlardan oluşan yapılar.
  • Görüntüler: Tabloların kullanıcı ihtiyacına göre şekillendirilerek hayali tablolar oluşturmayla meydana gelen tablo benzeri yapılar. Kullanım kolaylığı için tercih edilirler.
  • İndeksler: Verilere erişim hızınızı ve sorgu performansınızı artıran, verilerin bir bakıma adreslerini tutan yapılar.
  • Eş Anlamlılar: Herhangi bir veritabanı nesnesine kullanım kolaylığı için farklı isimler verilebilir.
  • Sekanslar: Özel durumlarda sayısal değerler üretmeniz gerekebilir. Bu durumda sekanslara ihtiyacınız olacak.

19 Ocak 2013 Cumartesi

HR Şeması İle Uygulamalı SQL(DML ve Veri Tutarlılığı)

Merhaba arkadaşlar!

Biliyoruz ki SQL deyimleri, kendi içerisinde komutların amaçlarına göre bir kaç başlık altında incelenirler. Bu başlıklardan SQL için olanları iki şekilde inceleriz:

  • DML-Data Manipulation Language: Ver işleme dili
  • DDL-Data Definiton Language: Veri tanımlama dili
Neden özellikle SQL için diye belirttim çünkü özelleşmiş SQL versiyonlarında (PL/SQL- T-SQL v.b.) eklenen diğer komut ve deyimlerle bu maddeler çoğalmaktadır. Örneğin COMMIT ve ROLLBACK komutları DDL yada DML komutları değildir. Veri kontrol dili (Data Control Language) başlığı altında incelenen bu komutlarla birlikte, kullanıcıya haklar tanıma, rol oluşturma gibi diğer özel işlemler gerçekleştirilir. Şimdilik SQL ile çalıştığımızdan bunlar ile işimiz yok. Ancak burada bir kaç DCL komutu ile ilgili bilgi vereceğiz. Çünkü DCL Oracle ile çalışmanın püf noktalarından ve veri tutarlılığı için büyük önem arz etmekte. 

Bu yazıda DML komutlarını ele alıp uygulayarak açıklamaya çalışacağız. Bir sonraki yazı da DDL ile ilgili olacak. Başlayalım:

18 Ocak 2013 Cuma

HR Şeması İle Uygulamalı SQL(Küme Operatörleri)

Merhaba arkadaşlar!

Aslında SQL'in zorlu kısımlarını bitirdik sayılır. JOIN, alt sorgular en karmaşık gelebilecek konulardı. Geriye bazı küme operatörleri, DDL, DML ve diğer şema nesneleri ile ilgili işlemler kaldı. Tabi eğer PL/SQL'den bahsediyorsak daha çok konu var demektir. Ama biz burada SQL'i temel alıyoruz.

Bugün küme operatörlerini inceleyeceğiz. Neden küme operatörü diyorum? Çünkü ilkokuldan tanıdığımız küme mantığını tablolar arasında uygulayan basit bir işlemdir. Gerçekte ise "set operatörleri" olarak geçiyor. Burada üç adet operatör tanıyacağız:

  • UNION/UNION ALL: Birleşim işlemi
  • INTERSECT: Kesişim işlemi
  • MINUS: Fark işlemi

17 Ocak 2013 Perşembe

HR Şeması İle Uygulamalı SQL(Alt Sorgular)

Merhaba Arkadaşlar,

SQL çalışmalarımız tüm hızıyla sürüyor :) Yazılar biraz uzun oluyor ama bunun sebebi uygulamalı olarak deyimleri incelememiz. Eğer siz de bu deyimleri uygulayarak yapıyorsanız sonuçlarınızı karşılaştırabilmeniz adına sorguların çıktılarını da veriyorum.

Şimdi bugün de alt sorguları işleyeceğiz. Hemen kısaca giriş yapalım. Diyelim ki yöneticiniz sizden X kişisinin çalıştığı ülkede çalışan kişilerin maaşlarını görüntüleyen bir rapor istedi. Bu durumda tek bir sorgu ile işin içinden çıkmanız gerçekten zor. İç içe iki sorgu ile çalışmak durumundasınız. Bu gibi durumlarda sorgular hiyerarşik olarak dizilmelidir. Yani içteki sorgudan dönen sonucu dıştaki sorgu işleyerek asıl amaca dair çıktıyı size vermelidir. Mesela verdiğimiz örnekte içteki sorgu X kişisinin çalıştığı ülkeyi çekmelidir. Ana sorgu ise bu şehirde çalışan kişilerin maaşlarını görüntüler.

Alt sorguların amacını açıkladıktan sonra konuya başlayabiliriz.

16 Ocak 2013 Çarşamba

HR Şeması İle Uygulamalı SQL(JOIN)

Merhaba Arkadaşlar!

Şimdiye kadar sorgularımızda hep bir tablodan veri çektik. Yani FROM "tabloismi" ifadesini sadece bir tablo ile kullandık. Oysa buradaki tablo sayısını artırmak mümkündür. Çoğu zaman gelişmiş sorgularda tek tablo ile değil belki de üç tablo ile çalışmanız gerekecek. Bu gibi durumları bugün ele alalım. Öncelikle işi karmaşıklaştırmadan FROM ile nasıl birden fazla tablolarla çalışırız ona bakalım.

Konuya böyle giriş yaptık ama şöyle bir izlenim verdi sanki: İstediğimiz sorguda istediğimiz tabloyu kullanırız ve kafamıza göre takılabiliriz. Hayır. Maalesef durum böyle değil. Çoklu tablolarla çalıştığınız sorgularda tablolar arasındaki ilişkileri ön plana çıkarırsınız. Bu yüzden tablolar arasındaki bağlantıları gösteren şemaların her zaman gözünüzün önünde durması gerekir. O yüzden burada bir kez daha HR şemasını paylaşmak gerekecek:

Datawarehouse Türkiye Eğitimleri Başlıyor!

Datawarehouse Türkiye Ekibi'nin organizasyonu olarak ;

İş Zekası,Veri Ambarı ,Veritabanı ,Data Quality ,Data Management ,Master Data Management,Big Data,Programlama ..vb konularında ücretsiz eğitimler verilecektir.

Üniversitede okuyan, mezun veya IT sektöründeki herkes katılabilir.Başvuru için yapmanız gereken info@datawarehouse.gen.tr adresine Cv 'lerinizle mail atmaktır.Hangi alanlarda ücretsiz eğitim almak istediğinizi de mail'inizde belirterek eğitim içeriğini kendiniz belirleyebilirsiniz.

Kontenjanlar sınırlıdır.

Alanında uzman kişilerin verdiği bu eğitimler; "Bilişime Türkçe Yeter" sloganıyla yola çıkmış gayretli bir ekibin çabaları sonucu gerçekleşmektedir. Kariyer hedefini şimdiden belirlemiş ama nasıl adım atacağını henüz kestirememiş tecrübesiz biriyseniz kesinlikle bu eğitimler size göre. Yetişmiş eleman sıkıntısının çok olduğu bilişim sektöründe bu açıklığı gidermek için bir "ilaç" vazifesi gören bu etkinlik büyük düşünenler için.
Duyurunun bulunduğu sayfa için Tıklayınız..

15 Ocak 2013 Salı

HR Şeması İle Uygulamalı SQL(Fonksiyonlar ve Gruplandırma)

Merhaba Arkadaşlar

SQL deyimlerini öğrenmeye kaldığımız yerden devam edelim. Bu yazıda SQL'de veriler üzerinde kolay işlem yapmamızı sağlayan hazır fonksiyonlardan bahsedeceğiz. Öncelikle PL/SQL'de fonksiyonların nasıl ayrıldığını kısaca inceleyeceğiz. Ancak konumuz SQL olduğu için PL/SQL fonksiyonlarını ayrıntılı olarak uygulama yaparak işlemeyeceğiz. Daha sonra SQL fonksiyonlarını -COUNT, AVG, MIN, MAX- ayrıntılı olarak inceleyeceğiz.

Fonksiyon Kavramı
Programlama ile uğraşanların haşır neşir olduğu bu kavram oradaki anlamıyla eş bir kullanıma sahiptir. Yani fonksiyonunuz argüman veya argümanlar alır, onu amacınız doğrultusunda işler ve size bir sonuç döndürür. SQL'de de bu fonksiyonları çok sık kullanacaksınız. Fonksiyonlar farklı sayılarda sonuç döndürmelerine göre iki şekilde incelenirler:

  • Satır başına bir sonuç döndüren fonksiyonlar: Çekilen her satır için bir sonuç değeri üretir. Yani üzerinde işlem yapılan her satır için bir sonuç üretip bunu geriye döndürürler. Argümanlar sütun ismi yada sizin belirlediğiniz bir ifade olabilir. Bu tip fonksiyonlar iç içe yani fonksiyon1(fonksiyon2(...)) şeklinde kullanılabilirler. Yazı içerisinde tüm fonksiyonları vermeyeceğim. Bu fonksiyonlardan kimini belki de hiç kullanmayacaksınız. Şimdi bu fonksiyon başlığı altındaki fonksiyon çeşitlerini bir görelim:
    • Karakter fonksiyonları: Verilen karakterler üzerinde düzenleme işlemleri yaparlar. 
    • Nümerik fonksiyonlar: Sayısal veriler üzerinde; mod alma, sayıyı bir üst yada bir alt değere yuvarlama gibi temel işlemler yaparlar.

14 Ocak 2013 Pazartesi

HR Şeması İle Uygulamalı SQL(WHERE)

Merhaba Arkadaşlar!

SQL deyimlerini öğrenmeye kaldığımız yerden devam edeceğiz. Bir önceki yazdı SELECT deyimini bitirmiştik. Şimdi SELECT deyimini daha gelişmiş olarak kullanmamızı sağlayan bir kaç yeni ifade ekleyeceğiz. Hemen başlayalım:

Şimdiye kadar SELECT ifadesi ile istediğimiz sütunu nasıl çekeceğimizi gördük. Ancak bu sütunun tamamına ait içeriği çekebildik. Yani belirlediğimiz bir satırı yada aklımızdaki koşula uyan bir satırı nasıl çekeceğimizi bilmiyoruz. Bunu gerçekleştirebilmek için WHERE ifadesini kullanmamız gerekmektedir.

WHERE İfadesi
WHERE ifadesinin de SELECT deyimine eklenmesi ile sorgu aşağıdaki şeklini alacaktır:

SELECT *|{[DISTINCT] sütunadi|ifadeler [takmaisim],...}
FROM   tabloadi
[WHERE sart(lar)];

13 Ocak 2013 Pazar

HR Şeması İle Uygulamalı SQL(SELECT)

Merhaba Arkadaşlar!

Kısaca SQL'in ne olduğuna bakalım:
Bilindiği üzere ilişkisel veritabanı yönetim sistemleri ilk olarak 1970 yılında Dr. E. F. Codd tarafından ortaya çıkarılmıştır. Codd'un ifade ettiği ilişkisel veritabanı modeli için SQL ilk defa IBM firması tarafından geliştirilmiştir. 1979'da ise günümüzdeki Oracle firması (o zamanlar Relational Software'di) SQL'i ilk ticari uygulama olarak piyasaya sürmüştür. Böylece SQL artık ilişkisel veritabanı yönetim sistemleri için bir standart haline gelmiştir ve tüm yönetim sistemlerinde SQL dil desteği olmak durumundadır. (SQL ile ilgili diğer temel bilgiler için buradan ulaşabilirsiniz.)

SQL ilk çıkarıldığı zamanlar SEQUEL yani Structred English Query Language olarak bilinirken artık Structred Query Language olarak isimlendirilmektedir. SQL deyimleri büyük-küçük harf duyarlı olmayıp SQL cümlesinin sonuna noktalı virgül (;) konur. SQL yazarken dikkat edilecek hususlar aşağıdaki gibidir:

  • SQL cümleleri birden fazla satırı kapsayabilir
  • Okunulabilirlik açısından satırlar girintilerle belirlenir.
  • SQL Developer kullanıyorsanız (;) kullanmanıza gerek olmayabilir ancak SQL*Plus'ta (;) kullanmanız gerekmektedir. 
  • SQL'deki temel kelimeler satırlara bölünemez yada kısaltılamaz.

SQL Developer Kullanımı

Merhaba Arkadaşlar!

Bir dönem sonra bir aksilik olmazsa mezun olacağım. :) Dolayısıyla geleceğimde faydalı olmasını umarak hedeflerime ulaşmak için çalışmalarıma hız verdim. Bu hedeflerimden ilki Oracle OCP Sertifikasyon sınavlarını başarıyla geçmek ve ülkemizde çok da fazla bulunmayan bu sertifikaya sahip olanların kervanına katılabilmek. Bu sertifikayı alabilmek için 3 sınavı başarmış olmanız gerekiyor. Bunlar:
  • SQL'e giriş: Temel SQL bilgilerini içermekte olup PL/SQL üzerine de sorular  içermektedir.
  • Veritabanı Yönetimi 1: Veritabanı mimarisi, temel kurulum ve yönetim işlemlerini kapsar.
  • Veritabanı Yönetimi 2: RMAN, Back-Up gibi ileri düzey veritabanı yönerimi kavramlarını kapsar. 
Ben, bu kapsamda sınavlara şimdiden kendi çabalarımla hazırlanıyorum. Benimle aynı hedefleri paylaşanlar için; bu ve takip eden bir kaç makale ile SQL'e giriş sınavına hazırlık için yaptığım uygulamaları ve temel diğer bilgileri anlatmaya çalışacağım. Sorguları, amaçlarını, veritabanı üzerinde uygulanmasını incelemiş olacağız.

6 Ocak 2013 Pazar

RapidMiner'da K-Means İle Kümeleme Çalışması

Merhaba arkadaşlar!

RapidMiner ile alakalı iki yazı paylaştım ve gördüm ki konu ile ilgilenen fazlaca insan var. Bunun başlıca sebebi sanırım Türkçe kaynak sıkıntısı çekilmesi ve irili ufaklı  şirketlerin yavaş yavaş veri madenciliği çalışmalarına ağırlık vermesi olsa gerek. Bunları göz önünde bulundurarak konu ile ilgili bir konuyu daha işlemek istiyorum: Kümeleme algoritması olan K-Means'ın RapidMiner'da uygulanması.

Bunu yaparken kendi çabalarımla öğrendiğim bir iki mevzuyu daha paylaşmaya çalışacağım. Neden kendi çabalarımla diyorum çünkü sizin de gördüğünüz üzere RapidMiner'ı dolu dolu açıklayan ne bir blog ne de bir kaynak mevcut. Bunu sadece Türkçe kaynaklar için söylemiyorum. RapidMiner'ın ingilizce kaynakları var ama bu kaynaklar da bir yerden sonra yetersiz kalabiliyor.

Konuya başlayalım...
Veri madenciliği(yazının diğer kısımlarında VM diye bahsedeceğim) çalışmalarını kolaylaştırmayı amaçlayan bir yazılım olan RapidMiner bu amaçlar doğrultusunda VM çalışmaları için geliştirilen algoritmaların pek çoğuna cevap verebilmektedir. Bunlardan sınıflandırma grubundaki karar ağacı algoritmasının kullanılışına değinmiştik. VM çalışmalarının gözdesi olan bir diğer metot ise Kümeleme(Clustering) olup, sadece VM çalışmalarında değil görüntü işleme, veritabanı gibi pek çok sektörde de kendini göstermektedir. Hemen kısaca sınıflandırmayı hatırlayıp kümelemeden bahsedelim: