- Veritabanı ve VTYS kavramlarını açıklamak
- Bir tablonun satır, sütun ve hücrelerini ayırt etmek
- Birincil ve yabancı anahtarın görevini kavramak
- İlk SQL sorgunu çalıştırmak
Bir okulda 1000 öğrenci, onlarca ders ve binlerce not var. Bunların hepsini bir defterde, hatta tek bir Excel dosyasında tutmak zamanla eziyete dönüşür: veriler tekrarlanır, hatalar oluşur, aranan bilgiyi bulmak saatler sürer. Bankalar, çevrim içi mağazalar, sosyal ağlar ve e-okul sistemleri bu sorunu veritabanı ile çözer. Onunla konuşmak için de özel bir dil vardır: SQL.
Veritabanı nedir?
Veritabanı, kolayca aranabilen, değiştirilebilen ve korunabilen düzenli bir veri topluluğudur. Veritabanı dosyalarıyla doğrudan biz uğraşmayız; bu işi bizim yerimize özel bir program yapar. Bu program verileri diskte saklar, sorgularımızı çalıştırır, yüzlerce kullanıcının aynı anda çalışmasına izin verir ve yetkisi olmayanları içeri almaz.
Veritabanlarını oluşturan, saklayan ve onlara gönderilen sorguları çalıştıran yazılım. Örnekler: SQLite, MySQL, PostgreSQL, Microsoft SQL Server.
Bu kursta ilişkisel veritabanlarını öğreneceğiz. Bunlarda tüm veriler tablolarda tutulur ve tablolar birbirine bağlanır. Bu fikri 1970'te IBM araştırmacısı Edgar F. Codd ortaya attı ve bugün hâlâ en yaygın yaklaşım budur.
Tablo: satırlar ve sütunlar
Bir tablo tek bir tür nesne hakkında bilgi tutar: öğrenciler, dersler, ürünler. Bu kurstaki tüm örnekler aynı alıştırma veritabanını kullanır. Şimdi courses (dersler) tablosuna bakalım. Aşağıdaki sorguyu çalıştır: SELECT * “tüm sütunları al”, FROM courses “courses tablosundan”, ORDER BY id ise “id'ye göre sırala” demektir.
SELECT *
FROM courses
ORDER BY id;▸ Beklenen çıktı
id | title | subject | teacher | credits 1 | Algebra | Math | Ramin Səfərov | 4 2 | Geometry | Math | Ramin Səfərov | 3 3 | Mechanics | Physics | Ülviyyə Axundova | 4 4 | Organic Chemistry | Chemistry | Samir Hacıyev | 3 5 | World History | History | Nərmin Vəliyeva | 2 6 | Python Basics | Informatics | Elnur Qasımov | 3 7 | English B1 | English | Sara Mitchell | 2
- Sütun (alan) tek bir özelliktir:
title(ad),teacher(öğretmen),credits(kredi). Her sütunun bir adı ve veri tipi vardır: metin, tam sayı, ondalıklı sayı, tarih. - Satır (kayıt), tek bir nesneye ait tüm bilgidir. Örneğin 3. satır Mechanics dersini anlatır.
- Hücre, bir satırla bir sütunun kesiştiği yerdeki tek değerdir; örneğin Mechanics dersinin kredisi: 4.
- Tablodaki satırların kendiliğinden bir sırası yoktur. Sonucun belirli bir sırayla gelmesini istiyorsak
ORDER BYyazarız.
Anahtarlar: tablolar nasıl bağlanır
Her satırı benzersiz biçimde tanımlayan sütun. Değerleri tekrar edemez ve boş olamaz. Alıştırma veritabanımızda bu, her tablodaki id sütunudur.
Başka bir tablonun birincil anahtarına başvuran sütun. Örneğin enrollments.student_id, students.id sütununa başvurur ve kaydın hangi öğrenciye ait olduğunu gösterir.
enrollments (derse kayıtlar) tablosunda öğrenci adları yoktur, yalnızca numaraları vardır. Aşağıdaki sorgu 1 numaralı öğrencinin, yani Aysel'in kayıtlı olduğu dersleri gösterir: course_id 1 Algebra, 6 ise Python Basics dersidir. Böylece öğrencinin adı ve şehri tek bir yerde, students tablosunda tutulur ve hiçbir yerde tekrarlanmaz.
SELECT *
FROM enrollments
WHERE student_id = 1
ORDER BY id;▸ Beklenen çıktı
id | student_id | course_id | score | enrolled_on 1 | 1 | 1 | 92 | 2025-09-15 2 | 1 | 6 | 88 | 2025-09-15
WHERE yalnızca koşula uyan satırları bırakır; onu ilerleyen derslerde ayrıntılı öğreneceksin.| Tablo | Ne tutar | Satır sayısı |
|---|---|---|
| students | öğrenciler: ad, soyad, yaş, sınıf, şehir, e-posta | 12 |
| courses | dersler: ad, branş, öğretmen, kredi | 7 |
| enrollments | hangi öğrencinin hangi derse kayıtlı olduğu ve puanı | 20 |
| products | ürünler: ad, kategori, fiyat, stok | 10 |
| customers | müşteriler: ad, şehir, ülke, kayıt tarihi | 7 |
| orders | siparişler: kim, hangi üründen, kaç adet, ne zaman | 12 |
SQL ve lehçeleri
SQL (Structured Query Language — yapılandırılmış sorgu dili), veritabanlarıyla konuşmak için kullanılan standart dildir. Bildirimsel bir dildir: sonucun nasıl bulunacağını değil, ne istediğini yazarsın; en iyi yolu VTYS kendisi seçer. SQL anahtar kelimeleri büyük-küçük harfe duyarlı değildir, ancak onları büyük harfle yazmak yaygın bir alışkanlıktır. Her komut genellikle noktalı virgülle (;) biter.
SQL bir standarttır, ancak her VTYS ona kendi eklerini yapmıştır. Bu türevlere lehçe (dialect) denir. Temel komutlar (SELECT, WHERE, JOIN vb.) hepsinde aynıdır; farklar küçük ayrıntılardadır. Bu kursta örnekler SQLite'ta çalışır, önemli farkları ise yeri geldikçe belirteceğiz.
| VTYS | Nerede kullanılır | Özelliği |
|---|---|---|
| SQLite | mobil uygulamalar, tarayıcılar, küçük programlar | sunucu gerektirmez: tüm veritabanı tek bir dosyadır |
| MySQL | web siteleri ve web uygulamaları | açık kaynaklı ve çok popüler |
| PostgreSQL | karmaşık uygulamalar, analitik | açık kaynaklı, SQL standardına çok yakın |
| SQL Server | Microsoft tabanlı kurumsal sistemler | Microsoft ürünüdür, lehçesinin adı T-SQL'dir |
customers (müşteriler) tablosunun tüm sütunlarını göster ve satırları id değerine göre sırala.
-- show every column of the customers table, sorted by id▸ Beklenen çıktı
id | name | city | country | joined_on 1 | Anar Mustafayev | Bakı | Azerbaijan | 2024-01-10 2 | Lalə Əhmədova | Gəncə | Azerbaijan | 2024-03-22 3 | Emre Yılmaz | İstanbul | Türkiye | 2024-05-05 4 | Olga Ivanova | Moscow | Russia | 2024-06-18 5 | John Carter | London | United Kingdom | 2024-08-30 6 | Zəhra Hüseynli | Bakı | Azerbaijan | 2025-02-14 7 | Mehmet Kaya | Ankara | Türkiye | 2025-04-01
enrollments tablosundan 3 numaralı derse (Mechanics) yapılan tüm kayıtları göster ve onları id değerine göre sırala.
SELECT *
FROM enrollments
-- keep only course 3 and sort by id▸ Beklenen çıktı
id | student_id | course_id | score | enrolled_on 4 | 2 | 3 | 81 | 2025-09-16 7 | 4 | 3 | 68 | 2025-09-18 12 | 6 | 3 | 77 | 2025-09-20 19 | 11 | 3 | 94 | 2025-09-23
Önemli noktalar
- Veritabanı düzenli bir veri topluluğudur ve onu VTYS yönetir.
- İlişkisel veritabanında veriler tablolarda tutulur: satır bir nesne, sütun bir özelliktir.
- Birincil anahtar her satırı benzersiz biçimde tanımlar; yabancı anahtar başka bir tablodaki satıra başvurur.
- SQL bildirimsel bir dildir: ne istediğini söylersin, nasıl bulunacağına VTYS karar verir.
- SQLite, MySQL, PostgreSQL ve SQL Server aynı temel SQL'i anlar; farklar ayrıntılardadır.
Kendini test et
10 soru. Her doğru cevap XP kazandırır.