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.