Veri tabanları modern dünyanın itici güçleridir. Satır ve sütunlardaki organize verileri içerir ve birçok işletme için veri kaynağı görevi görür. Veri tabanları, Fortune 500 şirketleri ve benzer şekilde büyük devlet kurumları için veri organizasyonunun anahtarıdır. Ancak, bir veri tabanı oluşturmak ve büyük veri tabanları üzerinde çalışmak geçmişte hiç basit değildi. Aslında, büyük veri tabanlarıyla sorunsuz ve kolay bir şekilde çalışabilecek bu noktaya ulaşmak, yıllarca araştırma ve sıkı çalışma gerektirdi. 

SQL Tarihi

SQL, ilk olarak IBM’de 1970 yılında Donald D. Chamberlin ve Raymond F. Boyce tarafından Edgar F. Codd’un ilişkisel modeli için tanıtıldı. Daha sonra 1986’da American National Standards Institute’un (ANSI) standardı haline geldi. Bugün SQL, dünyada en çok kullanılan veri tabanı programlama dilidir ve MySQL, SQL Server, Oracle, SQLite ve DB2 dahil olmak üzere en popüler ilişkisel veri tabanlarında kullanılmaktadır.

SQL, platformlar arası, statik, h2 tipi, çoklu paradigma, bildirime dayalı bir bilgisayar programlama dilidir. SQL dosyaları .sql dosyaları olarak saklanır ve bir komut satırından veya çeşitli UI araçları kullanılarak yürütülür.

SQL Nedir?

SQL; MySQL, MS Access, Oracle, Postgres ve SQL Server gibi hemen hemen her Relational Database Management System (RDMS) – İlişkisel Veritabanı Yönetim Sistemi tarafından kullanılan standart veri tabanı dilidir. SQL, Structured Query Language (Yapılandırılmış Sorgu Dili) için popüler olarak kullanılan bir kısaltmadır. İlişkisel bir veri tabanından veri depolamak, işlemek ve almak için kullanılan bir bilgisayar dilidir. SQL, veri tabanı optimizasyonu ve bakımı dahil olmak üzere çeşitli başka görevler yapabilir. SQL, hem ilişkisel hem de çok boyutlu veri tabanlarına uygulanabilir. Ayrıca, kontrol akışını detaylandırmadan bir sürecin mantığını ifade eden bilgisayar programlarını yapılandırmanın ve oluşturmanın bir yolu olan bildirimsel bir dildir.

SQL’in basit bir dilbilgisi ve sözdizimi vardır. The American Standard National Institute (ANSI) ve  International Standard Organization (ISO) tarafından standart bir kullanım dili olarak kabul edilmiştir. SQL dilinin işlevselliği, işletim sistemi platformlarında neredeyse aynıdır. SQL çok fazla programlama deneyimi gerektirmez, ancak belirli bir SQL komutunun SQL sorgularını yürütme ve alma açısından nasıl davrandığını anlamaya yardımcı olur.

SQL bir Programlama Dili midir?

Evet, SQL bir programlama dilidir. Döngü, mantık yönergeleri, değişkenler vb. sunar. Ancak, Java veya C++ ile aynı anlamda bir dil değildir.

SQL, dördüncü nesil bir dil (4GL) olarak kabul edilirken, Java ve C++ üçüncü nesil dillerdir (3GL’ler).

SQL, web siteleri, uygulamalar veya yazılım oluşturmak için bir programlama dili olmak yerine veri tabanlarında veri depolamayı, almayı ve yönetmeyi sağlayan bir dildir.

SQL Neden Kullanılır?

  • SQL, ilişkisel bir veri tabanı yönetim sisteminde verileri sorgulamak ve sürdürmek için kullanışlıdır. Bu, SQL’in en yaygın kullanımlarından biridir.
  • Önceki verileri değiştirmek için kullanılır
  • Çeşitli veri tabanı etkinliklerini gerçekleştirmeye izin veren çok sayıda komut sağlar.
  • SQL, bir veri tabanındaki işlemleri sürdürmek için de kullanılır.
  • Bugün hemen hemen her web sitesi bir back end veri tabanı tarafından desteklenir. 

SQL’in Özellikleri

1. Öğrenmesi Kolay

SQL son derece pratik ve kullanıcı dostu bir dildir. Daha önce teknoloji deneyiminiz olmasa bile dilin temellerini öğrenebilirsiniz. SQL, İngilizce’ye oldukça yakın bir sözdizimine sahiptir ve bu da sorunsuz bir öğrenme eğrisi sağlar.

 2. Çok Çeşitli Komutlar

SQL, CREATE, DROP, ALTER gibi DDL (Data Definition Language) komutları gibi çok çeşitli komutları destekler; INSERT, UPDATE, DELETE gibi DML (Data Manipulation Language) komutları; GRANT, REVOKE gibi DCL (Data Control Language) komutları; COMMIT, ROLLBACK gibi TCL (Transaction Control Language) komutları ve SELECT gibi DQL (Data Query Language) komutları.

  3. Saklı Prosedürler

Saklı yordam, kaydedip istediğiniz sayıda yeniden kullanabileceğiniz bir SQL kodu parçasıdır. Saklı yordamlar, bir veri tabanında bir veya daha fazla DML işlemi gerçekleştirmek için kullanılır. Argüman biçiminde bazı girdiler alan, bazı işler yapan ve bir sonuç döndüren veya döndürmeyen bir SQL ifadeleri koleksiyonudur.

4. Taşınabilirlik

DQL, veri tanımlarının ve uygulamalarının taşınabilirliğini sağlar. Yani uygulamalar bir makineden diğerine taşınabilir.

5. Birleştirme

SQL, iki veri kümesini (yani iki veya daha fazla tabloyu) birleştiren bir komut olan birleştirme işlemini destekler. INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN SQL tarafından desteklenen birleştirmelerdir.

6. Birleşme

UNION komutu, SQL’de iki veya daha fazla SELECT ifadesinin sonuçlarını birleştirmek için kullanılabilir.

7. İstemci-Sunucu Ortamı İçin Uygunluk

SQL, veri tabanı yönetim sisteminin (DBMS) bir sunucuda bulunduğu ve istemci isteklerini yönettiği bir istemci-sunucu ortamına çok uygundur.

8. Entegrasyon

Bağlı bir sunucu kullanarak SQL Server, SQL Server olmayan bir veri tabanına bağlanabilir. Bağlantılı sunucu mekanizması, ODBC sürücüsü olarak bilinen bir ara katman yazılımı kullanarak SQL Server’ı Oracle, MySQL ve Salesforce gibi üçüncü taraf back-end’lere bağlayabilir.

9. Yüksek Performans

Büyük veri tabanı sistemlerinde SQL, yüksek düzeyde işlem gerektiren ağır iş yükleri için performans programlama yetenekleri sağlar.

10. Ölçeklenebilirlik ve Esneklik

SQL, ölçeklenebilir ve esnek bir veri tabanıdır. Yeni tablolar oluşturmak kolaydır ve önceden oluşturulmuş veya artık kullanılmayan tablolar bir veri tabanından silinebilir. SQL, büyük veri kümelerini ve çeşitli işlemleri yönetebilir.

11. İşlemler

Çeşitli işlemleri destekleyen TCL, SQL tarafından desteklenir. İşlemler, bir insan tarafından manuel olarak veya bir veri tabanı uygulaması tarafından otomatik olarak tamamlanabilen, mantıksal olarak sıralanmış birimler veya iş dizileridir. COMMIT, ROLLBACK, SAVEPOINT ve diğerleri gibi SQL komutları işlemleri destekler.

12. Güvenlik

SQL, görünümlerde, tablolarda ve prosedürlerde izinlerin ayarlanmasına izin verir. Bu, hassas veri tabanlarındaki verilerin güvenliğini sağlar. Ayrıca, kısıtlamalar SQL’de belirtilebilir. Bunlar, bir tablo sütununa girilebilecek veri türlerini sınırlayan kurallardır.

SQL Komut Türleri

SQL komutları aşağıdaki türlerde gelir:

  • Veri Tanımlama Dili: CREATE ve ALTER gibi DDL komutlarını kullanarak veri tablolarını tanımlama.
  • Veri Manipülasyon Dili: Bilgi ekleyerek, güncelleyerek ve silerek veri tabanlarındaki verileri işleme. SELECT, INSERT, UPDATE ve DELETE DML komutlarıdır.
  • Veri Kontrol Dili: Erişim ayrıcalıkları verme ve kullanıcılardan izinleri geri alma. GRANT ve REVOKE, DCL komutlarıdır.
  • İşlem Kontrol Dili: COMMIT, ROLLBACK ve SAVEPOINT gibi komutlar veri tabanı işlemleriyle ilgilenir.

SQL Dil Öğeleri

  • Anahtar Sözcükler: Her bir SQL ifadesi, tek veya birden çok anahtar sözcük içerir.
  • Tanımlayıcılar: Tanımlayıcılar, sütun ve tablo adları gibi nesne adlarıdır.
  • Dizeler: Dizeler, değişmez değer dizeleri veya VARCHAR veya CHAR veri türlerine sahip ifadelerdir.
  • İfadeler: İfadeler, sabitler, işleçler, sütun adları ve alt sorgular dahil olmak üzere çeşitli öğelerden gelir.
  • Arama Koşulları: Belirtilen koşulları kullanarak bir tablodan bir satır alt kümesi seçme.
  • Değişkenler: Küresel, yerel ve bağlantı düzeyi değişkenleri destekler.
  • Yorumlar: SQL ifadelerini veya bir ifade bloğunu tanımlama.
  • NULL: Eksik, bilinmeyen veya uygulanamaz bir değer belirtme.

SQL Kısıtlamaları

Kısıtlamalar, bir tablodaki sütunlarla ilişkili belirli kurallardır. Doğruluk ve güvenilirliği sağlamak için sütunun kabul ettiği veri türünün filtrelenmesine yardımcı olur. Kısıtlamalar tablo veya sütun seviyelerine bölünür. Tablo düzeyindeki kısıtlamalar tüm tablo için geçerliyken, sütun düzeyindeki kısıtlamalar yalnızca sütunlarla ilgilidir.

Ortak SQL kısıtlamaları aşağıdakileri içerir:

  • NOT NULL: Sütunun boş değerleri kabul etmemesini sağlar.
  • DEFAULT: Kullanıcı herhangi bir değer belirtmezse varsayılan bir sütun değeri sağlar.
  • UNIQUE: Sütundaki tüm değerlerin farklı olmasını sağlar.
  • PRIMARY KEY: Tablodaki her kaydı/sırayı benzersiz olarak tanımlar. Birincil anahtar sütununda NULL değerler yoktur.
  • FOREIGN KEY: Başka bir tablodaki birincil anahtarı ifade eder. Başvuru anahtarı olarak da bilinir.
  • CHECK: Bir sütundaki tüm değerlerin belirli ölçütleri veya koşulları karşılamasını sağlar.
  • INDEX: Her satıra atanan sayısal bir değer bir dizindir. Bir tablodan verileri hızlı bir şekilde alır.

Veri Analizinde SQL Neden Tercih Edilir?

Mühendisler yazılım geliştirmede SQL’i yaygın olarak kullansa da, anlamsal olarak anlaşılması ve öğrenilmesi kolay olduğu için veri analistleri arasında da popülerdir.

Ayrıca, SQL büyük miktarda veriye depolandıkları yerden doğrudan erişmek için kullanılabildiğinden, analistlerin verileri başka uygulamalara kopyalamasına gerek kalmaz.

Öte yandan, elektronik tablo araçlarına kıyasla, SQL’de yapılan veri analizinin denetlenmesi ve kopyalanması kolaydır. Veri analisti işleri için bu, artık formülde yazım hatası olan hücreyi aramamak anlamına gelir.

1. Günlük SQL Kullanımı

Netflix’te beğeninize göre bir film veya oyuncu aradığınızı hayal edin. Menüdeki kategorilerden veya arama çubuğundan yararlanabilirsiniz. Netflix gibi bir uygulamaya göz atarken, bir bağlantıya her tıkladığınızda “istediğiniz” bilgileri döndürmekten SQL sorumludur.

2. SQL ile Stratejileri İyileştirin

Geçmiş satış verilerinizdeki bazı kırılımları yakalamak için bazı karşılaştırmalar yapabilirsiniz. Örneğin indirim kampanyası yaptığınız geçen ayki satışlarınızla, indirimi kaldırdığınız bu ayki satışlarınızı farklı açılardan karşılaştırmak isteyebilirsiniz.

Bir reklam kampanyasının etkinliğini anlamak için reklamı yayınlamadan önce ve sonra satış rakamlarını karşılaştırmak için de SQL’i kullanabilirsiniz.

Bu sayede farklı satış promosyon programlarının performanslarını karşılaştırabilir ve satış politikanızı buna göre belirleyebilirsiniz.

Bunların dışında kaynak ve giderler için yenilik yapmayı düşünen bir işletme yöneticisi, SQL kullanarak hangi kaynakların verimli kullanıldığını, hangilerinin gereksiz olduğunu karşılaştırabilir ve bu sayede daha tutarlı kararlar alabilir.

SQL Ne İçin Kullanılır?

Veri tabanları (ve dolayısıyla SQL), teknoloji alanında önemli miktarda verinin yer aldığı hemen hemen her alanda kullanılmaktadır. SQL’i en yaygın olarak kullanan sektörlerden bazıları aşağıdaki şekildedir:

Finans sektöründe, bankacılık uygulamaları ve Stripe gibi ödeme işlemcileri, finansal işlemler ve kullanıcılar hakkında verileri depolar ve işletir. Bu işlemlerin arkasında, SQL’in sıklıkla kullanıldığı karmaşık bir veri tabanı vardır. Ayrıca, banka veri tabanı sistemleri, kullanılan SQL kodunda en yüksek düzeyde risk uyumu gerektiren ekstra güvenlik gereksinimlerine sahiptir.

Spotify ve Pandora gibi müzik uygulamaları da yoğun kullanımlı veri tabanları oluşturur. Diğer şeylerin yanı sıra, Sequel veri tabanları, bu uygulamaların çeşitli sanatçıların geniş müzik dosyaları ve albüm kitaplıklarını depolamasına, kullanıcının aradığını bulmak için bu verileri kullanmasına, kullanıcılar ve tercihleri hakkında verileri depolamasına vb. yardımcı olur.

Sosyal medya platformları çok fazla veri işlemeyi içerir. Instagram ve Snapchat gibi uygulamalar, bir kullanıcının biyografi ve konum gibi profil bilgilerini depolamak, bir kullanıcı yeni bir gönderi oluşturduğunda veya bir fotoğraf paylaştığında uygulamanın veri tabanını güncellemek ve bir kullanıcıdan diğerine gönderilen mesajları kaydetmek için SQL kullanır. 

Bu veri tabanlarını çalıştırmak için SQL dili kullanılır. Telefonunuzdaki sosyal ağlardan bilgisayarınızdaki uygulamalara kadar pek çok yazılım SQL’in bir sürümünü çalıştırır. 

Bilmeniz Gereken SQL Veri Tabanı Sistemleri

Bir veri tabanı sistemi, geliştiricinin bir kullanıcı arabirimi yardımıyla veri tabanları ile çalışmasına izin veren bir programdır. Veri tabanı sistemleri genellikle hazır şablonlara ve oluşturuculara sahiptir.

Bu araçlar, bir veri tabanı programcısının hayatını çok daha kolaylaştırır. Bunun nedeni, bu tür araçların veri tabanı sistemini temizlemek gibi genel görevleri otomatikleştirmesidir.

Bu sistemler, DB-Engines popülerlik puanlarına göre sıralanır. 

Sıralama aşağıdaki değişkenleri dikkate alır:

  • Arama motoru sorgularındaki sonuç sayısı olarak ölçülen ve web sitelerinde sistemden bahsedenlerin sayısı
  • Sisteme genel ilgi veya Google Trendler’deki arama sıklığı
  • Sistemle ilgili teknik tartışmaların sıklığı
  • Sistemden bahseden iş teklifi sayısı
  • Sistemin bahsedildiği profesyonel ağlardaki profil sayısı
  • Sosyal ağlarda alaka düzeyi

1. Oracle Database

Oracle, dünyanın önde gelen SQL veri tabanı sistemidir. Çok çeşitli sektörlerde kullanılmaktadır, ancak özellikle veri ambarı ve çevrimiçi işlem işlemede popülerdir.

2. MySQL

Bu açık kaynaklı veri tabanı sistemi, bireyler ve işletmeler için ücretsiz olarak kullanılabilir. Lisans ücreti olmadığı için küçük işletmeler ve yeni başlayanlar arasında oldukça popülerdir. Açık kaynak modeli nedeniyle, MySQL birçok açık kaynak yazılım programı ve uygulamasında kullanılmaktadır.

SQL ve MySQL birlikte çalışır, ancak tamamen farklıdır. Bir MySQL veri tabanında depolanan verilere erişmek, bunları güncellemek ve değiştirmek için SQL’i kullanırsınız.

3. Microsoft SQL Server

SQL Server, Microsoft’un SQL veri tabanı yönetim sistemidir. Bu veri tabanı, Windows işletim sistemlerinin tüm ana sürümlerinde çalışır. Tüketici yazılımlarında ve Windows çalıştıran web sunucularında kullanılır. Geniş bir kullanıcı tabanına sahiptir.

4. PostgreSQL

MySQL’in önemli bir rakibi olan PostgreSQL, başka bir ücretsiz, açık kaynaklı veri tabanı sistemidir. Ücretsiz lisanslama modeli için teknoloji girişimleri tarafından yaygın olarak kullanılmaktadır. PostgreSQL tüm büyük işletim sistemlerini destekler; MacOS, Windows ve Linux. Standart SQL sözdizimini takip etmeye diğer veri tabanlarından daha fazla önem verir. Diğer veri tabanları (SQL Server gibi), SQL standardını büyük ölçüde değiştirerek öğrenmelerini zorlaştırır.

5. NoSQL

NoSQL (“sadece SQL değil”) bir tür “ilişkisel olmayan” veri tabanı anlamına gelir (yani, çoğu geleneksel veri tabanı sisteminde bulunan bir satır ve sütun şeması kullanmaz).

SQL veri tabanlarının önceden tanımlanmış bir şeması olsa da, NoSQL veri tabanları, depolanan veri türünün gereksinimlerine bağlı olarak verileri birçok farklı şekilde depolamanıza olanak tanır. NoSQL veya ilişkisel olmayan veri tabanları arasında MongoDB, Apache Cassandra ve Couchbase bulunur. (Bu veri tabanlarına erişmek için SQL kullanamazsınız).

SQL İle İlgili En Çok Sorulan Sorular

1. SQL’in avantajları nelerdir?

SQL’in en önemli avantajlarından bazıları aşağıdaki şekildedir:

  • Daha hızlı sorgu işleme sağlar.
  • Öğrenmesi kolaydır.
  • Taşınabilirdir.
  • Görünümleri destekler.
  • Çok çeşitli komutlar sağlar.

2. SQL’in kullanım alanları nelerdir?

SQL aşağıdakiler için kullanılabilir:

  • Veri tabanlarının sorgulanması ve bakımı
  • Veri tabanlarındaki işlemleri koruma
  • Veri tabanından bilgi almanın yanı sıra önceki verileri değiştirme veya güncelleme
  • Bir veri tabanında, verileri silmek ve yeni bir tablo oluşturmak
  • Tablo, prosedür ve görüntüleme izinlerini ayarlama
  • İşlevler, görünümler oluşturma ve prosedürleri saklama

3. SQL ifadelerinin türleri nelerdir?

SQL ifadeleri, aşağıdaki ifade türlerini destekler:

  • Data Definition Language (DDL) Statements
  • Data Manipulation Language (DML) Statements
  • Transaction Control Statements
  • Session Control Statements
  • System Control Statement
  • Embedded SQL Statements

4. ACID özellikleri nelerdir?

İşlem öncesi ve sonrası veri tabanında tutarlılığı sağlamak için belirli özelliklere uyulur, bu özelliklere ACID özellikleri denir. Bu özellikler aşağıdaki şekildedir:

  • Atomiklik: Gerçekleştirilen herhangi bir işlem tamamen yürütülmeli veya hiç tamamlanmamalıdır.
  • Tutarlılık: Verilerin bütünlüğü korunmalıdır.
  • İzolasyon: Bir veri üzerindeki işlem, diğerindeki işlemi etkilememelidir.
  • Dayanıklılık: Bir işlemin yürütülmesinden sonra veriler kalıcı hale gelmelidir.