Tablo oluşturmak
Kod kutusundaki SQL türü sekmesini değiştirerek her SQL türünün veri tiplerini gör (ör. metin için SQL Server'da NVARCHAR, Oracle'da VARCHAR2).
CREATE TABLE suppliers ( supplier_id INTEGER PRIMARY KEY, name TEXT NOT NULL, tax_no TEXT UNIQUE, city TEXT DEFAULT 'İstanbul', rating INTEGER CHECK (rating BETWEEN 1 AND 5) ); INSERT INTO suppliers (supplier_id, name, tax_no, rating) VALUES (1, 'Ege Tekstil', '1234567890', 4); SELECT * FROM suppliers;
Kısıtlar (constraints)
| Kısıt | Görevi |
|---|---|
PRIMARY KEY | Satırı benzersiz tanımlar; NULL olamaz. |
NOT NULL | Boş bırakılamaz. |
UNIQUE | Tekrar edemez. |
CHECK (koşul) | Değer koşulu sağlamalı. |
DEFAULT değer | Değer verilmezse kullanılır. |
REFERENCES t(sutun) | Yabancı anahtar: değer diğer tabloda olmalı. |
Kısıtların işe yaradığını gör: aşağıdaki sorgu CHECK kuralını ihlal ettiği için hata verir. Hata mesajı seçili SQL türünün kendi mesajına benzer şekilde gösterilir.
CREATE TABLE ratings (id INTEGER PRIMARY KEY, stars INTEGER CHECK (stars BETWEEN 1 AND 5)); INSERT INTO ratings (id, stars) VALUES (1, 7);
Yabancı anahtar ve eylemler
CREATE TABLE supplier_products ( supplier_id INTEGER REFERENCES suppliers(supplier_id) ON DELETE CASCADE, product_id INTEGER REFERENCES products(product_id), PRIMARY KEY (supplier_id, product_id) -- bileşik birincil anahtar );
ON DELETE CASCADE: Tedarikçi silinince ilgili satırlar da silinir. Alternatifler: SET NULL, NO ACTION.
Otomatik artan anahtarSQL Server:
INT IDENTITY(1,1) PRIMARY KEY · PostgreSQL: INTEGER GENERATED ALWAYS AS IDENTITY (eski: SERIAL) · MySQL: INT AUTO_INCREMENT PRIMARY KEY · Oracle: NUMBER GENERATED AS IDENTITY · SQLite: INTEGER PRIMARY KEY. Para için DECIMAL(12,2) kullanılır, FLOAT değil.Sorgu sonucundan tablo üretmek de mümkündür. SQL Server'da bu iş SELECT ... INTO ile yapılır:
CREATE TABLE vip_customers AS SELECT * FROM customers WHERE segment = 'Premium'; SELECT COUNT(*) FROM vip_customers;