← Kursa Dön
📄 Text · 25 min

INSERT INTO ... SELECT

Giriş — Sorgu Sonucundan Toplu Veri Ekleme

INSERT INTO ... SELECT bir sorgunun sonucunu doğrudan başka bir tabloya ekler. Veri taşıma, arşivleme, raporlama tabloları doldurma ve ETL süreçlerinde sıkça kullanılır.


Temel Kullanım

-- Premium müşterileri ayrı tabloya kopyala
CREATE TABLE premium_customers LIKE customers;

INSERT INTO premium_customers
SELECT * FROM customers
WHERE customer_id IN (
    SELECT customer_id FROM orders 
    GROUP BY customer_id 
    HAVING SUM(total_amount) > 50000
);

-- Belirli sütunları seçerek ekle
INSERT INTO report_table (customer_name, total_orders, total_revenue)
SELECT 
    CONCAT(c.first_name, ' ', c.last_name),
    COUNT(o.order_id),
    SUM(o.total_amount)
FROM customers c
INNER JOIN orders o ON c.customer_id = o.customer_id
GROUP BY c.customer_id, c.first_name, c.last_name;

Arşivleme Senaryosu

-- Eski siparişleri arşiv tablosuna taşı
INSERT INTO orders_archive
SELECT * FROM orders WHERE order_date < '2023-01-01';

-- Arşivlenen kayıtları ana tablodan sil
DELETE FROM order_items WHERE order_id IN (
    SELECT order_id FROM orders WHERE order_date < '2023-01-01'
);
DELETE FROM orders WHERE order_date < '2023-01-01';

Hesaplanmış Değerlerle Ekleme

-- Günlük satış özeti tablosu
INSERT INTO daily_sales_summary (report_date, total_orders, total_revenue, avg_order)
SELECT 
    CURDATE() - INTERVAL 1 DAY,
    COUNT(*),
    SUM(total_amount),
    AVG(total_amount)
FROM orders
WHERE DATE(order_date) = CURDATE() - INTERVAL 1 DAY;

Dikkat Edilmesi Gerekenler

  • SELECT'teki sütun sayısı ve sıra, INSERT'teki sütun listesiyle eşleşmeli

  • Veri tipleri uyumlu olmalı

  • UNIQUE/PRIMARY KEY çakışması olabilir — INSERT IGNORE veya ON DUPLICATE KEY UPDATE kullan

  • Büyük veri setlerinde transaction içinde çalıştır


Özet

  • INSERT INTO tablo SELECT ... sorgu sonucunu doğrudan tabloya ekler

  • Veri taşıma, arşivleme, raporlama tabloları doldurma için idealdir

  • Sütun sayısı ve tipleri uyumlu olmalı

  • Büyük işlemlerde transaction kullan