SQL (Structured Query Language)

İlişkisel veritabanı yönetim sistemlerinden veri almak, veritabanında bulunan veriyi düzenlemek veya sisteme veri girişi yapmak için kullanılan en populer sorgulama dilidir. SQL temelde, nesne-ilişkili (object-relational) veritabanı yönetim sistemlerini desteklemek için tasarlanmıştır. Fakat bu amacın ötesinde, ANSI ve ISO standartları tarafından belirlenmiş, birçok özelliğe sahiptir.

SQL’in TARİHİ

Dr. Edgar F. Codd’un 1970 yılının Haziran ayında, Association for Computing Machinery (ACM) dergisinde (“A Relational Model of Data for Large Shared Data Banks”) adında, önemli bir yazısı yayınlanmıştır. Codds’un modeli ilişkisel veritabanı yönetim sistemleri (Relational Database Management System, RDBMS/RDMS) için uygun bir model olarak, geniş çevrelerce kabul görmüştür.
Bunun üzerine 1970 lerde, IBM’in San Jose araştırma merkezinde çalışan bir grup yazılım uzmanı, System R adını verdikleri yeni bir veritabanı sistemi geliştirmiştir. Fakat System R tam olarak Codd’un modeline uygun olarak tasarlanmamıştır. IBM daha sonra “Structured English Query Language” (SEQUEL) adı verilen yapısal ingilizce sorgulama dilini, System R içerisinde bulunan verileri işlemek ve değiştirmek için tasarlanmıştır.O tarihlerde SEQUEL isminin, Amerika’daki Hawker-Siddenly Havayolu Şirketi tarafından kullanılması sebebiyle, dilin tasarımcılarından Donald D. Chamberlin ve Raymond F. Boyce isimde değişikliğe gitmiş ve dile SQL adı verilmiştir.
İlk olarak hayata geçirilen ilişkisel veritabanı Ingres’tir. U.C. Berkeley’de 1974 yılında geliştirilen sistem ticari amaçlı olmayıp, başta SQL dilinide desteklememekteydi.
IBM yapmış olduğu bu sistemi test etmek amacıyla, 1978 yılında kullanıcılarına sistemli bir test uygulamıştır. Test sonuçları, sistemin kullanımının kolay olduğu ve sistemin oldukça faydalı olduğu sonucu verince, IBM yaptığı veritabanı sistemindeki başarısını kanıtlamıştır. Daha sonra sistemin SQL’i destekleyen ticari versiyonları yapılmaya başlanmış, 1979 Ağustos’unda System/38, 1981 yılında SQL/DS, 1983 yılında DB2 IBM tarafından piyasaya çıkarılmıştır.
Chamberlin ve Boyce’un ilişkisel veritabanına ilişkin düşüncelerinden etkilenen Relational Software Şirketi Deniz Kuvvetleri ve CIA için kendi RDBMS (Relational Database Management System), veritabanı yönetim sistemini geliştirmişlerdir. Daha sonra, şirket Oracle adını almış ve 1979 yazında, VAX bilgisayarları için geliştirdiği Oracle V2 (Oracle Version 2)’yi piyasaya sürmüştür. Şirket geliştirmiş olduğu bu sistemde bir öncekinden farklı olarak, SQL dilini ticari amaçlı kullanmıştır.

SQL STANDARTLARI

ANSI (American National Standards Institute) ve ISO (International Organization for Standardization), SQL dilini standartlaştırmak için birçok çalışma yapmıştır. 1986 yılında ANSI, 1987 yılında ise ISO SQL standartlarını oluşturmuştur. Ayrıca, o yıllarda veritabanı yönetimi işiyle uğraşan birçok profesyonel başta “SQL” sözcüğünü “se-qu-el” olarak ifade etmiştir, buna karşın, ANSI bu ifadeyi “es-qu-el” olarak değiştirmiş ve bunu bir standart kabul etmiştir.

Yıl
İsim
Açıklama
1986
SQL-86 (SQL-87)
Standartlar ANSI tarafından oluşturulmuş olup, oluşturulan standartlar ISO tarafından 1987 yılında kabul edilmiştir.
1989
SQL-89
Bir önceki standartlar üzerine birkaç yeni standart eklenmiştir.
1992
SQL-92 (SQL2)
Varolan standartlar büyük ölçüde değiştirilmiştir.
1999
SQL:1999 (SQL3)
Özyinelemeli sorgular, tetikleyiciler, sayısal olmayan türler ve bazı nesne yönelimli özellikler eklenmiştir.
2003
SQL:2003
XML uyumlu bazı özellikler ile satır ve sütunların otomatik üretilen değerler tarafından doldurulması bir standart olarak eklenmiştir.

SQL’IN ETKİ ALANI

SQL, ANSI ve ISO tarafından bir standart olarak tanımlanmış olsada, bu standartlar üzerinden yola çıkarak birçok değişiklikler meydana getirilmiş ve çeşitlenmeler oluşturulmuştur. Bunlar Oracle Şirketi’nin yapmış olduğu PL/SQL veya Sybase, IBM firmasının geliştirdiği SQL PL (SQL Procedural Language) ve Microsoft şirketinin geliştirdiği Transact-SQL dilleridir. Ayrıca şirketler ticari ürünlerinde SQL standartlarının temel özelliklerini nadir olarak desteklemekte, onun yerine kendi oluşturmuş olduğu türleri tercih etmektedirler.
Şirketlerin standartların dışında kendi türlerini geliştiriyor olmaları, dilin taşınabilirliğini zorlaştırmaktadır. Kısacası bir ortamdan başka bir ortama küçük değişikliklerle birlikte kolayca taşıyabileceğiniz ANSI C ve ya ANSI Fortran’ın aksine, SQL diliyle yazılmış kodların, büyük yapısal değişiklikler yapmadan bir ortamdan başka bir ortama aktarılması hayli zordur. Bunun nedenlerini ise şöyle açıklayabiliriz :
SQL standartlarının karmaşıklığı, büyüklüğü ve bu standartların bir çok veritabanı tarafından uygulanmıyor olması.
Standartların bir çok alanda, veritabanının nasıl davranması gerektiğini belirleyememiş olması.
SQL standartlarının oluşmasıyla birlikte veritabanı uygulaması için kullanılacak sözdizimi kesin bir şekilde belirlenmiştir. Standartlar dilin yapısını anlam bilimi açısından iyi tanımlamamış ve bir çok alanda anlam karmaşasının oluşmasına neden olmuştur.
SQL özel bir amaç (İlişkisel bir veritabanında bulunan bilgilerin sorgulanmasını sağlamak.) için üretilmiştir. Bu yönüyle SQL, geniş kapsamlı probemleri çözmek için tasarlanmış olan C veya BASIC gibi programlama dilleri gibi imperative bir dil olmaktan çok, bir set-based, declarative programlama dilidir.
SQL’in tam anlamıyla bir programlama diline dönüşebilmesini sağlamak amacıyla, ilk yöntem olarak PL/SQL gibi dil uzantıları, SQL’in getirmiş olduğu avantajlar gözönünde bulundurularak tekrardan tasarlanmıştır. İkinci yöntem ise, kodun programın içerisinde gömülü olması ve veritabanı ile etkileşimli çalışmasını sağlamak olmuştur. Örneğin, Oracle ve diğer diller veritabanlarında Java’yı barındırırken, PostgreSQL dili, Perl, Tcl ve C dilini de kapsayan büyük çaptaki bir dil grubu kullanılarak, kendi içerisinde fonksiyon yazılmasına izin vermektedir..
Not: Takıldıgınız bir husus var ise lütfen yorum yazınız