Bu ders için video bulunmamaktadır.

Bu derse başlamak veya ilerlemenizi kaydetmek için lütfen giriş yapın veya kayıt olun.

Ders İçeriği

Öğrenim Hedefleri

Bu dersin sonunda öğrenciler:
Veritabanı kavramlarını anlayacak
MySQL'de temel SQL komutlarını kullanabilecek
Tablo oluşturma, veri ekleme, güncelleme ve silme işlemlerini yapabilecek
Veritabanı ilişkilerini kavrayacak

1. Veritabanı Nedir?

Veritabanı, verilerin organize edilmiş bir şekilde saklandığı dijital bir depodur. İlişkisel veritabanı yönetim sistemleri (RDBMS) verileri tablolar halinde organize eder.

Temel Kavramlar:

Veritabanı (Database): Tabloların toplandığı ana kapsayıcı
Tablo (Table): Verilerin satır ve sütunlar halinde saklandığı yapı
Satır (Row/Record): Bir kayıt, tablodaki tek bir veri girişi
Sütun (Column/Field): Belirli bir veri türünü tutan alan
Birincil Anahtar (Primary Key): Her kaydı benzersiz şekilde tanımlayan alan
Yabancı Anahtar (Foreign Key): Başka bir tabloya referans veren alan

2. MySQL Temel Komutları

Veritabanı İşlemleri

Veritabanı Oluşturma

CREATE DATABASE okul;

Veritabanı Seçme

USE okul;

Veritabanlarını Listeleme

SHOW DATABASES;

Veritabanı Silme

DROP DATABASE okul;

Tablo İşlemleri

Tablo Oluşturma

CREATE TABLE ogrenciler ( id INT AUTO_INCREMENT PRIMARY KEY, ad VARCHAR(50) NOT NULL, soyad VARCHAR(50) NOT NULL, yas INT, email VARCHAR(100) UNIQUE, kayit_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

Tabloları Listeleme

SHOW TABLES;

Tablo Yapısını Görme

DESCRIBE ogrenciler; -- veya SHOW COLUMNS FROM ogrenciler;

Tablo Silme

DROP TABLE ogrenciler;

3. Veri Türleri

Sayısal Veri Türleri

INT: Tam sayılar (-2,147,483,648 ile 2,147,483,647)
BIGINT: Büyük tam sayılar
DECIMAL(M,D): Ondalıklı sayılar (M: toplam basamak, D: ondalık basamak)
FLOAT: Kayan noktalı sayılar
DOUBLE: Çift hassasiyetli kayan noktalı sayılar

Metin Veri Türleri

VARCHAR(n): Değişken uzunlukta metin (maksimum n karakter)
CHAR(n): Sabit uzunlukta metin (tam n karakter)
TEXT: Uzun metinler (65,535 karaktere kadar)
LONGTEXT: Çok uzun metinler (4GB'a kadar)

Tarih ve Zaman Veri Türleri

DATE: Tarih (YYYY-MM-DD)
TIME: Zaman (HH:MM:SS)
DATETIME: Tarih ve zaman (YYYY-MM-DD HH:MM:SS)
TIMESTAMP: Unix zaman damgası
YEAR: Yıl (YYYY)

4. Veri Ekleme (INSERT)

Tek Kayıt Ekleme

INSERT INTO ogrenciler (ad, soyad, yas, email) VALUES ('Ahmet', 'Yılmaz', 20, 'ahmet@email.com');

Çoklu Kayıt Ekleme

INSERT INTO ogrenciler (ad, soyad, yas, email) VALUES ('Mehmet', 'Demir', 22, 'mehmet@email.com'), ('Ayşe', 'Kaya', 19, 'ayse@email.com'), ('Fatma', 'Çelik', 21, 'fatma@email.com');

Tüm Sütunlara Veri Ekleme

INSERT INTO ogrenciler VALUES (NULL, 'Ali', 'Veli', 23, 'ali@email.com', NOW());

5. Veri Sorgulama (SELECT)

Tüm Verileri Getirme

SELECT * FROM ogrenciler;

Belirli Sütunları Getirme

SELECT ad, soyad, email FROM ogrenciler;

Koşullu Sorgulama (WHERE)

SELECT * FROM ogrenciler WHERE yas > 20; SELECT * FROM ogrenciler WHERE ad = 'Ahmet'; SELECT * FROM ogrenciler WHERE yas BETWEEN 18 AND 25; SELECT * FROM ogrenciler WHERE email LIKE '%@gmail.com';

Sıralama (ORDER BY)

SELECT * FROM ogrenciler ORDER BY ad ASC; SELECT * FROM ogrenciler ORDER BY yas DESC; SELECT * FROM ogrenciler ORDER BY ad, soyad;

Sınırlama (LIMIT)

SELECT * FROM ogrenciler LIMIT 5; SELECT * FROM ogrenciler LIMIT 5, 10; -- 5. kayıttan başlayarak 10 kayıt

Gruplama (GROUP BY)

SELECT yas, COUNT(*) as sayi FROM ogrenciler GROUP BY yas;

Filtreleme (HAVING)

SELECT yas, COUNT(*) as sayi FROM ogrenciler GROUP BY yas HAVING sayi > 1;

6. Veri Güncelleme (UPDATE)

Tek Kayıt Güncelleme

UPDATE ogrenciler SET email = 'yeni_email@email.com' WHERE id = 1;

Çoklu Alan Güncelleme

UPDATE ogrenciler SET ad = 'Ahmet Can', yas = 21 WHERE id = 1;

Koşullu Güncelleme

UPDATE ogrenciler SET yas = yas + 1 WHERE yas < 25;

7. Veri Silme (DELETE)

Belirli Kayıt Silme

DELETE FROM ogrenciler WHERE id = 1;

Koşullu Silme

DELETE FROM ogrenciler WHERE yas < 18;

Tüm Kayıtları Silme

DELETE FROM ogrenciler; -- veya daha hızlı: TRUNCATE TABLE ogrenciler;

8. Aggregate Fonksiyonlar

-- Toplam kayıt sayısı

SELECT COUNT(*) FROM ogrenciler;

-- Yaş ortalaması

SELECT AVG(yas) FROM ogrenciler;

-- En büyük yaş

SELECT MAX(yas) FROM ogrenciler;

-- En küçük yaş

SELECT MIN(yas) FROM ogrenciler;

-- Yaş toplamı

SELECT SUM(yas) FROM ogrenciler;

9. Tablo İlişkileri

Bire Çok İlişki Örneği

-- Bölümler tablosu

CREATE TABLE bolumler ( id INT AUTO_INCREMENT PRIMARY KEY, bolum_adi VARCHAR(100) NOT NULL );

-- Öğrenciler tablosuna bölüm referansı ekleme

ALTER TABLE ogrenciler ADD COLUMN bolum_id INT, ADD FOREIGN KEY (bolum_id) REFERENCES bolumler(id);

JOIN İşlemleri

-- INNER JOIN

SELECT o.ad, o.soyad, b.bolum_adi FROM ogrenciler o INNER JOIN bolumler b ON o.bolum_id = b.id;

-- LEFT JOIN

SELECT o.ad, o.soyad, b.bolum_adi FROM ogrenciler o LEFT JOIN bolumler b ON o.bolum_id = b.id;

10. İndeksler

İndeks Oluşturma

CREATE INDEX idx_email ON ogrenciler(email); CREATE INDEX idx_ad_soyad ON ogrenciler(ad, soyad);

İndeks Silme

DROP INDEX idx_email ON ogrenciler;

Pratik Alıştırmalar

1.Kütüphane Sistemi: Kitaplar, yazarlar ve ödünç alma tabloları oluşturun
2.E-ticaret Veritabanı: Ürünler, kategoriler, müşteriler ve siparişler tabloları tasarlayın
3.Blog Sistemi: Yazılar, kategoriler, yorumlar ve kullanıcılar tabloları oluşturun
4.Okul Yönetimi: Öğrenciler, dersler, notlar ve öğretmenler tabloları tasarlayın

Sonraki Ders

Bir sonraki derste PHP ile MySQL veritabanına bağlanma ve veri işlemleri konusunu işleyeceğiz.