SQL nedir?
Bu kılavuz, veritabanı sorgusunu tanımlayan programlama dilini anlamanıza yardımcı olacaktır.
Bilgi Teknolojilerinde biraz zaman harcayan herkes, yalnızca geçerken bile olsa, muhtemelen SQL (Structured Query Language – Yapılandırılmış Sorgu Dili) ile karşılaşacaktır. SQL – yaygın olarak telaffuz edilen şekli ile ‘esquel’, veritabanlarını yönetmek için en yaygın kullanılan programlama dillerinden biridir. Bir tablodaki bilgilerin diğerindeki bilgilere bağlı olduğu ilişkisel veritabanlarında yapılandırılmış verileri işlemek için özellikle yararlıdır.
SQL’i bir programlama dili olarak kullanmanın pek çok faydası vardır, özellikle birden çok kayda tek bir komutla erişilebildiği göz önüne alındığında, ISAM veya VSAM gibi eski okuma/yazma araçlarına kıyasla kullanımı çok daha hızlı bir araçtır.
SQL, tablolara ve satırlara dayanır ve her sorgu, bu tabloların her birinde bulunan bir veri kümesinden veya tablolar içindeki satırlardan bilgi ister.
SQL kavramı ilk olarak 1970’lerde ilişkisel veritabanı yönetiminde öncü olan Edgar F. Codd tarafından geliştirildi. Paylaşılan veritabanlarını yönetmeyi kolaylaştıracak bir sistem yaratmak istedi. IBM bilgisayar bilimcileri Donald D. Chamberlin ve Raymond F. Boyce, Codd’un araştırmasının arkasındaki teoriyi aldılar ve bu kavramı, şirketin yarı ilişkisel veritabanı olan System R içindeki bilgileri sorgulamak için kullanarak geliştirmeye başladılar.
İlk olarak SEQUEL (Structured English Query Language) olarak bilinen IBM, teknolojiyi geliştirmeye devam etti ve 1979’da Oracle (eski adıyla İlişkisel Yazılım) sistemin ilk ticarileştirilmiş sürümünü yayınladı.
SQL’i hangi öğeler oluşturur?
SQL dili, tümü bir ‘ifade’ içeren bir dizi ayrı öğeden oluşur. İfadeler veya sorgular, SELECT veya CREATE gibi bir terimle başlar ve sorgunun sonunu belirten noktalı virgülle biter.
SQL dilinde tipik olarak bulduğunuz öğeler şunlardır:
Clauses – Cümleler – bir ifadenin bireysel bileşenleri; ‘UPDATE – GÜNCELLEME’ veya ‘WHERE – NEREDE’ gibi, bunlar sorgunun yapısını belirler.
Predicates – Tahminler – bunlar, sorgunun kapsamını değiştirebilecek koşulları belirtir: örneğin, ‘BETWEEN’ veya ‘ALL’ önermek size farklı veri kümeleri verecektir; birincisi, x ile y arasında bir aralık veya ikincisi, sorgunuza uyan tüm veriler.
Expressions – İfadeler – ifadeler, skaler değerler (bir tanımlayıcıyla eşleştirilmiş bir depolama konumu) veya sütunlar ve satırlar içeren tablolar üretebilir.
Queries – Sorgular – bunlar, tanımladığınız ölçütlerle ilgili verileri alır.
Statements – İfadeler – ifadeler, sorguların SQL yazılımınızdan veritabanı sunucusuna gönderilme şeklidir. SELECT veya CREATE (yan tümceniz) gibi bir terimle başlarlar ve sorgunun sonunu belirten noktalı virgülle biterler.
Ortak SQL sorguları
Codecademy , SQL’in verileri sorgulamak ve işlemek için nasıl kullanıldığını gösteren, yaygın SQL sorgularının kullanışlı bir listesini bir araya getirdi. Aşağıda bazı örnekler kullandık:
ALTER TABLE – bu, bir veritabanına yeni sütunlar eklemenize ve kaydedebileceği veri türlerini artırmanıza olanak tanır.
TABLO OLUŞTUR – yeni bir tablo eklemek, veritabanınızın tamamen yeni bir veri türünü depolamasını sağlar.
ORDER BY – bu, sorguladığınız verilerin kullanışlı bir şekilde, örneğin alfabetik olarak sunulmasını sağlamak için kullanışlı bir komuttur.
UPDATE – bir veritabanını güncellemek, örneğin verilerin değişip değişmediğini veya yanlış olduğunu tespit ettiğinizde satırları değiştirmenize olanak tanır.
SQL sunucuları
Çoğu Bilişim Profesyonelinin SQL ile, dilin kendisinden ziyade, desteklediği veritabanı sunucusu yazılımı aracılığıyla etkileşim kurması daha olasıdır. SQL, Oracle Database, MySQL , PostgreSQL ve Microsoft’un saygıdeğer SQL Server ürünleri ailesi gibi veritabanı yazılımlarına güç sağlar. SQL veritabanı sunucuları onlarca yıldır kullanılmaktadır ve birçok işletme uygulamalarını güçlendirmek için onlara güvenmektedir. Yaşları nedeniyle, SQL veritabanları ayrıca çok daha büyük bir topluluk destek kaynağına sahiptir.
Bazı kuruluşlar, daha fazla düğüm ekleme yeteneği nedeniyle bazıları tarafından SQL sunucularından daha ölçeklenebilir olarak görülen SQL yerine NoSQL veritabanlarını kullanmayı tercih eder. NoSQL ilişkisel değildir ve veritabanları için önceden tanımlanmış bir şema gerektirmez. MongoDB ve Couchbase, NoSQL sunucularına örnektir.
SQL veri işleme
SQL’in verileri değiştirme ve düzenleme yeteneği, onu inanılmaz derecede kullanışlı bir programlama dili yapar. Verileri basitçe depolamak yerine, gerektiğinde değiştirmek için komutlar verebilirsiniz. Veriler, veri olmadığında genellikle çok kullanışlı değildir, bu nedenle verilerinizi doğru tutmak için veritabanınızı güncelleyebilmeniz çok önemlidir.
SQL Güvenliği
İşletmelerin karşılaştığı en yaygın siber saldırı türlerinden biri SQL enjeksiyon saldırısıdır. Bildiğimiz gibi, SQL öncelikle veritabanlarıyla çalışırken kullanılır ve tuttukları veriler siber suçlular için çok değerli olabilir. SQL enjeksiyon saldırıları, savunmasız web siteleri veya web uygulamaları tarafından güveniliyorsa, siber saldırganların bu veritabanlarında tutulan verileri görüntülemesine, değiştirmesine, silmesine veya başka bir şekilde erişmesine izin verir .
Tipik olarak hem SQL tabanlı veritabanlarına dayanan hem de çeşitli kullanıcı işlevleri için web formları kullanan web sitelerini veya web uygulamalarını hedefleyen siber suçlular , arka uç veritabanını kendileri için sorgulamak için bu web sitelerindeki veya uygulamalardaki güvenlik açıklarından yararlanabilir. Ayrıca, veri hırsızlığı onların oyunu değilse, aynı yöntemi kullanarak hizmetleri basitçe çevrimdışına alabilirler.
Web formları çeşitli amaçlar için kullanılır, ancak en yaygın kullanımlarından biri, kullanıcıların kullanıcı adlarını ve şifrelerini girdiği oturum açma sayfalarıdır. Bir web sitesi veya web uygulaması daha sonra bu alanlardan alınan bilgileri kullanır, SQL veritabanındaki verilerle çapraz referans verir ve iki kimlik bilgisi eşleşirse kullanıcı hesabına erişebilir.
SQL enjeksiyon saldırıları, bilgisayar korsanlarının, veritabanına kendi sorgularını göndermek ve istedikleri şekilde erişmek için bu giriş alanlarına özel hazırlanmış kod satırları göndermesini görür. Birçok web formu, SQL enjeksiyonlarının mümkün olmasını önlemek için ayarlanmıştır – bunlar yalnızca geçerli kullanıcı adı ve/veya parola karakterlerini kabul edecek şekilde kodlanmıştır. Ancak, bazı web formları o kadar güvenli ayarlanmamıştır ve saldırganların genellikle veri hırsızlığına yol açan özel kodlarını enjekte etmelerine izin verebilir.
Makalenin orjinal kaynağını bu linkten okuyabilirsiniz