CREATE TABLE Urunler ( UrunID INT PRIMARY KEY IDENTITY(1,1), -- 1'den başla 1'er arttır UrunAdi NVARCHAR(150) NOT NULL, -- Türkçe karakter destekli isim StokKodu CHAR(10) UNIQUE, -- Sabit 10 karakterlik özel kod Fiyat DECIMAL(18, 2) NOT NULL, -- Virgülden sonra 2 hane (Para için ideal) StokAdedi INT DEFAULT 0, -- Varsayılan değer 0 SatistaMi BIT DEFAULT 1, -- 1 (Evet) veya 0 (Hayır) EklenmeTarihi DATETIME DEFAULT GETDATE() -- O anki tarihi otomatik atar ); -- 1. SINIFLAR TABLOSU CREATE TABLE Siniflar ( SinifID INT PRIMARY KEY IDENTITY(1,1), -- Otomatik artan kimlik SinifAdi NVARCHAR(20) NOT NULL -- Boş geçilemez ); -- Veri Ekleme (Insert) INSERT INTO Siniflar (SinifAdi) VALUES ('9-A'); INSERT INTO Siniflar (SinifAdi) VALUES ('9-B'); INSERT INTO Siniflar (SinifAdi) VALUES ('10-A'); INSERT INTO Siniflar (SinifAdi) VALUES ('11-C'); INSERT INTO Siniflar (SinifAdi) VALUES ('12-D'); FOREIGN KEY (SinifID) REFERENCES Siniflar(SinifID) CREATE TABLE Ogrenciler ( OgrenciID INT PRIMARY KEY IDENTITY(1,1), -- Otomatik artan kimlik Ad NVARCHAR(20) NOT NULL , Soyad NVARCHAR(20) NOT NULL , OgrenciNo NVARCHAR(20) NOT NULL , SinifID INT FOREIGN KEY (SinifID) REFERENCES Siniflar(SinifID) -- Boş geçilemez ); INSERT INTO Ogretmenler (Ad, Soyad, Brans) VALUES ('Erdal','Mutlu','Bilisim'); -- 1. Örnek: Tüm alanları manuel belirterek ekleme (Laptop) INSERT INTO Urunler (UrunAdi, StokKodu, Fiyat, StokAdedi, SatistaMi) VALUES (N'Gaming Laptop X500', 'BILG-001', 35000.00, 15, 1); -- 2. Örnek: Tarih belirtmeden ekleme (Otomatik tarih atar) INSERT INTO Urunler (UrunAdi, StokKodu, Fiyat, StokAdedi, SatistaMi) VALUES (N'Kablosuz Mouse', 'AKSE-001', 450.50, 100, 1); -- 3. Örnek: Türkçe karakter içeren ürün (N harfine dikkat) INSERT INTO Urunler (UrunAdi, StokKodu, Fiyat, StokAdedi, SatistaMi) VALUES (N'Çay Makinesi 2000', 'EVAL-001', 1200.00, 30, 1); -- 4. Örnek: Satışta olmayan (SatistaMi = 0) bir ürün INSERT INTO Urunler (UrunAdi, StokKodu, Fiyat, StokAdedi, SatistaMi) VALUES (N'Eski Model Yazıcı', 'OFIS-099', 2500.00, 0, 0); -- 5. Örnek: Stok adedi ve Durumu varsayılan (Default) bırakma -- StokAdedi (0) ve SatistaMi (1) otomatik atanır. INSERT INTO Urunler (UrunAdi, StokKodu, Fiyat) VALUES (N'Bluetooth Kulaklık', 'SES-005', 899.90); 1. SQL Server Veri Tipleri (Özet) Veritabanında her sütunun ne tür veri taşıyacağını baştan belirtmeliyiz. Sayısal Tipler: INT: Tam sayılar için standart tiptir (Örn: 1, 500, -200). SinifID gibi alanlarda kullanılır. TINYINT: 0 ile 255 arası küçük tam sayılar. Senin Notu alanın için mükemmeldir (Notlar 0-100 arası olduğu için INT kullanıp yer israf etmeye gerek yok). BIGINT: Çok çok büyük tam sayılar (Örn: TC Kimlik No matematiksel işlem yapılmayacaksa da sığar ama genelde metin tutulur). DECIMAL(p, s) / FLOAT: Virgüllü (ondalıklı) sayılar. Para birimleri veya hassas ölçümler için. BIT: Sadece 0 veya 1 alır. C# tarafındaki bool (True/False) karşılığıdır. Metin (String) Tipleri: CHAR(n): Sabit uzunluk. CHAR(10) dersen, "ALİ" yazsan bile hafızada 10 karakterlik yer kaplar (gerisini boşlukla doldurur). VARCHAR(n): Değişken uzunluk. VARCHAR(50) dersen ve "ALİ" yazarsan sadece 3 karakterlik yer kaplar. NVARCHAR(n): VARCHAR ile aynıdır ama Unicode (Farklı diller, emojiler ve Türkçe karakterler) destekler. Türkçe proje yapıyorsan her zaman NVARCHAR tercih etmelisin. Tarih ve Zaman Tipleri: DATE: Sadece tarih (YYYY-AA-GG). SinavTarihi için uygundur. DATETIME: Tarih + Saat (YYYY-AA-GG SS:DD:SN). GETDATE(): O anki zamanı veren fonksiyondur. 2. Tablo Özellikleri ve Kısıtlamalar (Constraints) Tabloları oluştururken verinin tutarlılığını sağlamak için bu kuralları koyarız. PRIMARY KEY (Birincil Anahtar): Tablodaki her satırın kimlik numarasıdır. Asla tekrar edemez ve boş (Null) olamaz. Her tabloda mutlaka 1 tane olmalıdır (Örn: OgrenciID). FOREIGN KEY (Yabancı Anahtar): İki tabloyu birbirine bağlayan "Kanca"dır. Ogrenciler tablosundaki SinifID, Siniflar tablosundaki SinifID'ye gider. Bu sayede olmayan bir sınıfın ID'sini öğrenciye yazamazsın. IDENTITY(1,1) (Otomatik Artan): "Sen karışma, ben 1'den başlarım ve her kayıtta 1'er 1'er artırırım" demektir. ID alanları için kullanılır. NULL / NOT NULL: NULL: Bu alan boş bırakılabilir (Örn: Öğrencinin telefonu olmayabilir). NOT NULL: Bu alan zorunludur, veri girmeden kayıt yapılamaz (Örn: Öğrenci Adı). UNIQUE (Benzersiz): Primary Key değildir ama tekrar etmesi yasaktır. (Örn: OgrenciNo. İki öğrencinin numarası aynı olamaz). CHECK: Veriye kural koyar. (Örn: Notu alanı 0'dan küçük, 100'den büyük olamaz). DEFAULT: Veri girilmezse varsayılan ne olsun? (Örn: Sınav tarihi girilmezse bugünün tarihini at).