← Kursa Dön
📄 Text · 25 min

CREATE TABLE ... SELECT

Giriş — Sorgudan Tablo Oluştur

CREATE TABLE ... SELECT bir sorgunun sonucundan yeni bir tablo oluşturur — hem yapıyı hem veriyi tek komutla yaratır. Hızlı yedekleme, geçici analiz tabloları ve veri dönüşümü için kullanışlıdır.


Temel Kullanım

-- products tablosunun kopyasını oluştur
CREATE TABLE products_backup AS
SELECT * FROM products;

-- Sadece belirli sütunları ve filtrelenmiş verileri kopyala
CREATE TABLE expensive_products AS
SELECT product_id, product_name, price, category_id
FROM products
WHERE price > 10000;

-- Hesaplanmış verilerle yeni tablo
CREATE TABLE customer_summary AS
SELECT 
    c.customer_id,
    CONCAT(c.first_name, ' ', c.last_name) AS full_name,
    c.city,
    COUNT(o.order_id) AS total_orders,
    COALESCE(SUM(o.total_amount), 0) AS total_spent,
    MAX(o.order_date) AS last_order_date
FROM customers c
LEFT JOIN orders o ON c.customer_id = o.customer_id
GROUP BY c.customer_id, c.first_name, c.last_name, c.city;

CREATE TABLE LIKE — Yapı Kopyalama (Verisiz)

-- Sadece yapıyı kopyala (veri olmadan)
CREATE TABLE orders_archive LIKE orders;
-- Tablo yapısı, indexler, constraintler kopyalanır ama veri eklenmez

-- Sonra veri ekle
INSERT INTO orders_archive SELECT * FROM orders WHERE order_date < '2023-01-01';

Dikkat Edilmesi Gerekenler

  • CREATE TABLE ... SELECT indexleri ve constraint'leri kopyalamaz! Sadece sütun yapısı ve veri gelir.

  • PRIMARY KEY, FOREIGN KEY, AUTO_INCREMENT kopyalanmaz — sonradan eklemen gerekir

  • CREATE TABLE ... LIKE yapıyı (indexler dahil) kopyalar ama veri getirmez

-- CREATE TABLE ... SELECT sonrası index ekle
CREATE TABLE products_backup AS SELECT * FROM products;
ALTER TABLE products_backup ADD PRIMARY KEY (product_id);
ALTER TABLE products_backup MODIFY product_id INT UNSIGNED AUTO_INCREMENT;

Özet

  • CREATE TABLE ... AS SELECT yapı + veri tek komutla oluşturur

  • CREATE TABLE ... LIKE sadece yapıyı kopyalar (indexler dahil, veri hariç)

  • CREATE TABLE SELECT indexleri, constraintleri, AUTO_INCREMENT'ı kopyalamaz

  • Hızlı yedekleme, analiz tabloları, veri dönüşümü için kullanışlı