SQL Nedir?

SQL, günümüzde veritabanı yönetimi için temel araçlardan biri olmuştur. “Structured Query Language”ın kısaltması olan SQL, ilişkisel veritabanlarındaki verilerle etkileşimde bulunmak, sorgulamak ve yönetmek için kullanılan bir programlama dilidir. Bu yazıda, SQL’in temel prensiplerinden başlayarak, işlevselliğini, avantajlarını ve günlük kullanım örneklerini keşfedeceğiz.

SQL’in Temel Prensipleri

a. Veritabanı Oluşturma ve Yönetme: SQL, veritabanları oluşturmak ve yönetmek için kullanılır. CREATE DATABASE komutu ile yeni bir veritabanı oluşturabilir, ardından CREATE TABLE ile tabloları tanımlayabilirsiniz.

b. Veri Ekleme, Güncelleme ve Silme: INSERT, UPDATE ve DELETE komutları ile SQL, veritabanındaki verilerle etkileşime geçer. Bu komutlar, veri eklemek, güncellemek veya silmek için kullanılır.

c. Veritabanı Sorgulama: SELECT komutu, veritabanından veri çekmek için kullanılır. WHERE koşulları ekleyerek veriyi filtreleyebilir, GROUP BY ile gruplandırabilir ve ORDER BY ile sıralayabilirsiniz.

SQL Temel Komutları

a. SELECT İfadeleri:

  • SQL’de SELECT komutu, veritabanından veri çekmek için kullanılır. Temel bir kullanım şu şekildedir:
Örnek 1: Tüm sütunları çekme;

Örnek 2: Belirli sütunları çekme;
Örnek 3: WHERE koşulu ile filtreleme;

b. DML Komutları:

DML (Data Manipulation Language) komutları, veritabanındaki verilerle etkileşimde bulunmak için kullanılır.

INSERT Komutu:

  • INSERT komutu, veritabanına yeni veri eklemek için kullanılır. Bir tabloya yeni bir kayıt eklemek amacıyla kullanılır.
Örnek: Bir müşteri eklemek;
UPDATE Komutu:

  • UPDATE komutu, var olan veriyi güncellemek için kullanılır. Belirli bir koşula uyan kayıtları güncellemek amacıyla kullanılır.
Örnek: Bir ürünün stok miktarını güncellemek;
DELETE Komutu:

  • DELETE komutu, veritabanındaki veriyi silmek için kullanılır. Belirli bir koşula uyan kayıtları silmek amacıyla kullanılır.
Örnek: Bir müşteriyi silmek;

SQL Fonksiyonları

a. Matematiksel Fonksiyonlar:

  • SUM(): Belirli bir sütundaki değerlerin toplamını hesaplar.
  • AVG(): Belirli bir sütundaki değerlerin ortalamasını hesaplar.
  • MIN() ve MAX(): Sırasıyla belirli bir sütundaki en küçük ve en büyük değerleri bulur.
b. Metin İşleme Fonksiyonları:

  • CONCAT(): İki veya daha fazla dizeyi birleştirir.
  • SUBSTRING(): Belirli bir dizeden bir alt dize alır.
  • LENGTH(): Bir dizenin uzunluğunu hesaplar.
  • UPPER() ve LOWER(): Sırasıyla bir dizedeki harfleri büyük veya küçük harfe dönüştürür.
c. Diğer Fonksiyonlar:

  • NOW(): Geçerli tarih ve saat bilgisini alır.
  • COUNT(): Belirli bir sütundaki toplam satır sayısını hesaplar.
  • GROUP BY: Belirli bir sütuna göre gruplama yapar ve grup bazında işlemler yapmanıza olanak tanır.

Bu örnekler, SQL fonksiyonlarının çeşitli kullanımlarını göstermektedir. SQL sorgularınızı oluştururken, ihtiyaçlarınıza uygun fonksiyonları seçmek için veritabanınızın gereksinimlerini göz önünde bulundurmalısınız.

SQL ve Web Geliştirme

a. Veritabanı İlişkisi:

Web geliştirmenin temelinde veritabanları, kullanıcıların etkileşimde bulunduğu içerik ve verileri depolar. SQL, bu veritabanlarının yönetimi ve sorgulanması için kullanılır.

b. Veritabanı Bağlantısı:

Web uygulamaları, SQL ile etkileşimde bulunabilmek için veritabanına bağlantı kurmalıdır. Bu bağlantı genellikle programlama dilleri aracılığıyla gerçekleştirilir. Örneğin, PHP’de MySQL veritabanına bağlantı kurma işlemi şu şekildedir:

c. SQL ve Dinamik İçerik Oluşturma:

Web uygulamaları genellikle kullanıcıya özelleştirilmiş ve dinamik içerik sunar. Bu içerik, SQL sorguları aracılığıyla veritabanından çekilir ve web sayfasına entegre edilir.

d. ORM (Object-Relational Mapping):

ORM, SQL sorgularını daha programlama diline özgü nesnelerle eşleştiren bir yaklaşımdır. Bu, veritabanı işlemlerini daha soyut ve programlanabilir hale getirir. Örneğin, Python’da SQLAlchemy gibi ORM kütüphaneleri kullanılabilir.

e. Güvenlik ve SQL Injection:

SQL Injection saldırıları, web uygulamalarında sıkça karşılaşılan bir güvenlik sorunudur. Bu nedenle, kullanıcı girişleri ve SQL sorgularını oluştururken parametreli sorgular ve veri doğrulama gibi güvenlik önlemleri alınmalıdır.

Bu örnekler, SQL’in web geliştirmedeki rolünü anlamanıza yardımcı olmalıdır. Her bir programlama dili ve teknoloji farklı olabilir, bu nedenle projenizin gereksinimlerine göre uygun olanı seçmek önemlidir.

SQL ve Güvenlik

a. SQL Injection Nedir?

SQL Injection, kötü niyetli kullanıcıların, web uygulamalarına kötü amaçlı SQL sorguları göndererek veritabanına erişim sağlama girişimidir. Bu saldırı türü, kullanıcı giriş alanlarına veya URL parametrelerine eklenen kötü amaçlı SQL kodları aracılığıyla gerçekleştirilebilir.

b. SQL Injection’a Karşı Korunma Yöntemleri:

  • Parametreli Sorgular: SQL sorgularını oluştururken kullanıcı girişlerini doğrudan içermek yerine parametreli sorgular kullanmak, SQL Injection saldırılarını engellemenin etkili bir yoludur.
    Örnek (PHP ile):
  • Giriş Doğrulama ve Veri Temizleme: Kullanıcı girişlerini almadan önce veri temizleme işlemleri yapmak, potansiyel olarak zararlı karakterleri temizleyerek güvenlik sağlar.
    Örnek (Python ile):
  • Veritabanı Yetkilendirmesi: Veritabanı kullanıcı hesaplarını ve bu hesapların sadece gerekli yetkilere sahip olmasını sağlamak önemlidir. En aza indirgenmiş yetkilerle çalışmak, olası güvenlik tehditlerini azaltabilir.

c. Transaksiyon ve ACID Özellikleri:

  • Transaksiyon Kontrolü: Veritabanındaki değişiklikleri bir araya getirerek transaksiyon kontrolü kullanmak, işlemlerin başarısız olması durumunda geri alma (ROLLBACK) yaparak veri bütünlüğünü korur.
    Örnek:
  • ACID Özellikleri: ACID (Atomicity, Consistency, Isolation, Durability), bir veritabanı işlemi için dört temel özelliği ifade eder. Bu özellikler, veritabanındaki güvenilirliği artırır.
    • Atomicity (Atomiklik): Bir transaksiyon ya tam olarak gerçekleşir ya da hiç gerçekleşmez.
    • Consistency (Tutarlılık): Bir transaksiyon sonrasında veritabanı tutarlı bir durumda olmalıdır.
    • Isolation (İzolasyon): Her transaksiyonun diğerleriyle bağımsız çalışmasını sağlar.
    • Durability (Kalıcılık): Bir transaksiyonun tamamlandığında, yapılan değişiklikler kalıcı olmalıdır.

Bu güvenlik önlemleri, SQL kullanımında sıkça karşılaşılan güvenlik sorunlarına karşı koruma sağlar. Ancak, güvenlik konusundaki en güncel bilgileri ve en iyi uygulamaları takip etmek her zaman önemlidir.

Bir cevap yazın