Hazır Veri Tabanı (SQL Kodu)

Ders boyunca yapacağımız sorgulama (SELECT, JOIN, GROUP BY vb.) pratikleri için gereken örnek **Okul_DB** veri tabanının (Bölümler, Öğretmenler, Öğrenciler, Dersler, Kayıtlar ve Notlar tabloları) tam SQL kodunu aşağıda bulabilirsiniz.

Bu kodu SQL Server Management Studio (SSMS) üzerinde "New Query" diyerek açtığınız pencereye yapıştırıp **Execute** (Çalıştır) butonuna basmanız yeterlidir. Kod, önce `Okul_DB` adında yeni bir veritabanı oluşturacak, sonra bu veritabanını kullanıma alacak ve son olarak tüm tabloları oluşturup örnek verilerle dolduracaktır.


-- Veritabanını oluştur
GO

CREATE DATABASE Okul_DB;
GO

USE Okul_DB;
GO

-- Bölümler tablosu
CREATE TABLE Bolumler (
    BolumID INT IDENTITY(1,1) PRIMARY KEY,
    BolumAdi NVARCHAR(100) NOT NULL UNIQUE
);

-- Öğretmenler tablosu
CREATE TABLE Ogretmenler (
    OgretmenID INT IDENTITY(1,1) PRIMARY KEY,
    Ad NVARCHAR(50) NOT NULL,
    Soyad NVARCHAR(50) NOT NULL,
    BolumID INT NOT NULL,
    FOREIGN KEY (BolumID) REFERENCES Bolumler(BolumID)
);

-- Öğrenciler tablosu
CREATE TABLE Ogrenciler (
    OgrenciNo NVARCHAR(20) PRIMARY KEY,
    Ad NVARCHAR(50) NOT NULL,
    Soyad NVARCHAR(50) NOT NULL,
    DogumTarihi DATE NOT NULL,
    Cinsiyet CHAR(1) NOT NULL CHECK (Cinsiyet IN ('E', 'K')),
    Sinif CHAR(1) NOT NULL CHECK (Sinif IN ('1', '2')),
    AktifOgrencilik BIT NOT NULL DEFAULT 1,
    BolumID INT NOT NULL,
    FOREIGN KEY (BolumID) REFERENCES Bolumler(BolumID)
);

-- Dersler tablosu
CREATE TABLE Dersler (
    DersID INT IDENTITY(1,1) PRIMARY KEY,
    DersAdi NVARCHAR(100) NOT NULL,
    Kredi INT CHECK (Kredi > 0),
    BolumID INT NOT NULL,
    OgretmenID INT NULL,
    FOREIGN KEY (BolumID) REFERENCES Bolumler(BolumID),
    FOREIGN KEY (OgretmenID) REFERENCES Ogretmenler(OgretmenID)
);

-- Kayıtlar tablosu (öğrencinin ders kaydı)
CREATE TABLE Kayitlar (
    KayitID INT IDENTITY(1,1) PRIMARY KEY,
    OgrenciNo NVARCHAR(20) NOT NULL,
    DersID INT NOT NULL,
    KayitTarihi DATETIME DEFAULT GETDATE(),
    UNIQUE (OgrenciNo, DersID),
    FOREIGN KEY (OgrenciNo) REFERENCES Ogrenciler(OgrenciNo),
    FOREIGN KEY (DersID) REFERENCES Dersler(DersID)
);

-- Notlar tablosu
CREATE TABLE Notlar (
    NotID INT IDENTITY(1,1) PRIMARY KEY,
    OgrenciNo NVARCHAR(20) NOT NULL,
    DersID INT NOT NULL,
    SinavTuru VARCHAR(20) NOT NULL CHECK (SinavTuru IN ('Vize', 'Final', 'Odev', 'Quiz')),
    Puan FLOAT NOT NULL CHECK (Puan >= 0 AND Puan <= 100),
    FOREIGN KEY (OgrenciNo) REFERENCES Ogrenciler(OgrenciNo),
    FOREIGN KEY (DersID) REFERENCES Dersler(DersID)
);

GO

-- Örnek veriler

-- Bölümler
INSERT INTO Bolumler (BolumAdi) VALUES
('Arka Yüz Yazılım Geliştirme'),
('Ön Yüz Yazılım Geliştirme'),
('Sivil Havacılık Kabin Hizmetleri'),
('Makine Resim ve Konstrüksiyonu');

-- Öğretmenler
INSERT INTO Ogretmenler (Ad, Soyad, BolumID) VALUES
('Furkan', 'DURMUŞ', 1),
('Kemal', 'KARGA', 1),
('Sümeyye', 'YANILMAZ', 2),
('Ferhat', 'PERÇİN', 2),
('Serdar', 'ÜNVER', 3),
('Sümeyye', 'ÖZER', 3),
('Tuba', 'YILDIZ KAPLAN', 4),
('Ali Samet', 'AYVAZ', 4),
('Mehmet', 'YILMAZ', 1),
('Ayşe', 'KAYA', 2);

-- Öğrenciler
INSERT INTO Ogrenciler (OgrenciNo, Ad, Soyad, DogumTarihi, Cinsiyet, Sinif, AktifOgrencilik, BolumID) VALUES
('20231001', 'Ali', 'AKGÜN', '2003-05-20', 'E', '1', 1, 1),
('20231002', 'Ayşe', 'ATAKUL', '2003-08-15', 'K', '1', 1, 1),
('20231003', 'Can', 'BAYRAM', '2002-12-01', 'E', '2', 1, 2),
('20231004', 'Elif', 'ÖZTÜRK', '2002-03-22', 'K', '2', 0, 2),
('20231005', 'Murat', 'KAYA', '2001-07-10', 'E', '1', 1, 3),
('20231006', 'Zeynep', 'ÇETİN', '2001-11-30', 'K', '2', 1, 4),
('20231007', 'Emre', 'ŞAHIN', '2003-02-14', 'E', '1', 1, 1),
('20231008', 'Selin', 'YILMAZ', '2003-06-25', 'K', '1', 1, 1),
('20231009', 'Burak', 'DEMİR', '2002-09-18', 'E', '2', 1, 2),
('20231010', 'Merve', 'ARSLAN', '2002-11-05', 'K', '2', 1, 2),
('20231011', 'Ahmet', 'KARA', '2003-01-30', 'E', '1', 1, 1),
('20231012', 'Fatma', 'ŞEN', '2003-04-12', 'K', '1', 1, 2),
('20231013', 'Mehmet', 'YILDIZ', '2002-07-22', 'E', '2', 1, 1),
('20231014', 'Esra', 'AKIN', '2002-10-08', 'K', '2', 1, 2),
('20231015', 'Hakan', 'ÇOBAN', '2003-03-17', 'E', '1', 1, 3),
('20231016', 'Gizem', 'KURT', '2003-05-29', 'K', '1', 1, 3),
('20231017', 'Oğuz', 'POLAT', '2002-08-11', 'E', '2', 1, 4),
('20231018', 'Deniz', 'ACAR', '2002-12-19', 'K', '2', 1, 4),
('20231019', 'Cem', 'ÖZKAN', '2003-02-03', 'E', '1', 1, 1),
('20231020', 'Seda', 'GÜNEŞ', '2003-07-15', 'K', '1', 1, 2),
('20231021', 'Barış', 'YAVUZ', '2002-09-27', 'E', '2', 1, 1),
('20231022', 'Pınar', 'ERDOĞAN', '2002-11-14', 'K', '2', 0, 2),
('20231023', 'Tolga', 'ÇAKIR', '2003-01-08', 'E', '1', 1, 3),
('20231024', 'Ebru', 'ÖZER', '2003-04-21', 'K', '1', 1, 4),
('20231025', 'Serkan', 'ASLAN', '2002-06-30', 'E', '2', 1, 1);

-- Dersler
INSERT INTO Dersler (DersAdi, Kredi, BolumID, OgretmenID) VALUES
('Veritabanı Yönetim Sistemleri', 4, 1, 1),
('Web Programlama', 3, 2, 3),
('Algoritma ve Programlama', 4, 1, 2),
('Bilgisayar Ağları', 3, 1, 1),
('Kullanıcı Arayüzü Tasarımı', 2, 2, 4),
('İşletme Yönetimi', 3, 3, 5),
('Temel Programlama 1', 4, 1, 2),
('Bulut Bilişim', 3, 1, 9),
('Web Tasarım', 2, 2, 3),
('İngilizce', 2, 3, 6),
('Makine Elemanları', 3, 4, 7),
('Teknik Resim', 4, 4, 8),
('Havacılık Güvenliği', 3, 3, 5),
('Müşteri İlişkileri', 2, 3, 6),
('Nesne Yönelimli Programlama', 4, 1, 9),
('Mobil Uygulama Geliştirme', 3, 2, 10);

-- Kayıtlar
INSERT INTO Kayitlar (OgrenciNo, DersID) VALUES
('20231001', 1), ('20231001', 3), ('20231001', 7),
('20231002', 1), ('20231002', 3), ('20231002', 4),
('20231003', 2), ('20231003', 5), ('20231003', 9),
('20231004', 2), ('20231004', 5), ('20231004', 16),
('20231005', 6), ('20231005', 10), ('20231005', 13),
('20231006', 11), ('20231006', 12),
('20231007', 1), ('20231007', 7), ('20231007', 15),
('20231008', 1), ('20231008', 3), ('20231008', 8),
('20231009', 2), ('20231009', 9), ('20231009', 16),
('20231010', 2), ('20231010', 5), ('20231010', 9),
('20231011', 1), ('20231011', 4), ('20231011', 7),
('20231012', 2), ('20231012', 5), ('20231012', 16),
('20231013', 1), ('20231013', 8), ('20231013', 15),
('20231014', 2), ('20231014', 9), ('20231014', 16),
('20231015', 6), ('20231015', 10), ('20231015', 13),
('20231016', 6), ('20231016', 13), ('20231016', 14),
('20231017', 11), ('20231017', 12),
('20231018', 11), ('20231018', 12),
('20231019', 1), ('20231019', 3), ('20231019', 15),
('20231020', 2), ('20231020', 5), ('20231020', 9),
('20231021', 1), ('20231021', 4), ('20231021', 8),
('20231022', 2), ('20231022', 16),
('20231023', 6), ('20231023', 10), ('20231023', 13),
('20231024', 11), ('20231024', 12),
('20231025', 1), ('20231025', 7), ('20231025', 15);

-- Notlar
INSERT INTO Notlar (OgrenciNo, DersID, SinavTuru, Puan) VALUES
('20231001', 1, 'Vize', 85.5),
('20231001', 1, 'Final', 90.0),
('20231001', 3, 'Vize', 78.0),
('20231001', 3, 'Final', 82.5),
('20231001', 7, 'Vize', 88.0),
('20231001', 7, 'Odev', 95.0),
('20231002', 1, 'Vize', 92.0),
('20231002', 1, 'Final', 88.5),
('20231002', 3, 'Vize', 75.0),
('20231002', 3, 'Final', 80.0),
('20231003', 2, 'Vize', 70.0),
('20231003', 2, 'Final', 75.5),
('20231003', 5, 'Vize', 85.0),
('20231003', 5, 'Odev', 90.0),
('20231004', 2, 'Vize', 60.0),
('20231004', 2, 'Final', 65.0),
('20231005', 6, 'Vize', 88.0),
('20231005', 6, 'Final', 92.0),
('20231005', 10, 'Vize', 78.0),
('20231005', 10, 'Final', 82.0),
('20231006', 11, 'Vize', 95.0),
('20231006', 11, 'Final', 98.0),
('20231006', 12, 'Vize', 87.0),
('20231006', 12, 'Final', 90.0),
('20231007', 1, 'Vize', 76.0),
('20231007', 1, 'Final', 80.0),
('20231007', 7, 'Vize', 82.0),
('20231007', 7, 'Odev', 88.0),
('20231008', 1, 'Vize', 91.0),
('20231008', 1, 'Final', 94.0),
('20231008', 3, 'Vize', 85.0),
('20231008', 3, 'Final', 89.0),
('20231009', 2, 'Vize', 73.0),
('20231009', 2, 'Final', 78.0),
('20231009', 9, 'Vize', 80.0),
('20231009', 9, 'Odev', 85.0),
('20231010', 2, 'Vize', 88.0),
('20231010', 2, 'Final', 92.0),
('20231010', 5, 'Vize', 79.0),
('20231010', 5, 'Final', 83.0),
('20231011', 1, 'Vize', 84.0),
('20231011', 1, 'Final', 87.0),
('20231011', 4, 'Vize', 90.0),
('20231011', 4, 'Final', 93.0),
('20231012', 2, 'Vize', 77.0),
('20231012', 2, 'Final', 81.0),
('20231012', 5, 'Vize', 86.0),
('20231012', 5, 'Odev', 91.0),
('20231013', 1, 'Vize', 89.0),
('20231013', 1, 'Final', 92.0),
('20231013', 8, 'Vize', 83.0),
('20231013', 8, 'Final', 87.0),
('20231014', 2, 'Vize', 74.0),
('20231014', 2, 'Final', 79.0),
('20231014', 9, 'Vize', 81.0),
('20231014', 9, 'Odev', 86.0),
('20231015', 6, 'Vize', 92.0),
('20231015', 6, 'Final', 95.0),
('20231015', 10, 'Vize', 80.0),
('20231015', 10, 'Final', 84.0),
('20231016', 6, 'Vize', 87.0),
('20231016', 6, 'Final', 90.0),
('20231016', 13, 'Vize', 85.0),
('20231016', 13, 'Final', 88.0),
('20231017', 11, 'Vize', 96.0),
('20231017', 11, 'Final', 99.0),
('20231017', 12, 'Vize', 88.0),
('20231017', 12, 'Final', 91.0),
('20231018', 11, 'Vize', 82.0),
('20231018', 11, 'Final', 86.0),
('20231018', 12, 'Vize', 79.0),
('20231018', 12, 'Final', 83.0),
('20231019', 1, 'Vize', 93.0),
('20231019', 1, 'Final', 96.0),
('20231019', 3, 'Vize', 87.0),
('20231019', 3, 'Final', 90.0),
('20231020', 2, 'Vize', 75.0),
('20231020', 2, 'Final', 80.0),
('20231020', 5, 'Vize', 84.0),
('20231020', 5, 'Odev', 89.0),
('20231021', 1, 'Vize', 81.0),
('20231021', 1, 'Final', 85.0),
('20231021', 4, 'Vize', 88.0),
('20231021', 4, 'Final', 91.0),
('20231022', 2, 'Vize', 55.0),
('20231022', 2, 'Final', 60.0),
('20231023', 6, 'Vize', 90.0),
('20231023', 6, 'Final', 94.0),
('20231023', 10, 'Vize', 82.0),
('20231023', 10, 'Final', 86.0),
('20231024', 11, 'Vize', 91.0),
('20231024', 11, 'Final', 94.0),
('20231024', 12, 'Vize', 85.0),
('20231024', 12, 'Final', 89.0),
('20231025', 1, 'Vize', 86.0),
('20231025', 1, 'Final', 90.0),
('20231025', 7, 'Vize', 83.0),
('20231025', 7, 'Odev', 88.0);

GO

-- Veritabanı başarıyla oluşturuldu ve verilerle dolduruldu
PRINT 'Okul_DB veritabanı başarıyla oluşturuldu ve örnek verilerle dolduruldu.';