Academy › 🗄️ SQL & Veritabanı › Veri ve Tablolar
Sütun seçmek ve sırayı değiştirmek
🗄️ Veri ve Tablolar bölümü · Code Quest SQL & Veritabanı parkuru
Gerçek hayatta SELECT * nadiren doğru cevaptır. 30 sütunlu bir tablodan 2 sütun lazımsa, 30'unu birden istemek hem yavaştır hem de sonucu okunmaz yapar. Profesyoneller istediğini isimle ister.
Sütunları virgülle ayırarak sıralarsın. Ve önemli bir ayrıntı: yazdığın sıra, sonuçtaki sıradır. Tablodaki fiziksel sıra seni bağlamaz.
SELECT ad, id FROM turler;
ad | id ─────────┼─── Aksiyon | 1 Bulmaca | 2 Yarış | 3 Strateji | 4 Macera | 5
id önce geliyordu ama sonuçta ad önce geldi. Sonuç kümesi, tablonun kopyası değil; senin tarif ettiğin yeni bir tablodur.Aynı sütunu birden çok kez de isteyebilirsin (nadiren işe yarar ama motorun mantığını gösterir), ya da sütunlarla birlikte sabit bir değer bile getirebilirsin.
SELECT ad, ad FROM turler;
ad | ad ─────────┼───────── Aksiyon | Aksiyon Bulmaca | Bulmaca Yarış | Yarış Strateji | Strateji Macera | Macera
Peki olmayan bir sütun istersen? Motor seni sessizce affetmez — hata verir. Ve bu iyi bir şeydir: hata mesajı sana tam olarak neyi bulamadığını söyler.
SELECT isim FROM turler;
HATA: no such column: isim
ad. Aynı şekilde no such table: oyun görürsen tablo adını yanlış yazmışsındır (doğrusu oyunlar).SQL öğrenirken hata mesajlarını okumayı alışkanlık edin. SQLite'ın mesajları kısa ve nettir; sana neredeyse her zaman hangi kelimeyi tanımadığını söyler.
Son bir alışkanlık: sorguyu okunur yaz. Aşağıdaki biçim, profesyonel kodda gördüğün biçimdir — her yan tümce (clause) yeni satırda başlar.
SELECT id, ad, fiyat FROM oyunlar;
Kendini test et
Bu sorgu neden hata verir?
turler tablosu yokturler tablosunda isim adında bir sütun yok (sütunun adı ad)Noktalı virgül eksik
Cevabı gör
Cevap: turler tablosunda isim adında bir sütun yok (sütunun adı ad)
"no such column: isim" mesajı tam olarak bunu söyler: sütunun gerçek adı ad.
Bu kodun çıktısı ne olur?
SELECT 9 / 2;
Cevabı gör
Çıktı:
4
İki tam sayının bölümü tam sayıdır: 4.5 değil 4. Ondalık istiyorsan 9.0 / 2 yazmalısın.