SQL & Veritabanı

Structured Query Language - Veri yönetiminin evrensel dili

SELECT * FROM knowledge;

SQL Nedir?

SQL (Structured Query Language), ilişkisel veritabanı yönetim sistemlerinde (RDBMS) veri tanımlama, sorgulama, güncelleme ve yönetme için kullanılan standart programlama dilidir.

SQL'in Temel Özellikleri:
  • • Bildirimsel (Declarative) dil - ne istediğinizi söylersiniz
  • • ANSI/ISO standardı - evrensel kullanım
  • • İlişkisel cebir temelli
  • • Kümeler üzerinde işlem yapar
  • • Platformdan bağımsız
  • • Güçlü veri manipülasyon yetenekleri
Tarihçe
SQL, 1970'lerde IBM'de Edgar F. Codd'un ilişkisel model çalışmalarına dayanarak geliştirildi. İlk olarak SEQUEL (Structured English Query Language) adıyla tanıtıldı, daha sonra SQL'e dönüştü.

1986: ANSI standardı
1987: ISO standardı
Günümüz: SQL:2023 en son standart

Popüler SQL Veritabanları:

MySQL: En popüler açık kaynak, web uygulamaları
PostgreSQL: Gelişmiş özellikler, enterprise
SQLite: Dosya tabanlı, mobil uygulamalar
Microsoft SQL Server: Windows ekosistemi
Oracle Database: Enterprise, büyük ölçek
MariaDB: MySQL fork'u, gelişmiş performans
SQL vs NoSQL: SQL ilişkisel, yapılandırılmış veri için mükemmel. NoSQL (MongoDB, Cassandra) daha esnek ama tutarlılık garantisi zayıftır. Çoğu uygulama SQL ile başlamalıdır!

Temel Kavramlar

İlişkisel Model:

İlişkisel veritabanı, verileri tablolar (relations) içinde saklar. Her tablo satırlardan (rows/tuples) ve sütunlardan (columns/attributes) oluşur.

Temel Kavramlar:
• Tablo (Table): İlgili verilerin koleksiyonu
• Satır (Row/Record): Tek bir veri kaydı
• Sütun (Column/Field): Veri niteliği
• Birincil Anahtar (Primary Key): Benzersiz tanımlayıcı
• Yabancı Anahtar (Foreign Key): Tablolar arası ilişki
• Şema (Schema): Veritabanı yapısı

Örnek Tablo Yapısı:

Ogrenciler Tablosu:
ogrenci_id (PK) ad soyad dogum_tarihi bolum_id (FK)
1 Ahmet Yılmaz 2001-05-15 101
2 Ayşe Demir 2000-11-23 102
3 Mehmet Kaya 2002-03-08 101

Veri Tipleri:

Yaygın Veri Tipleri
Sayısal: INT, BIGINT, DECIMAL, FLOAT, DOUBLE
Metin: CHAR, VARCHAR, TEXT
Tarih/Zaman: DATE, TIME, DATETIME, TIMESTAMP
Boolean: BOOLEAN, TINYINT(1)
İkili: BLOB, BINARY
JSON: JSON (Modern veritabanlarında)
Veri Tipi Seçimi Önemli: Yanlış veri tipi performans sorunlarına yol açar. VARCHAR(255) ye