SQL

advertisement
SQL(Structured Query Language )
Structured Query Language (Yapısal Sorgulama Dili), veritabanı programlarında
verileri sorgulamak için kullanılan bir veritabanı alt dilidir (sublanguage). Yani Pascal,
Fortran, C, Basic, Java gibi dillerde kullanılan fonksiyonlar gibidirler. Bu dillerden
yapılan çağrımlara da cevap verirler, fakat sadece veritabanındaki verilerle ilgilidirler.
SQL in sahip olduğu özellikleri; veri tanıma, bütünlük kontrolü, veriye erişim, veri
güncelleme ile ilgili sorgu komutları olarak sıralayabiliriz. SQL yukarıda adı geçen
bilgisayar dillerinde bulunan yapıların tümüne sahip degildir. Örnegin SQL in bilgi
giriş çıkış ekranı, ekran tasarımı, program algoritması yoktur. Bu nedenledir ki sql,
kendisi ile etkileşimli bir başka dile (Delphi, C++, Oracle, DBase) gereksinim duyar.
SQL in Önemi
SQL in önemini anlamak için içinde yüklü miktarda veriyi sorgulayan bir programın
tasarım aşamasını incelemek yeterli olacaktır. Büyük miktarlarda veri, örnegin;
Tütkiyedeki nüfüs cüzdanı bilgilerini barındıran bir veritabanı üzerinde sorgulama
yapan bir programın SQL siz yazılması çok zor ve bir o kadarda gereksiz bir yoldur.
Bunun birkaç tane zorluğunu aşagıda sıralamaya çalışalım.

Tütkiyedeki nüfüs cüzdanı bilgisi nin her kayıt’ı için İsim, Soyisim, Ana adı,
Baba adı, Dogum yeri, İli, İlçesi derken yaklaşık 200 Baytlık alan gerekir.
Türkiyenin ölmüş kişileri dahil 200000000 kayıt’ı bulunsun, bunların toplamı
için 200.000.000*200=40.000.000.000 oda 40 Gbayt lık bir alan gerekir. Bu kadar
veriyi içinde sorgulama yapmak oldukça zor olsa gerek.

Büyük çaplı verileri saklayacak dosyayı işletim sistemimiz desteklemez. Kendiniz
yazmalısınız. Bu iş oldukça zordur. Harddiske ulaşma, verilerin bir kısmını
Rama aktarma, TSR programı, Cache ile uğraşmak, bunlara hükmetme kolay iş
degildir. Hem bunlar için makine dilini biliyor olmanız gerekir.
Verilere hızlı erişmek için verilerle ilgili agaçyapılarının bulunduğu meşhur
algoritmaları bilmeniz ve uygulamanız gerekir. Özel algoritmalar
kullanmazsanız

Verilere hızlı erişmek için verilerle ilgili agaçyapılarının bulunduğu meşhur
algoritmaları bilmeniz ve uygulamanız gerekir. Özel algoritmalar
kullanmazsanız birkaç saniyede ulaşmanız gereken veriye belkide saatlerce
ulaşamazsınız.

Programınıza aynı anda birden fazla kullanıcı girdiginde veri paylaşımındaki
trafiği çözmeniz gerekir. Uzaktaki bir bilgisayarın veritabanınıza bağlanması
için TCP/IP protokolunude işin içine katmak gerekir.

Veriler üzerinde degişiklik yapmak isteyen kötü niyetli kişilere karşi güvenlik
duvarları geliştirmeniz gerekir.

Biz veriler üzerinde çalışıyor iken biligsayar bizim kontrolumüz dışında kapansa
ve tekrar açtığımızda veritananına ve enson girdiğimiz veriye tekrar
ulaşabilmemeiz gerekir. Bunun içinde programmımıza gereklı kod satırları
eklememiz gerekir.
Tüm bunları yapmak ancak profesyonel ve büyük çaplı bir ekip in yıllarca çalışması
sonucunun bir ürünü olabilir. Halbuki tüm bu işlemleri birazcık SQL ve birazcık
programlama bilen herkes birkaç saat içinde yapabilir. İşte SQL in gücüde burdan
gelir. SQL bunun için önemlidir.
SQL’in Tarihçesi
SQL 1970 yılının sonlarına doğru, San Jose tarafından California‘daki IBM araştırma
laboratuarında geliştirilmiştir [1]. Geliştirilmiştir diyoruz çünkü ilişkisel veritabanı
modelimi ortaya koyan E.F.Codd’un “A relational model for large shared data banks”
adlı makalesi (1970) bu araştırmadan önce yayınlanmıştır. Bu dil ilk başlarda
Structured English Query Language (SEQUEL) adı ile anılmaktaydı [2][3]. 1982 yılında
ANSI (Amerikan Ulusal Standartlar Enstitüsü) bu dil üzerinde çalışmaya başlamış.
1983 yılında ANSI ve ISO (Uluslararası Standartlar Organizasyonu) birlikte SQL
standartlarını yayınlamışlardır[3]. İlk SQL standart ını 1987 yılında ISO 9075 kodu ile
yayınlayan ISO, 1989 da “bütünlük arttırımı özelligi” eklenmiş halini ISO 9076 kodu ile
yayınladı. Bu arada ANSI, 1986 yılında x3.135 kodu ile yayınladığı SQL standartları
ISO 9075 ile aynı idi [3]. SQL-89 diye tanınan ANSI 1989 standart’ı Moduler olması,
Diger uygulama (Pascal, FORTRAN, COBOL, ve PL/1 gibi) programların kod
satırlarının içine gömülebilme (Embedded) yani o programlaın koduymuş gibi davranış
özelliği göstermesi bakımından önemlidir. Statik SQL anlamına gelen Embedded SQL,
Dinamik SQL in gelişiminden önce en populer dil idi.
İçinde Statik SQL kod satırları bulunan program derlendikten sonra, çalışma-zamanı
içinde bu SQL kodlarına mudahele etmek mümkün degildi. Embedded SQL prensib
olarak derleyiçiye paralel bir yorumlama içeriyordu buda programın performansını
arttırıyordu esnekliği (flexibility) kaybetdiriyordu. ANSI 1992 standardı (SQL-92 diye
de anılır.) SQL i (Giriş, Orta-seviye ve ,Tam) olam üzere üç kategöride geliştirerek
evrensel bir dil yaptı. SQL-92 ile gelen yeni özellikleri aşagıdaki dört maddede
toplayabiliriz.

Veritabanlarına bağlanma (Connections to databases)

Hareketli içleçler (Scrollable cursors)

Dianamik SQl (Dynamic SQL)

Tablolar arası dışsal bağlantı (Outer joins)
Dinamik SQL, tasarım-zamanında olduğu gibi çalışma-zamanı içindede SQL
komutlarımızı hazırlamamıza izin verir. Tüm bunlara ragmen Dinamik SQL in
performansı Statik SQL in performansı kadar iyi degildir. Dynamik SQL de
performans programcının algoritmasına bağlıdır. Dinamik SQL e örnek verecek
olursak; ODBC veya Sybase in DB-Kütüphanesini verebiliriz.
Yerel SQL (Local SQL) Nedir?
Veritabanı ile işlem yapabilmek için bir adet veritabanı programınız olması gerekir.
Genellikle 400$ ile 40000$ arası bir maliyete mal olan bu programlardan Paradox ve
dBASE veritabanı programı Delphi ile birlikte bedava verilmektedir. Access, Paradox,
dBASE gibi veritabanı programları Yerel SQL i desteklediği için, önemlidirler. Yerel
SQL, SQL-92 nin (dBASE, Paradox, ve FoxPro tablolarına ulaşmak için oluşturulmuş)
bir alt türevidir.SQL-92 aynı zamanda SQL Server i de içermektedir. Yerel SQL
ifadelerine uygulamalarımızda erişilirken, BDE (Borland Veritabanı Motoru) bu
ifadeleri BDE API fonksiyonlarına dönüştürür. BDE içinde Yerel SQL dili; Veri işletme
dili (Data Manipulation Language) ve Veri tanımlama dili (Data Definition Language )
olmak üzere iki kategoriye ayrılır. DML tablo verilerini taramak, eklemek, güncellemek
ve silmek için kullanılan SQL ifadeleri içerir. SELECT, DELETE, INSERT, UPDATE
birer DML ifadelerindendir. DDL tabloları oluşturmak, değiştirmek, ve silmek için
kullanılan SQL ifadelerini içerir. CREATE TABLE ve DROP INDEX birer DDL SQL
ifadelerindendir. Aşağıdaki bilgilerin çoğu DELPHI ile birlikte gelen ve E:\Program
Files\Common Files\Borland Shared\BDE dizinini altında bulunan LocalSQL.Hlp
dosyasından esinlenerek yazılmıştır.
Download