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 ... LIKEyapı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 SELECTyapı + veri tek komutla oluştururCREATE TABLE ... LIKEsadece 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ı
AI Asistan
Sorularını yanıtlamaya hazır