Backend Dersleri › SQL › SELECT ile Veri Çekme
0 / 3
Oturum geri yüklendi 100% kalite
Çalışma alanı

Derse Hazır mısınız?

Satır satır kod yazılışını izleyin ve her satırın açıklamasını dinleyin.

Terminal Çıktısı Hazır
Kod çalıştırıldığında çıktı burada görünecek...
Web Önizleme
HTML çıktı oluştuğunda önizleme burada açılır.
Satır Satır Anlatım
Bu derste SQL komutunu ezberlemek yerine hangi tablodan hangi kolonların istendiğini, koşulların kayıtları nasıl elediğini ve sonucun backend içinde nasıl kullanıldığını inceleyeceğiz.
Bu dersin hedefleri
  • SQL komutunun tablo, kolon ve koşul parçalarını ayırt etmek.
  • Parametreli sorgunun veri güvenliği ve sonuç doğruluğundaki rolünü açıklamak.
  • Boş, çoklu, NULL ve yetkisiz veri senaryolarını test edebilmek.
SQL sorgusu ve veri erişimi beginner 25 dk çalışma
Bu dersin ana sorusu: SQL komutunun hangi kayıtları neden seçtiğini ve veritabanı motorunun bu sorguyu nasıl çalıştırdığını anlamak.
Öğrenme özeti: Bir SQL sorgusu veritabanına ne istediğimizi söyler; doğru ve güvenli sonuç için tablo/kolon/koşul ilişkisi ile parametre kullanımı birlikte kontrol edilmelidir.
Öğrenme rotası ve transfer görevi
  1. Veriyi tanı: Tabloyu, kolonları ve beklenen kayıtları sorgudan önce belirleyin.
  2. Koşulu kur: WHERE/JOIN/parametre parçalarının hangi kayıtları dahil veya hariç bıraktığını tahmin edin.
  3. Sonucu doğrula: Sonuç kümesini, boş kayıt davranışını, güvenliği ve gerekirse EXPLAIN planını kontrol edin.
Kendin dene: Sorguya yeni bir filtre veya sıralama ekleyin. Beklenen kayıtları önce tahmin edin, parametreyi güvenli bağlayın ve sonucu boş/çoklu kayıt senaryolarıyla test edin.
Kavram sözlüğü ve sık karıştırılanlar
  • SELECT: Bir veya daha fazla tablodan veri okumak için kullanılan SQL komutudur.
  • WHERE: Sonuç kümesine hangi kayıtların gireceğini belirleyen koşuldur.
  • Parametreli sorgu: Kullanıcı verisini SQL metninden ayrı bağlayarak enjeksiyon riskini azaltan sorgu biçimidir.
  • Sonuç kümesi: Sorgunun koşulları geçtikten sonra döndürdüğü satır ve kolon grubudur.
Sık karıştırılanlar: WHERE koşulu yazmak tek başına sorguyu güvenli yapmaz; parametre bağlama da gerekir. Bir sorgunun sonuç döndürmesi, verinin doğru güncellendiğini veya performansın iyi olduğunu kanıtlamaz.
Nasıl çalışacağız: Önce tablo ve kolonları yazın. Sonra SELECT/INSERT/UPDATE/DELETE komutunu, koşulunu ve beklenen kayıtları ayrı ayrı tahmin edin; en son gerçek sonucu karşılaştırın.
Hata ayıklama: Önce sorguyu sabit ve küçük veriyle çalıştırın. Ardından tablo adı, kolon adı, parametre tipi, JOIN koşulu ve dönen kayıt sayısını tek tek kontrol edin.
Test yaklaşımı: Normal kayıt, hiç eşleşmeyen kayıt, NULL değer, sınır tarih ve yetkisiz kullanıcı senaryolarını deneyin; sonuç kümesini ve veri değişikliğini doğrulayın.
Güvenlik: Kullanıcı verisini string birleştirme ile SQL metnine eklemeyin; prepared statement/parametreli sorgu, kolon izinleri ve en az yetki ilkesini kullanın.
Sürdürülebilirlik: Sorguyu amacına göre küçük tutun, kolonları açıkça yazın, parametre adlarını anlamlı seçin ve performans kararını EXPLAIN ile ölçün.
Ders özeti: SQL dersini tablo, kolon, koşul, parametre, sonuç kümesi ve güvenli sorgu arasındaki veri akışıyla özetleyin.
1
SELECT ad , soyad
SELECT — SELECT ifadesi SQL içinde tablo/kolon/koşul ilişkisini kurar; kullanıcı değeri varsa SQL metninden ayrı parametre olarak bağlanmalıdır.
Bu adımı hiç bilmeyen biri için okuyalım: SELECT ifadesi, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi içinde bu örneğin ilgili görevini üstlenir. Satırın rolü: Veritabanı sorgusunun komut/koşul parçası. Sözdizimi açısından SELECT ifadesi SQL içinde tablo/kolon/koşul ilişkisini kurar; kullanıcı değeri varsa SQL metninden ayrı parametre olarak bağlanmalıdır. Çalışma sırasında Veritabanı sorgu motoru bu SQL parçasını ayrıştırır, koşulları uygular ve uygun kayıtları sonuç kümesine taşır. SELECT ifadesi sonraki backend işleminin girdisini hazırlar. Gözlenebilir ara sonuç şudur: Bu adımın sonunda SELECT ifadesi için gerekli ara durum oluşur; veritabanından seçilen veya değiştirilen kayıtlar, sorgunun koşullarıyla birlikte ölçülebilir hale gelir. Bir sonraki satır bu sonucu kullanır. Kod parçaları: SELECT: Veritabanı motoruna okunacak veya değiştirilecek veri akışını bildirir. Bu satırın neden burada olduğunu anlamak için girdiyi ve bir sonraki satıra taşınan değeri birlikte kontrol edin.
  1. Önce SELECT ifadesi parçasının hangi girdiyi aldığını ve SQL sorgusu ve veri erişimi içindeki görevini söyleyin.
  2. Sonra sözdizimini parçalara ayırın; hangi anahtar kelime, değişken veya parametrenin neyi belirlediğini gösterin.
  3. Çalışma zamanında verinin bu satırdan önceki ve sonraki halini karşılaştırın; terminal/response sonucunu kontrol edin.
  4. Aynı fikri boş, hatalı veya farklı bir değerle deneyin; hata oluşursa mesajı okuyup tek değişiklikle yeniden test edin.
Yaygın hata: Bu adımda en yaygın hata, SELECT ifadesi parçasını SQL sorgusu ve veri erişimi bağlamından koparıp yalnızca ezberlemektir. Önce girdiyi doğrulayın, sonra beklenen çıktıyı küçük bir testle karşılaştırın.
Şimdi sen dene: SELECT ifadesi üzerinde küçük bir değişiklik yapın; SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi akışında hangi çıktının değişmesini beklediğinizi yazın, sonra normal ve hatalı bir girdiye karşı çalıştırın.
Satırın görevi: Veritabanı sorgusunun komut/koşul parçası
Kavram: SQL sorgusu ve veri erişimi
SELECT ifadesi satırını yalnızca sözdizimiyle değil, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi içindeki göreviyle okuyun.
Blok kapsamı: SELECT ifadesi satırının bulunduğu backend akışındaki kapsamı ve sonraki adıma taşıdığı sonucu belirler.
Neden şimdi: Bu parça, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi akışında sonraki adımın ihtiyaç duyduğu girdiyi hazırlamak için şimdi kuruluyor.
Kod etiketlerini tek tek incele
SELECT SQL komutu/koşulu
Ne yapar? Veritabanı motoruna okunacak veya değiştirilecek veri akışını bildirir.
Neden burada? Dersin sorgu amacını bu anahtar kelime üzerinden kurar.
Silinirse: Sorgunun sonucu, kapsamı veya veri değişikliği bozulur.
SELECT ifadesi, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi içinde bu örneğin ilgili görevini üstlenir.
Veritabanı sorgu motoru bu SQL parçasını ayrıştırır, koşulları uygular ve uygun kayıtları sonuç kümesine taşır. SELECT ifadesi sonraki backend işleminin girdisini hazırlar.
Akış Şeması (Flowchart)
AST (Abstract Syntax Tree)
{
    "type": "SelectStatement",
    "columns": [
        {
            "type": "ColumnRef",
            "name": "ad"
        },
        {
            "type": "ColumnRef",
            "name": "soyad"
        }
    ]
}
Değişiklikler (Diff)
+ Eklendi:
+ SELECT ad, soyad
Akıllı İpuçları (Adaptive Hints)
Tetikleyici: select_star
SELECT * KULLANMAYIN! Sadece ihtiyacınız olan sütunları yazın. İndeks kullanımı, ağ bant genişliği, bellek tüketimi açısından kritiktir. Sütun isimlerini tam yazın, kısaltma yapmayın.
Tetikleyici: trailing_comma
Son sütundan sonra virgül koymak (SELECT ad, soyad,) bazı DB'lerde hata verir. Son sütundan sonra virgül YOK.
Girdiyi doğrulamadan bu satırın ürettiği sonucu doğru kabul etmek.
İlk olarak hangi sütunları çekeceğimizi belirtiyoruz: ad ve soyad. SELECT komutu SQL'in en temel komutudur, veritabanından veri okumak için kullanılır. Sadece ihtiyacımız olan sütunları yazıyoruz, * yapmıyoruz.
2
FROM kullanicilar
FROM — SQL satırı SQL içinde tablo/kolon/koşul ilişkisini kurar; kullanıcı değeri varsa SQL metninden ayrı parametre olarak bağlanmalıdır.
Bu adımı hiç bilmeyen biri için okuyalım: SQL satırı, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi içinde bu örneğin ilgili görevini üstlenir. Satırın rolü: Veritabanı sorgusunun komut/koşul parçası. Sözdizimi açısından SQL satırı SQL içinde tablo/kolon/koşul ilişkisini kurar; kullanıcı değeri varsa SQL metninden ayrı parametre olarak bağlanmalıdır. Çalışma sırasında Veritabanı sorgu motoru bu SQL parçasını ayrıştırır, koşulları uygular ve uygun kayıtları sonuç kümesine taşır. SQL satırı sonraki backend işleminin girdisini hazırlar. Gözlenebilir ara sonuç şudur: Bu adımın sonunda SQL satırı için gerekli ara durum oluşur; veritabanından seçilen veya değiştirilen kayıtlar, sorgunun koşullarıyla birlikte ölçülebilir hale gelir. Bir sonraki satır bu sonucu kullanır. Kod parçaları: FROM: Veritabanı motoruna okunacak veya değiştirilecek veri akışını bildirir. Bu satırın neden burada olduğunu anlamak için girdiyi ve bir sonraki satıra taşınan değeri birlikte kontrol edin.
  1. Önce SQL satırı parçasının hangi girdiyi aldığını ve SQL sorgusu ve veri erişimi içindeki görevini söyleyin.
  2. Sonra sözdizimini parçalara ayırın; hangi anahtar kelime, değişken veya parametrenin neyi belirlediğini gösterin.
  3. Çalışma zamanında verinin bu satırdan önceki ve sonraki halini karşılaştırın; terminal/response sonucunu kontrol edin.
  4. Aynı fikri boş, hatalı veya farklı bir değerle deneyin; hata oluşursa mesajı okuyup tek değişiklikle yeniden test edin.
Yaygın hata: Bu adımda en yaygın hata, SQL satırı parçasını SQL sorgusu ve veri erişimi bağlamından koparıp yalnızca ezberlemektir. Önce girdiyi doğrulayın, sonra beklenen çıktıyı küçük bir testle karşılaştırın.
Şimdi sen dene: SQL satırı üzerinde küçük bir değişiklik yapın; SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi akışında hangi çıktının değişmesini beklediğinizi yazın, sonra normal ve hatalı bir girdiye karşı çalıştırın.
Bu modülün getirdiği araçlar sonraki satırlarda isimleriyle kullanılacak.
Satırın görevi: Veritabanı sorgusunun komut/koşul parçası
Kavram: SQL sorgusu ve veri erişimi
SQL satırı satırını yalnızca sözdizimiyle değil, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi içindeki göreviyle okuyun.
Blok kapsamı: SQL satırı satırının bulunduğu backend akışındaki kapsamı ve sonraki adıma taşıdığı sonucu belirler.
Neden şimdi: Bu parça, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi akışında sonraki adımın ihtiyaç duyduğu girdiyi hazırlamak için şimdi kuruluyor.
Kod etiketlerini tek tek incele
FROM SQL komutu/koşulu
Ne yapar? Veritabanı motoruna okunacak veya değiştirilecek veri akışını bildirir.
Neden burada? Dersin sorgu amacını bu anahtar kelime üzerinden kurar.
Silinirse: Sorgunun sonucu, kapsamı veya veri değişikliği bozulur.
SQL satırı, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi içinde bu örneğin ilgili görevini üstlenir.
Veritabanı sorgu motoru bu SQL parçasını ayrıştırır, koşulları uygular ve uygun kayıtları sonuç kümesine taşır. SQL satırı sonraki backend işleminin girdisini hazırlar.
Akış Şeması (Flowchart)
AST (Abstract Syntax Tree)
{
    "type": "SelectStatement",
    "from": {
        "type": "TableRef",
        "name": "kullanicilar"
    }
}
Değişiklikler (Diff)
+ Eklendi:
+ FROM kullanicilar
Akıllı İpuçları (Adaptive Hints)
Tetikleyici: table_not_found
Tablo ismi yanlış yazılınca (kullanici vs kullanicilar) 'relation does not exist' hatası. Büyük/küçük harf hassasiyeti: PostgreSQL'de unquoted identifier lowercase'a zorlanır, quoted (".kullanicilar") case-sensitive olur.
Tetikleyici: schema_missing
Tablo ismi belirsizse schema belirtin: FROM public.kullanicilar. Production'da güvenlik/performans için iyidir.
Girdiyi doğrulamadan bu satırın ürettiği sonucu doğru kabul etmek.
Veriyi 'kullanicilar' tablosundan çekeceğiz. FROM komutu veri kaynağını gösterir. Tablo adını tam yazın, yazım hatası olursa sorgu çalışmaz.
3
WHERE yas > 18
WHERE — WHERE koşulu SQL içinde tablo/kolon/koşul ilişkisini kurar; kullanıcı değeri varsa SQL metninden ayrı parametre olarak bağlanmalıdır.
Bu adımı hiç bilmeyen biri için okuyalım: WHERE koşulu, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi içinde bu örneğin ilgili görevini üstlenir. Satırın rolü: Veritabanı sorgusunun komut/koşul parçası. Sözdizimi açısından WHERE koşulu SQL içinde tablo/kolon/koşul ilişkisini kurar; kullanıcı değeri varsa SQL metninden ayrı parametre olarak bağlanmalıdır. Çalışma sırasında Veritabanı sorgu motoru bu SQL parçasını ayrıştırır, koşulları uygular ve uygun kayıtları sonuç kümesine taşır. WHERE koşulu sonraki backend işleminin girdisini hazırlar. Gözlenebilir ara sonuç şudur: Bu adımın sonunda WHERE koşulu için gerekli ara durum oluşur; veritabanından seçilen veya değiştirilen kayıtlar, sorgunun koşullarıyla birlikte ölçülebilir hale gelir. Bir sonraki satır bu sonucu kullanır. Kod parçaları: WHERE: Veritabanı motoruna okunacak veya değiştirilecek veri akışını bildirir. Bu satırın neden burada olduğunu anlamak için girdiyi ve bir sonraki satıra taşınan değeri birlikte kontrol edin.
  1. Önce WHERE koşulu parçasının hangi girdiyi aldığını ve SQL sorgusu ve veri erişimi içindeki görevini söyleyin.
  2. Sonra sözdizimini parçalara ayırın; hangi anahtar kelime, değişken veya parametrenin neyi belirlediğini gösterin.
  3. Çalışma zamanında verinin bu satırdan önceki ve sonraki halini karşılaştırın; terminal/response sonucunu kontrol edin.
  4. Aynı fikri boş, hatalı veya farklı bir değerle deneyin; hata oluşursa mesajı okuyup tek değişiklikle yeniden test edin.
Yaygın hata: Bu adımda en yaygın hata, WHERE koşulu parçasını SQL sorgusu ve veri erişimi bağlamından koparıp yalnızca ezberlemektir. Önce girdiyi doğrulayın, sonra beklenen çıktıyı küçük bir testle karşılaştırın.
Şimdi sen dene: WHERE koşulu üzerinde küçük bir değişiklik yapın; SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi akışında hangi çıktının değişmesini beklediğinizi yazın, sonra normal ve hatalı bir girdiye karşı çalıştırın.
Satırın görevi: Veritabanı sorgusunun komut/koşul parçası
Kavram: SQL sorgusu ve veri erişimi
WHERE koşulu satırını yalnızca sözdizimiyle değil, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi içindeki göreviyle okuyun.
Blok kapsamı: WHERE koşulu satırının bulunduğu backend akışındaki kapsamı ve sonraki adıma taşıdığı sonucu belirler.
Neden şimdi: Bu parça, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi akışında sonraki adımın ihtiyaç duyduğu girdiyi hazırlamak için şimdi kuruluyor.
Kod etiketlerini tek tek incele
WHERE SQL komutu/koşulu
Ne yapar? Veritabanı motoruna okunacak veya değiştirilecek veri akışını bildirir.
Neden burada? Dersin sorgu amacını bu anahtar kelime üzerinden kurar.
Silinirse: Sorgunun sonucu, kapsamı veya veri değişikliği bozulur.
WHERE koşulu, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi içinde bu örneğin ilgili görevini üstlenir.
Veritabanı sorgu motoru bu SQL parçasını ayrıştırır, koşulları uygular ve uygun kayıtları sonuç kümesine taşır. WHERE koşulu sonraki backend işleminin girdisini hazırlar.
Akış Şeması (Flowchart)
AST (Abstract Syntax Tree)
{
    "type": "SelectStatement",
    "where": {
        "type": "Comparison",
        "left": {
            "type": "ColumnRef",
            "name": "yas"
        },
        "operator": ">",
        "right": {
            "type": "Literal",
            "value": 18
        }
    }
}
Değişiklikler (Diff)
+ Eklendi:
+ WHERE yas > 18
Akıllı İpuçları (Adaptive Hints)
Tetikleyici: null_comparison
NULL karşılaştırması: WHERE email = NULL => HIÇBİR ZAMAN TRUE DÖNMEZ! Doğru: WHERE email IS NULL. NULL = NULL bile FALSE'dır (UNKNOWN).
Tetikleyici: index_missing
Sık filtrelenen sütunlarda INDEX oluşturun (CREATE INDEX idx_yas ON kullanicilar(yas)). WHERE koşulları sargable (Search ARGument ABLE) olmalı: WHERE yas > 18 iyi, WHERE YEAR(dogum_tarihi) > 2000 kötü (fonksiyon index'i bozar).
Tetikleyici: operator_confusion
WHERE operatörleri: > (büyüktür), >= (büyüktür/eşittir), < (küçüktür), <= (küçüktür/eşittir), = (eşittir), != veya <> (eşit değil). AND/OR ile birleştirme: WHERE yas > 18 AND aktif = true.
Girdiyi doğrulamadan bu satırın ürettiği sonucu doğru kabul etmek.
Son olarak filtre ekliyoruz: sadece yaşı 18'den büyük olanları getir. WHERE koşulu veritabanı sorgularının kalbidir - veriyi daraltır, istediğiniz kısmı getirir. > operatörü 'büyüktür' demek, >= 'büyüktür veya eşittir'. Index kullanımı performans için kritiktir.
Konsol 0 log

Seslendirme Ayarları

— Kredi