Neler yeni

Yazılım Forum

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra konu oluşturabilecek, mevcut konulara yanıt gönderebilecek, itibar kazanabilecek, özel mesajlaşmaya erişebilecek ve çok daha fazlasını yapabileceksiniz! Bu hizmetlerimiz ise tamamen ücretsiz ve kurallara uyulduğu sürece sınırsızdır, o zaman ne bekliyorsunuz? Hadi, sizde aramıza katılın!

SQL Temelleri: Veritabanı Sorgulamanın Anahtarları

SQL Temelleri: Veritabanı Sorgulamanın Anahtarları

Günümüzün veri odaklı dünyasında, veritabanları iş süreçlerinin ve uygulamaların kalbinde yer almaktadır. Bu veritabanlarıyla etkileşim kurmanın ve onlardan anlamlı bilgi çıkarmanın en yaygın ve güçlü yolu Yapısal Sorgu Dili veya daha bilinen adıyla SQL (Structured Query Language) kullanmaktır. Bu rehber, SQL'in temel prensiplerini ve en çok kullanılan komutlarını adım adım açıklayarak, veritabanı dünyasına sağlam bir giriş yapmanızı sağlamayı amaçlamaktadır.

SQL Nedir?
SQL, ilişkisel veritabanlarını yönetmek ve manipüle etmek için tasarlanmış standart bir dildir. Veritabanı yöneticileri, geliştiriciler ve veri analistleri, veritabanında veri oluşturmak, okumak, güncellemek ve silmek (CRUD işlemleri) için SQL kullanır. SQL, 1970'lerde IBM'de geliştirilmiş olup, günümüzde Oracle, MySQL, PostgreSQL, SQL Server gibi popüler veritabanı yönetim sistemlerinin tamamında desteklenmektedir.

“SQL, bir veritabanıyla konuşmanın evrensel dilidir.”

SQL Komut Kategorileri
SQL komutları genellikle birkaç ana kategoriye ayrılır:

  • Veri Tanımlama Dili (DDL - Data Definition Language): Veritabanı yapılarını (tablolar, indeksler, görünümler vb.) oluşturmak, değiştirmek veya silmek için kullanılır.
  • Veri İşleme Dili (DML - Data Manipulation Language): Veritabanındaki verileri sorgulamak, eklemek, güncellemek veya silmek için kullanılır.
  • Veri Kontrol Dili (DCL - Data Control Language): Veritabanı kullanıcılarına izinler vermek veya kaldırmak için kullanılır.
  • İşlem Kontrol Dili (TCL - Transaction Control Language): İşlemleri yönetmek için kullanılır (COMMIT, ROLLBACK, SAVEPOINT).

Bu rehberde, özellikle DDL ve DML komutlarına odaklanacağız.

DDL Komutları: Veritabanı Yapılarını Oluşturma ve Yönetme

1. CREATE TABLE: Yeni bir tablo oluşturmak için kullanılır.
Kod:
CREATE TABLE Ogrenciler (
    OgrenciID INT PRIMARY KEY,
    Ad VARCHAR(50) NOT NULL,
    Soyad VARCHAR(50) NOT NULL,
    DogumTarihi DATE,
    KayitTarihi DATETIME DEFAULT CURRENT_TIMESTAMP
);
Yukarıdaki örnekte `Ogrenciler` adında bir tablo oluşturduk. `OgrenciID` sütunu birincil anahtar (Primary Key) olarak tanımlanmıştır. `VARCHAR` metin verileri, `INT` tam sayılar ve `DATE`/`DATETIME` tarih/saat verileri için kullanılır. `NOT NULL` o sütunun boş bırakılamayacağını belirtir.

2. ALTER TABLE: Mevcut bir tablonun yapısını değiştirmek için kullanılır.
Kod:
ALTER TABLE Ogrenciler
ADD COLUMN Eposta VARCHAR(100);

ALTER TABLE Ogrenciler
DROP COLUMN KayitTarihi;

ALTER TABLE Ogrenciler
ALTER COLUMN Ad VARCHAR(75);

3. DROP TABLE: Bir tabloyu ve içindeki tüm verileri kalıcı olarak silmek için kullanılır. Dikkatli kullanılmalıdır!
Kod:
DROP TABLE Ogrenciler;

DML Komutları: Verilerle Çalışma

1. INSERT INTO: Bir tabloya yeni veri eklemek için kullanılır.
Kod:
INSERT INTO Ogrenciler (OgrenciID, Ad, Soyad, DogumTarihi, Eposta)
VALUES (1, 'Ayşe', 'Yılmaz', '2000-01-15', 'ayse.yilmaz@example.com');

INSERT INTO Ogrenciler VALUES (2, 'Mehmet', 'Demir', '1999-05-20', 'mehmet.demir@example.com');
İlk örnekte sütun adlarını belirterek, ikinci örnekte ise tüm sütunlara sırasıyla veri ekleyerek kullanılmıştır.

2. SELECT: Bir tablodan veri çekmek için kullanılır. SQL'in en sık kullanılan komutudur.

  • Tüm Sütunları Seçme:
    Kod:
    SELECT * FROM Ogrenciler;
  • Belirli Sütunları Seçme:
    Kod:
    SELECT Ad, Soyad, Eposta FROM Ogrenciler;
  • WHERE Koşulu ile Filtreleme: Belirli kriterlere uyan satırları seçmek için kullanılır.
    Kod:
    SELECT * FROM Ogrenciler
    WHERE DogumTarihi < '2000-01-01';
    
    SELECT Ad, Soyad FROM Ogrenciler
    WHERE Soyad = 'Yılmaz' AND OgrenciID = 1;
  • ORDER BY ile Sıralama: Sonuç kümesini belirli bir sütuna göre artan (ASC) veya azalan (DESC) sırada sıralamak için kullanılır.
    Kod:
    SELECT Ad, Soyad, DogumTarihi FROM Ogrenciler
    ORDER BY DogumTarihi DESC; -- En yaşlıdan en gence
    
    SELECT Ad, Soyad FROM Ogrenciler
    ORDER BY Soyad ASC, Ad ASC; -- Soyada göre, aynı soyad içinde ada göre sırala
  • LIMIT (veya TOP/FETCH NEXT) ile Sınırlandırma: Belirli sayıda satır döndürmek için kullanılır (Veritabanı sistemine göre farklılık gösterebilir: MySQL/PostgreSQL için LIMIT, SQL Server için TOP/FETCH NEXT).
    Kod:
    SELECT * FROM Ogrenciler
    ORDER BY OgrenciID
    LIMIT 5; -- İlk 5 öğrenciyi getir

3. UPDATE: Mevcut bir tablodaki verileri güncellemek için kullanılır. WHERE koşulu ile kullanılmadığında, tablodaki tüm satırları güncelleyebilir, bu yüzden dikkatli olunmalıdır!
Kod:
UPDATE Ogrenciler
SET Eposta = 'ayse.yeni@example.com'
WHERE OgrenciID = 1;

UPDATE Ogrenciler
SET DogumTarihi = '1998-10-10'
WHERE Ad = 'Mehmet' AND Soyad = 'Demir';

4. DELETE FROM: Bir tablodan veri silmek için kullanılır. WHERE koşulu ile kullanılmadığında, tablodaki tüm satırları silebilir!
Kod:
DELETE FROM Ogrenciler
WHERE OgrenciID = 2;

DELETE FROM Ogrenciler
WHERE DogumTarihi < '1999-01-01';

Aggregate Fonksiyonları
Aggregate fonksiyonları, bir sütundaki değerler üzerinde hesaplamalar yapar ve tek bir sonuç döndürür. En yaygın olanları:
  • COUNT(): Satır sayısını döndürür.
    Kod:
    SELECT COUNT(*) FROM Ogrenciler; -- Tablodaki toplam öğrenci sayısı
    SELECT COUNT(Eposta) FROM Ogrenciler; -- E-postası olan öğrenci sayısı (NULL'ları saymaz)
  • SUM(): Sayısal bir sütundaki değerlerin toplamını döndürür.
  • AVG(): Sayısal bir sütundaki değerlerin ortalamasını döndürür.
  • MIN(): Sayısal veya metinsel bir sütundaki en küçük değeri döndürür.
  • MAX(): Sayısal veya metinsel bir sütundaki en büyük değeri döndürür.
Örnek:
Kod:
SELECT AVG(DATEDIFF(CURRENT_DATE, DogumTarihi)/365) AS OrtalamaYas FROM Ogrenciler; -- Öğrencilerin ortalama yaşı (yaklaşık)
SELECT MIN(DogumTarihi) AS EnGencOgrenciDogumTarihi FROM Ogrenciler;
(Not: `DATEDIFF` fonksiyonu veritabanına göre değişebilir, bu genel bir örnek)

GROUP BY ve HAVING
GROUP BY ifadesi, sonuç kümesini belirli bir veya daha fazla sütuna göre gruplandırmak ve bu gruplar üzerinde aggregate fonksiyonları uygulamak için kullanılır.
Kod:
-- Her bir doğum yılına göre öğrenci sayısını bulalım
SELECT YEAR(DogumTarihi) AS DogumYili, COUNT(OgrenciID) AS OgrenciSayisi
FROM Ogrenciler
GROUP BY DogumYili
ORDER BY DogumYili;
HAVING ifadesi, GROUP BY ile oluşturulan grupları filtrelemek için kullanılır, WHERE ifadesinin gruplar üzerinde çalışan versiyonudur.
Kod:
-- 2'den fazla öğrencisi olan doğum yıllarını getir
SELECT YEAR(DogumTarihi) AS DogumYili, COUNT(OgrenciID) AS OgrenciSayisi
FROM Ogrenciler
GROUP BY DogumYili
HAVING COUNT(OgrenciID) > 2
ORDER BY DogumYili;

JOIN Operasyonları (Kısaca)
İlişkisel veritabanlarında veriler genellikle birden fazla tabloya dağılmıştır. Bu tabloları birleştirmek ve ilişkili verileri çekmek için JOIN operasyonları kullanılır. En yaygın JOIN türleri şunlardır:
  • INNER JOIN: Her iki tabloda da eşleşen kaydı olan satırları döndürür.
  • LEFT JOIN (LEFT OUTER JOIN): Sol tablodaki tüm kayıtları ve sağ tablodaki eşleşen kayıtları döndürür. Sağ tabloda eşleşme yoksa NULL döndürür.
  • RIGHT JOIN (RIGHT OUTER JOIN): Sağ tablodaki tüm kayıtları ve sol tablodaki eşleşen kayıtları döndürür. Sol tabloda eşleşme yoksa NULL döndürür.
  • FULL JOIN (FULL OUTER JOIN): Her iki tablodaki tüm kayıtları döndürür. Eşleşme olmayan yerlerde NULL doldurur.
Örnek (basit bir INNER JOIN):
Kod:
SELECT O.Ad, O.Soyad, D.DersAdi
FROM Ogrenciler O
INNER JOIN DersKayitlari DK ON O.OgrenciID = DK.OgrenciID
INNER JOIN Dersler D ON DK.DersID = D.DersID;
Bu örnekte, `Ogrenciler`, `DersKayitlari` ve `Dersler` tablolarını birleştirerek öğrencilerin aldıkları dersleri listeledik.

Alt Sorgular (Subqueries)
Bir SQL sorgusunun başka bir SQL sorgusunun içine gömülmesiyle alt sorgular oluşturulur. Genellikle SELECT, INSERT, UPDATE ve DELETE deyimleriyle birlikte kullanılırlar.
Kod:
-- Ortalama yaştan daha yaşlı olan öğrencileri bul
SELECT Ad, Soyad, DogumTarihi
FROM Ogrenciler
WHERE DogumTarihi < (SELECT AVG(DogumTarihi) FROM Ogrenciler);
(Not: Bu alt sorgu örneği tarih türüne göre yaş hesaplamada karmaşık olabilir, ancak temel mantığı gösterir.)

İndeksler ve Performans (Kısaca)
İndeksler, veritabanı tablolarından veri alma hızını artırmak için kullanılır. Tıpkı bir kitabın dizini gibi, belirli sütunlar üzerinde hızlı arama yapılmasını sağlarlar. Ancak, indeksler veri ekleme, güncelleme ve silme işlemlerinin maliyetini artırabilir, bu yüzden dikkatli tasarlanmaları gerekir.

Özet
Bu kapsamlı rehber, SQL'in temel taşlarını, yani DDL ve DML komutlarını, aggregate fonksiyonları, GROUP BY, HAVING ve JOIN operasyonlarının temellerini açıklamıştır. Veritabanı yönetim sistemleriyle etkileşim kurmak için bu temel bilgilere sahip olmak kritik öneme sahiptir. SQL öğrenmek, sadece bir dil öğrenmek değil, aynı zamanda veri mantığını ve veritabanı tasarım prensiplerini anlamaktır. Pratik yaparak ve farklı senaryolar üzerinde çalışarak SQL bilginizi pekiştirebilirsiniz.

Daha fazla bilgi ve pratik için W3Schools SQL Tutorial gibi kaynakları ziyaret edebilirsiniz.
 
shape1
shape2
shape3
shape4
shape5
shape6
Üst

Bu web sitenin performansı Hazal Host tarafından sağlanmaktadır.

YazilimForum.com.tr internet sitesi, 5651 sayılı Kanun’un 2. maddesinin 1. fıkrasının (m) bendi ve aynı Kanun’un 5. maddesi kapsamında Yer Sağlayıcı konumundadır. Sitede yer alan içerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır.

YazilimForum.com.tr, kullanıcılar tarafından paylaşılan içeriklerin doğruluğunu, güncelliğini veya hukuka uygunluğunu garanti etmez ve içeriklerin kontrolü veya araştırılması ile yükümlü değildir. Kullanıcılar, paylaştıkları içeriklerden tamamen kendileri sorumludur.

Hukuka aykırı içerikleri fark ettiğinizde lütfen bize bildirin: lydexcoding@gmail.com

Sitemiz, kullanıcıların paylaştığı içerik ve bilgileri 6698 sayılı KVKK kapsamında işlemektedir. Kullanıcılar, kişisel verileriyle ilgili haklarını KVKK Politikası sayfasından inceleyebilir.

Sitede yer alan reklamlar veya üçüncü taraf bağlantılar için YazilimForum.com.tr herhangi bir sorumluluk kabul etmez.

Sitemizi kullanarak Forum Kuralları’nı kabul etmiş sayılırsınız.

DMCA.com Protection Status Copyrighted.com Registered & Protected