Tek Satır Ekleme
INSERT INTO users (username, email, password_hash)
VALUES ('ahmet', 'ahmet@example.com', 'hash123');
Kullanım Alanları:
- Yeni kullanıcı kaydı
- Manuel veri girişi
- Form verilerini kaydetme
Çoklu Satır Ekleme
INSERT INTO products (name, price, stock, category) VALUES
('Laptop', 25000.00, 10, 'Electronics'),
('Mouse', 150.00, 50, 'Electronics'),
('Keyboard', 500.00, 30, 'Electronics'),
('Desk', 2500.00, 15, 'Furniture'),
('Chair', 1500.00, 20, 'Furniture');
RETURNING ile ID Alma
-- Eklenen kaydın ID'sini al
INSERT INTO users (username, email, password_hash)
VALUES ('mehmet', 'mehmet@example.com', 'hash456')
RETURNING id;
-- Birden fazla kolon döndür
INSERT INTO orders (user_id, total_amount)
VALUES (1, 599.99)
RETURNING id, order_number, created_at;
id | order_number | created_at
----+----------------+----------------------------
42 | ORD-2024-00042 | 2024-01-15 14:30:00.123456
SELECT'ten INSERT
-- Başka tablodan kopyala
INSERT INTO archived_orders (id, user_id, total_amount, created_at)
SELECT id, user_id, total_amount, created_at
FROM orders
WHERE created_at < '2023-01-01';
-- Hesaplanmış değerlerle
INSERT INTO monthly_stats (month, total_sales, order_count)
SELECT
DATE_TRUNC('month', created_at) AS month,
SUM(total_amount) AS total_sales,
COUNT(*) AS order_count
FROM orders
WHERE created_at >= '2024-01-01'
GROUP BY DATE_TRUNC('month', created_at);
ON CONFLICT - UPSERT (Insert or Update)
-- Varsa güncelle, yoksa ekle
INSERT INTO products (sku, name, price, stock)
VALUES ('SKU-001', 'Laptop Pro', 27000.00, 5)
ON CONFLICT (sku) DO UPDATE SET
name = EXCLUDED.name,
price = EXCLUDED.price,
stock = products.stock + EXCLUDED.stock,
updated_at = NOW();
-- Varsa hiçbir şey yapma
INSERT INTO users (email, username)
VALUES ('test@test.com', 'testuser')
ON CONFLICT (email) DO NOTHING;
-- Birden fazla unique constraint için
INSERT INTO user_settings (user_id, setting_key, setting_value)
VALUES (1, 'theme', 'dark')
ON CONFLICT (user_id, setting_key) DO UPDATE SET
setting_value = EXCLUDED.setting_value;
EXCLUDED Nedir?
INSERT edilmeye çalışılan (ama çakışan) kayda referans verir. EXCLUDED.price = eklenmek istenen yeni fiyat.
INSERT edilmeye çalışılan (ama çakışan) kayda referans verir. EXCLUDED.price = eklenmek istenen yeni fiyat.