Sayfalar

13 Ocak 2013 Pazar

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.
Burada yazılanları takip etmek için öncelikle sisteminize Oracle 11GR2 (12C çıktı ama SQL aynı SQL :) ) DBMS'i kurmanız gerekiyor. Ben Windows 7 32 bit üzerine kurulumu yaptım ki gerçekten Linux üzerine kurulum yaptıysanız Windows üzerine yapacağınız kurulum çocuk oyuncağı gibi gelecektir. Kurulumlar için internette fazlasıyla bilgi bulabilirsiniz. 

Şimdi bu yazıda; SQL ile çalışmak için kullanacağımız SQL Developer geliştirme ortamını tanıtmak istiyorum. Daha sonraki konu ile ilgili yazılarda ise SQL Developer üzerinden devam edeceğimiz için bu yazı önem arz ediyor. 

SQL Developer Nedir?
Veritabanı üzerindeki işlemlerin(DML-DDL) bir kullanıcı arayüzü aracılığıyla yapılması için tasarlanmış bir geliştirme ortamıdır. SQL Developer ile;
  • DML: Yani Veri Düzenleme Dili ile yapılabilen tüm işlemleri (insert, delete, update) uygularsınız.
  • DDL: Yani Veri Tanımlama Dili ile yapılabilen tüm işlemleri (create, alter, drop, truncate) uygularsınız.
  • Veritabanı içindeki nesneleri görüntülersiniz.
  • Tablo oluşturma, kısıt tanımlama ve diğer şema nesneleriyle ilgilenirken arayüzün sağladığı hız ve kolay kullanım verimi artırır
  • Kısacası veritabanı üzerinde istediğiniz gibi oynayabilirsiniz.
Genelde veritabanı yöneticileri bu gibi arayüzlerden çalışmayı uygun bulmazlar. Haklılar da :) Ancak burada amacımız veritabanını yönetmekten ziyade SQL kullanımını öğrenmek olduğu için şimdilik SQL*Plus'tan uzak durabiliriz :) SQL Developer'i ilk açtığınızda sisteminizdeki Java'nın .exe'sinin bulunduğu dizini belirtmenizi isteyecektir. SQL Developer'ı tanımladıktan sonra arayüzüne ve kullanılışına maddeler halinde bakalım:

1. Connection Menüsü
Bu menü altında (varsayılan pencere düzeni olarak solda görüntülenir) veritabanı bağlantılarınızı göreceksiniz. Kurulduğu ilk seferde elbette veritabanı bağlantısı gözükmez.Veri tabanına bağlanabilmek için Connections ibaresine sağ tıklayıp New Connection demeniz gerekmektedir. İlgili ekran görüntüleri aşağıdaki gibi olur:
Solda benim tanımlamış olduğum Con1 ve Con2 bağlantıları görünüyor. Bunlardan Con1'i system kullanıcısı için tanımladım. Con2'yi ise HR kullanıcısı için tanımladım. HR(Human Resources-İnsan Kaynakları) kullanıcısı Oracle Veritabanı kurulumu ile birlikte gelen ve aşağıdaki resimde gösterilen tabloları içeren örnek kullanıcıdır. Ben de bu çalışmalar boyunca yapacağım tüm işlemleri HR kullanıcısının şemaları ile yapacağım. 
Burada hemen şu ayrıntıyı eklemem gerekiyor. Veritabanını ilk kurduğunuz anda ekstradan gelen HR, OE gibi kullanıcıları kullanamıyorsunuz. Bu kullanıcıları SYSTEM kullanıcısı ile aktif etmeniz gerekiyor. Ancak aktif etmeden de bu kullanıcıların tablolarına kullanıcıadı.tabloismi şeklinde ulaşabilirsiniz. Mesela 
SELECT COUNT(*) FROM hr.regions;

Sorgusunun döndüreceği değer 4 olmalıdır. Tabi bu sorguyu SYSTEM kullanıcısı ile bağlıyken çalıştırdığınızı düşünüyorum. Şimdi, önceden tanımlı fakat kilitli olarak gelen bu kullanıcıları nasıl aktif ederiz? Aşağıdaki sorguyu SYSTEM kullanıcısı çalıştırırsa sorunumuz ortadan kalkıyor;
ALTER USER HR ACCOUNT UNLOCK IDENTIFIED BY password;
Password yazan kısma istediğiniz şifreyi vererek kullanıcıyı aktif edebilirsiniz. Artık benim yaptığım gibi SQL Developer ile bu kullanıcıya direkt bağlanabilmek aşağıdaki resimde bulunan New Connection ayarlamalarını yaparak veritabanınıza bu kullanıcı ile bağlanabilirsiniz:
Oluşturduğunuz bağlantının başarılı olup olmadığını Test butonu ile anlarsınız, bağlantıyı ise Connect butonu ile sağlarsınız. Bağlantı başarılı ise sol altta Status: Success ibaresi görünür. Artık HR kullanıcınızın sahip olduğu şema nesnelerini görüntüleyip üzerlerinde sağ tıklama ile işlem yapabilirsiniz. 

Şimdi diğer özelliklere bakalım.

2. Şema Nesneleri Oluşturma
İşlemler basit arayüz mantığı ile yapıldığı için zorlanacağınızı sanmıyorum. Oluşturduğunuz bağlantıyı + simgesi ile genişletip ilgili şema nesnesinin üzerine sağ tıklarak yeni şema nesnenizi tanımlayabilirsiniz. Şema nesnesinden kastım: tablolar, indeksler, görüntüler, eş anlamlılar ve sekansklar. Bunların neler olduğuna bir sonraki içeriklerde ayrıntılı olarak bakacağız. Örneğin Tables kısmına sağ tıklayıp New Tables dediğimizde ekran aşağıdaki gibi görüntülenir. Buradan DDL kısmı ile kendi kodunuzu kendiniz yazabileceğiniz gibi butonları kullanarak da tablonuzu oluşturabilirsiniz. Ben Advenced kutucuğunu işaretleyerek aşağıdaki görünüm ile tablonuzu düzenlemenizi öneririm ki çok daha kullanışlı. Advenced olmadan da basit bir arayüzle aynı işlemler yapabilirsiniz.
1 nolu kısım ile tablonuzdaki sütunlara ait kısıtları ayarlayabilirsiniz. 2 nolu kısım ile sütun ekler yada var olan sütunu silersiniz. 3 nolu kısımda ise sütunlara ait özellikleri belirlersiniz. Bu kısımdaki default ile sütundaki satırların varsayılan olarak alacağı değeri belirlerken, Cannot be NULL kutucuğunu işaretleyerek bu sütundaki satırların NULL değer alamayacağını söylemiş olursunuz.

Kısıtları tanımlarken ise tanımlamak istediğiniz kısıt ismine tıklayabilirsiniz. Örneğin tabloya ait bir Primary Key belirlemesi yapılacaksa aşağıdaki kullanım buna örnek olabilir:

                           
1 nolu kısım ile kısıtı seçip, 2 nolu kısımda seçtiğiniz kısıta bir isim verirsiniz. 4 nolu kısımdan tablo üzerindeki kullanılabilir sütunlardan kısıtın uygulanacağı sütunu seçerek 3 nolu kısıma geçirirsiniz. Böylece kısıt işleminiz gerçekleşmiş olur. 

3. Tabloyu Düzenleme
Tüm işlemlerin ara yüzden yapıldığı gibi, bu işlem de ara yüzden kolayca yapılmaktadır. Aşağıdaki şekli ve açıklamasını okursak bunun ne kadar kolay olduğunu anlarız:
Düzenlemek istediğiniz tabloyu soldaki bağlantıya ait kullanıcı şemalarından seçebilirsiniz. Tabloyu seçtikten sonra sağ kısımda üstteki sekmelerden Columns'un seçili olması halinde 1 nolu alttaki resimde görülen Actions menüsü görünecektir. Bu menüye tıklayarak 2 nolu açılır kapanır menüyü görürsünüz. Buradan ilgili işlemi tıklamalarla gerçekleştirebilirsiniz. Bu kadar basit!

Yine tabloya veri eklerken üstteki sekmelerden Data sekmesine geçerek aşağıdaki resimde gösterilen butonu kullanarak veri ekleyip silebilirsiniz:
                           
+ butonu ile veri eklerken x butonu ile de var olan satırı silersiniz.

Yine var olan satırlar üzerinde işlem yapmak için ilgili satırdaki değiştirmek istediğiniz veriye tıklayarak onu değiştirebilirsiniz. Tabii satırdaki kısıtlamalara uygun değişimleri uygulamak zorundasınız. Örneğin NOT NULL kısıtı olan bir sütundaki satır verisini silip boş bırakmak isterseniz bu hata olarak karşınıza çıkacaktır.

4. Commit ve Rollback İşlemleri
Bildiğimiz üzere bir transaction işleminin veritabanına işlenmesi için onun onaylanması beklenir. Yani yapılan DML işlemlerinin veritabanında diğer kullanıcılar tarafından görüntülenebilmesi için COMMIT ifadesinin SQL de çalıştırılması gerekir. Yine onaylamak istemediğiniz yanlış değişiklikler yaptıysanız da ROLLBACK komutunu kullanırsınız. SQL Developer'da tüm bunlar arayüz ile sağlanabilir. Aşağıdaki ekranı görebilmek için açtığınız bağlantı sekmesini tıklayın ve SQL yazılan geliştirme ekranını açın. 
Kutucuğun içerisinde gördüğünüz yeşil simge bir transaction'ı onaylamanızı (COMMIT), kırmızı simge ise o transaction'ı geri almanızı (ROLLBACK) sağlar. 

5. Diğer Şema Nesneleri İle İşlemler
Bildiğimiz gibi tablolar dışında aşağıdaki şema nesneleri ile veritabanında çeşitli işlemler yaparız:
  • Görüntüler (views)
  • İndeksler
  • Eşanlamlılar (synonyms)
  • Sekanslar (sequences)
Bu nesneler ile yapılan işlemler yukarıdaki bir tablo ile yapılan işlemlerden farksız sağlanır. Yani oluşturduğunuz bağlantıyı genişleterek buradan ilgili şema nesnesine tıklamak suretiyle o nesne üzerinde sağdaki geliştirme penceresinden işlem yaparsınız. İlgili ekranlar aşağıdaki gibidir:
Soldaki 1 nolu kısımdan işlem yapacağınız şema nesnesinin ismine tıklayarak onu genişletin ve sağda bu nesneyle ilgili bilgilerin gelmesini sağlayın. Daha sonra 2 nolu kısımdan tablo üzerinde nasıl işlem yaptıysanız burada da aynı şekilde istediğiniz işlemi gerçekleştirebilirsiniz. 

Eğer ilgilendiğiniz şema nesnesi boşsa bu nesne ismine sağ tıklayıp New ... diyerek yeni bir şema nesnesi oluşturabilirsiniz. İlgili nesneden veri çekme işlemi için de Data sekmesini kullanırsınız. 

6. Snippets (Parçacıklar)
Tüm anlatılanların dışında SQL Developer'da bizlere kullanım kolaylığı olarak sunulan çok özel bir niteliktir. Ekranın en sağında açılır kapanır menü olarak sunulan Snippets aslında çok sık kullanılan fonksiyonlar ve diğer SQL kod parçalarını barındırır. Hatta kendi Snippet'ınızı oluşturup ilgili kategoriye eklemeniz de mümkündür. Kategoriler aşağıdaki gibi sıralanır:
  • Aggregate Functions: Count, Max, Min gibi matematiksel fonksiyonlar.
  • Character Functions: String karakterlerle işlem yapmanızı sağlayan fonksiyonlar.
  • Conversion Functions: Veri tiplerini birbirine dönüştürmenizi sağlayan fonksiyonlar.
  • Date Formats: Veritabanında kullanılabilen tarih formatları.
  • Date-Time Functions: Tarih-zaman verileri üzerinde işlem gerçekleştiren fonksiyonlar.
  • Number Formats: Sayısal değerlere ait kullanılabilir veri formatları.
  • Numeric Functions: Abs, Ceil, Mod gibi daha ileri matematiksel fonksiyonlar.
  • Flashback: Oturum, geri alma, transaction gibi temel bağlantı işlemleri
Kullanmak istediğiniz ilgili fonksiyona tıklayarak veya SQL kod geliştirme kısmına sürükle bırak ile çalışabilirsiniz. Snippet'ı kodunuza eklediğinizde üzerinde işlem yaparak sorgunuza uyarlamanız gerekir. Örneğin karakter fonksiyonlarından; CONCAT(char1, char2) şeklinde gelen fonksiyona char1 ve char2 karakterlerini belirtmeniz gerekecektir.

Tüm bunların dışında elbette SQL Developer pek çok kolaylaştırıcı özellikler sunmakta. Fakat burada anlatılanlar bir veritabanında yapılacak işlemler için yeterli olacaktır. 

Şunu da belirtmek gerekir ki SQL Developer insanı biraz tembelleştirebilir. O yüzden bu arayüze alışmamak en iyisi olacaktır. İşin ehli olanlar daima SQL*Plus ile çalışmayı önerirler. Çünkü zaten SQL Developer ile yapılan her tıklama, arka planda SQL kodlarının çalışmasını devreye sokar. Yani eninde sonunda bir yerlerde SQL ile bağlantılısınız. Bu açıdan SQL bilip, SQL*Plus kullanmakla hem daha esnek çalışırsınız hem de bir süre sonra hızınız artacaktır.

Yazının başında belirttiğim gibi ben blog üzerinden SQL sertifika sınavına hazırlıklarımı paylaşmaya devam edeceğim. Şimdilik yazıyı noktalıyorum. Herkese iyi çalışmalar!

3 yorum:

  1. 12 c de kurulumu nasıl oluyor hr'nin bir bilginiz var mı acaba?

    YanıtlaSil
  2. sen 11 g mi kullanıyorsun yoksa 12c mi ? 12 c' de hr şeması kurulumu nasıl oluyor biliyor musun ?

    YanıtlaSil
    Yanıtlar
    1. Selamlar Murat,

      Schema kurulumunun 12C de çok farklı olacağını sanmıyorum. DB kurulumu esnasında default schema'ların kurulumunu istediğini bildirirsen zaten kurulu gelir. Aktive etmek için yapman gereken DBA yetkili bir user ile şu komutu çalıştırman olacaktır:

      ALTER USER HR IDENTIFIED BY password ACCOUNT UNLOCK;

      Eğer kurmadıysan HR schemasına ait scriptleri çalıştırabilirsin (Bkz: http://www.oracle.com/technetwork/developer-tools/datamodeler/sample-models-scripts-224531.html)

      Kolay gelsin.

      Sil