Teknoloji ve Hayata dair günceler

Son Yazılar


Kategoriler


Son Yorumlar..


SQL (Structured Query Language) – Yapılandırılmış Sorgu Dili

Kemal İKİZOĞLUKemal İKİZOĞLU

Merhaba arkadaşlar ;

SQL ;  açılımı Structured Query Language , türkçesi ise yapılandırılmış sorgu dilidir.Bu dil sadece veritabanlarına hitap etmekte, sorgulama , verileri yönetmek , tasarlamak için kullanılan bir sorgulama dilidir.Burada herkes yanlış düşünüyo olabilir. Sql’in programlama dili olduğunu sanıyorlar. Aksine geliştirilmiş bir sorgu dilidir!

Nereden gelmiştir ?

İnsanlar verilerini düzenli bir şekilde sıralama ve kayıt altına almaya başladıktan sonra daha verimli , daha pratik ve daha akıllıca çözümler düşünmeye başlamışlar. SQUARE (Structured English Query Language) adında bir isim bularak matematiksel bir altyapısının,sözdiziminin olması biraz bunun kullanımını sınılandırmış.Daha sonra biraz daha geliştirerek SQL haline getirmişler ve ilişkisel veritabanlarında (VTYS) çok ilgi görerek bu konuda uzmanlaşmak isteyen kişilerin kesinlikle bilmesi gereken zorunlu dillerden bir hale gelmiştir.

Nasıl kullanılmaktadır ?

Bu sorgulama dilinin kullanabilmek için bir derleyiciye ihtiyacınız olacak.. Bunu mysql ya da sql expert türü yazılımlarla öğrenebilirsiniz..Bunlar mysql workbench , SQLLite Expert tarzı programlar ile çalışabilirsiniz.. Ben Mysql workbench ile çalışıyorum.İlgili bağlantıları paylaşıyorum :

MySQL Workbench ve Server görsel kurulumu için tıklayınız..

MySQL Workbench 5.02 sürümünü indirmek için tıklayınız..

MySQL Server 5.5 sürümünü indirmek için tıklayınız..

.NET Framework 4 (Web Installer) sürümünü indirmek için tıklayınız..

** İlk önce .net framework 4 bilgisayarınıza kurunuz.Daha sonra mysql serveri kurunuz.Daha sonra mysql workbench’i kurmalısınız..

Uygulamaları bilgisayarınıza kurduktan sonra çalışmalara başlayabilirsiniz..Programı açtığınızda ilk olarak sol tarafta yer alan SQL Development kısmındaki Local instance Mysql  seçeneğini çift tık ile tıklıyoruz.Açılan ekranda kurulumda girdiğimiz mysql şifremizi yazıyoruz.Giriş yapıyoruz.Açılan ekranda kullanılacak araçları size söyle açıklayayım..

 

Yukarıdaki butonlar sık kullanılan butonlardır.Sol baştan başlamak gerekirse ilk butonumuz New SQL butonu olacaktır. Query kodu yazmak için yeni sayfa açar.Açık olan scratch sayfası gibi yeni kod yazacağımız sayfa oluşturuyor..Onun yanında yazmış olduğumuz sql kodunu dışarıdan almak için butonu , onun yanında yazılan sql sorgusunu kaydet butonu ..
Dikkat edilmesi gereken bir nokta da şu! Bazı arkadaşlar buradan nasıl komutları kaydedeceğiz diye soruyorlardı..Onlar veritabanı ile birlikte kayıt edileceğini düşünmüşler.Bizim için önemli olan sadece yazılan sorgulardır.O nedenle yazdığınız sorguyu kaydet dediğinizde sadece yazdığınız kısım kayıt altına alınmış olur.Veritabanı üzerinde herhagi bir olay gerçekleşmez..

İşaretli şimşek şeklindeki butonumuz ise yazılan sorguyu çalıştırmak için gerekli bir  butonumuzdur.Ben örnek olarak  scratch ekranına örnek komutlar yazdım.Yazdıktan sonra o şimşek seklindeki çalıştır butonuna bastığımda sol sutunda bulunan Object Browser adı altında oluşturulan sorgu yönetimi yer alıyor.

Ben orada bulunanlara göre bir tane veritabanı , bir tane tablo ve iki tane tablo alanı tanımladım.

Çalıştırılacak komutlar doğru ise yanında mavi nokta yanlış ise kırmızı bir çarpı çıkıyor.Doğru ve yanlış komutların yer aldığı bir sql sorgusunu çalıştırdığınızda doğru kısımlar işlenirken yanlış kısımda çalışma durur..Programın alt kısmında yer alan Output kısmında çalışırılan sorguların onaylama gönderileri bulunmakta.Mavi ünlem başarıyla gerçekleştirilmiştir demektir..

Yapılan her sorgu sonrası Refresh (yenile) yaparak yaptığınız sorguda değişimleri görebilirsiniz.

Bundan sonrası kendi kişisel geliştirmenize bağlı olarak ilerleyebilecek öğrenimler kaldı.

Şimdi yavaş yavaş sorgu kodlarını öğrenmeye başlayalım..

DDL – Data Definition Language (DDL) tabloları veritabanı yapısı veya şema tanımlamak için kullanılır.
Bunlardan bazıları;
CREATE ? Veritabanında nesne yaratır.
ALTER ? Veritabanının yapısını değiştirir.
DROP ? Veritabanından obje siler.
TRUNCATE ? Tablodaki kayıtları içerdikleri alan ile birlikte siler.
COMMENT ? Yorum ekler.
RENAME ? Nesnenin asını değiştirir.

DML – Data Manipulation Language (DML) tabloları şema nesneleri içinde verileri yönetmek için kullanılır.
Bunlardan bazıları;
SELECT ? Veritabanından kayıt okur.
INSERT ? Tabloya kayıt ekler.
UPDATE ? Tablodaki kayıdı günceller.
DELETE ? Tablodan kayırları siler ancak kapladığı alan kalır.
MERGE ? UPSERT işlemi (ekleme veya güncelleme)
CALL ? PL/SQL veya Java alt programı çalıştırır.

DCL – Data Control Language (DCL) işlemleri.
Bunlardan bazıları;
DENY – Kullanıcı yetkilerini kısıtlar.
GRANT ? Kullanıcıya veritabanı erişim yetkisi verir.
REVOKE ? GRANT ile verilen yetkiyi geri alır.

TCL – Transaction Control (TCL) işlemleri DML ile yapılanları yönetmeye yarar.
Bunlardan bazıları;
COMMIT ? Yapılanları kayıt eder.
SAVEPOINT ? Daha sonra geri dönülecek bir dönüş noktası belirler.
ROLLBACK ? Son COMMIT?e kadar olan yeri geri alır.

Daha öğrendikçe ekleme yapacağım. Eğer hazırsanız ilk sorgularımızı yazmaya başlayalım.. Ondan önce söz dizimlerinin nasıl olduğunu , nasıl kullandıklarını bilmelisiniz..Yukarıda verilen kısaltmaların açılımı yardımıyla rahatlıkla bulabilirsiniz.

Biraz daha açıklamak gerekirse veri girişi yapmak istiyorsunuz.Bunu nasıl yapacağınızı bilmiyorsunuz.Hemen yukarıda bulunan komutlardan hangisinin veri ekleme ile ilgili olduğunu buluyorsunuz.Bakalım hemen.. DML – Data Manipulation Language (DML) içerisinde INSERT ? Tabloya kayıt ekler. Bulduk. Bunu da  şuradan bulabilirsiniz..

Örneğin yeni bir veritabanı tanımlayacağız.Şurada bulunan veritabanı oluşturma söz indeksini inceleyelim.

 

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...

create_specification: << Burada yer alan özel alan tanımlamaları için geçerlidir..
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

 

İlk önce yeni bir veritabanı tanımlayalım :

Create database veritabanı_adi

Kodu yazdıktan sonra çalıştır butonuna bastığınızda alt tarafta yer alan log göstericisinde oluşturduğunuz sorgunun tamamlanması gösterilir.
Çalıştırıldı ya da hata var. Problem varsa dikkat etmeniz gereken noktalar şunlardır ;

1.Türkçe karekter içeren birşeyler yazdınız demektir.

2.Nokta, virgül , noktalı virgül eksikliği ya da fazlalığı mevcut.

3.Veritabanı seçili olmayabilir.Ya da yazarken hangi veritabanı kullanıldığını belirtmelisiniz.

 

Tablo Tanımlama :

Tablo tanımlamaları için dikkat edeceğimiz husuları sözdizimi kartlarından takip ederek daha kolay kavrayabiliriz. Şimdi de tablo oluşturmak için gerekli sözdimi kartlarımıza bakalım.. Şuradan da takip edebilirsiniz..

 

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)
    [table_options]
    [partition_options]  << Alan tanımlamalarımızın yer aldığı kısımdır..

 

Create Table ogrenci (
Adı varchar(15),
Soyadı varchar(25),
Numarası INT(5) ,
Sınıfı varchar(5)
);

Burada ogrenci adında bir tablo tanımlayıp, tablo içinde Adı, Soyadı, Numarası, Sınıfı adında 4 tane alan tanımladım. Ve Alanlara giriş sınırlaması koydum. Bunları belirtmek istersek eğer adı alanına sadece ve en fazla 15 kelime , Soyadi sadece ve en fazla 25 kelime , numara alanına sadece sayısal değer ve 5 sayı , sınıfı alanına sadece 5 kelime girilebilir anlamı taşımaktadır.

 

Veri Giriş İşlemleri :

Veri girişi için gerekli söz dizini kartlarına ihtiyacımız olacak.Onu şuradan takip edebilirsiniz.. Ben incelemek için onu buraya kopyalıyorum.

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

4.Tablomuzda yer alan tanımlamaları sırasına göre veri girişlerini yapacağız.Bu nasıl oluyor peki ?

Ben tablomu tanımlarken sırasıyla :

Adı varchar(15),
Soyadı varchar(25),
Numarası INT(5) ,
Sınıfı varchar(5)

şeklinde tanımlamıştım. Şimdi de veri girişi yaparken bu sıraya ve sınırlama uyumuna göre şekillendireceğim.Yazacak olursak bu şekilde olacaktır:

Insert into ogrenci values (‘Kemal’,’Ikizoglu’,’10060′,’13C’)

5.Tanımlanan değerlere göre adı 15 , soyadı 25 , numarası 5 , sınıfı 5 ifadesel değer alabilecek şekilde sınırlandırmıştık.Bizde verilerimizi en fazla o değerlere göre yazıyoruz.Eğer eksik yazdığımızda bir problem vermeyecektir.Ama numara kısmında 8 – 10 hanelik bir sayı olduğunda veya sınıfı alanında / , – , * işaretleri olduğunda , isim soyisim belirlenen sınırları zorladığında uyarıyı da vermeyi unutmayacaktır! 🙂

Kaynaklar :
http://tr.wikipedia.org/wiki/SQL

Eğitim ve teknoloji haberlerini, ilginç ve önemli bilgileri, kendimi geliştirdiğim alanlardaki öğrendiğim tecrübelerimi blogumda paylaşıyorum. Öğrenmekten ve paylaşmaktan zevk alıyorum.İnandığım bir şey var ki istisnalar hariç, hiçbir şey imkansız değildir. Mucizeler için zaman gerekir! Bu benim yaşam felsefem.

Yorumlar 0
İlk yorumu yazmak ister misin?