Yandex Metrica
SQL Server'da SELECT INTO ve INSERT INTO SELECT Kullanımı - Yasin Sunmaz

Yasin Sunmaz

Kodladıkça değişen bir dünya...

SQL Server'da SELECT INTO ve INSERT INTO SELECT Kullanımı

31.05.2025 yasinsunmaz 392 0

Bu yazımda, SQL Server'da oldukça sık kullanılan ve günlük veri işlemlerinde hayat kurtaran iki komutu inceleyeceğiz: SELECT INTO ve INSERT INTO SELECT.

Bu komutlar özellikle tablo kopyalama, yedek alma, veri çoğaltma, test verisi oluşturma gibi durumlarda oldukça işe yarar. Her iki komut da veri kopyalama işlemlerini kolaylaştırır fakat kullanım amaçları biraz farklıdır.

SELECT INTO Nedir?

SELECT INTO, var olan bir tablodan veri alarak, bu verilerle yeni bir tablo oluşturmak için kullanılır. Yani hem tabloyu oluşturur hem de verileri kopyalar. Hedef tablo önceden var olmamalıdır.

Basit SELECT INTO Kullanımı

Aşağıdaki örnekte, Persons tablosundaki tüm verileri PersonsNewTable adında yeni bir tabloya kopyalıyoruz:

SELECT
  * INTO PersonsNewTable
FROM Persons;

Bu komut ile, SQL Server PersonsNewTable adında yeni bir tablo oluşturur ve Persons tablosundaki verileri buraya kopyalar.

Belirli Kolonları Kopyalayarak Yeni Tablo Oluşturma

Sadece bazı sütunları seçerek tablo oluşturma:

SELECT
  FirstName, LastName, City
INTO PersonsSummary
FROM Persons;

Bu örnek yalnızca FirstName, LastName ve City kolonlarını içeren yeni bir tablo oluşturur.

WHERE ile Filtreleme Yaparak Kopyalama

Verilerin bir kısmını alarak tablo oluşturma:

SELECT
  *
INTO Persons_Istanbul
FROM Persons
WHERE City = 'Istanbul';

Böylece yalnızca İstanbul'da yaşayan kişilerin verileri yeni tabloya aktarılır.

INSERT INTO SELECT Nedir?

INSERT INTO SELECT, bir tablodan veri çekerek başka bir tabloya eklemek için kullanılır. Hedef tablo önceden var olmalıdır. Bu komut, mevcut bir tabloya başka bir tablodan ya da kendisinden veri kopyalamak için kullanılır.

Aynı Tablo İçerisinde Veri Kopyalama

Aşağıdaki örnekte, Products tablosundaki CategoryID = 1 olan ürünleri alıp, bazı alanları değiştirerek aynı tabloya yeniden ekliyoruz:

INSERT INTO dbo.Products (
  ProductName,
  SupplierID,
  CategoryID,
  QuantityPerUnit,
  UnitPrice,
  UnitsInStock,
  UnitsOnOrder,
  ReorderLevel,
  Discontinued
)
SELECT
  ProductName,
  SupplierID,
  1,                -- Yeni kategori
  '1 Yeni Ürün',    -- Yeni açıklama
  13,               -- Yeni fiyat
  UnitsInStock,
  UnitsOnOrder,
  ReorderLevel,
  Discontinued
FROM dbo.Products
WHERE CategoryID = 1;

Bu işlem sonucunda CategoryID değeri 1 olan ürünlerin bir kopyası oluşturulmuş olur. Ancak bazı alanlar (örneğin UnitPrice, QuantityPerUnit) yeni değerlerle değiştirilmiştir.

Başka Tabloya Veri Ekleme

İki tablo arasında veri aktarımı yapmak da mümkündür:

INSERT INTO ArchiveProducts
SELECT *
FROM Products
WHERE Discontinued = 1;

Bu örnek, satıştan kaldırılmış ürünleri ArchiveProducts adlı tabloya taşımak için kullanılabilir.

Sonuç

SQL Server'da SELECT INTO ve INSERT INTO SELECT, veriyle çalışırken bir çok anlamda işleri kolaylaştırmaktadır.

Umarım faydalı olmuştur. İyi çalışmalar!

  • Yorum yapabilmek için giriş yapmalısınız. Giriş yapmak için tıklayınız.

Diğer Yazılar

SQL Server'da LAG() ve LEAD() Kullanımı

23.05.2025 yasinsunmaz 392 0

Bu yazımda SQL Server'da oldukça faydalı olan LAG() ve LEAD() fonksiyonlarını inceleyeceğiz. Bu fonksiyonlar, bir satırdaki veriye bakarken, o satırın öncesindeki v...

SQL Fonksiyonları: Veritabanlarında Güçlü ve Esnek İşlemler

09.06.2023 yasinsunmaz 1175 0

SQL (Structured Query Language), veritabanı yönetim sistemlerinde verileri yönetmek, sorgulamak ve işlemek için yaygın olarak kullanılan bir dildir. SQL fonksiyonl...

SQL'e Dair Her Şey OneSQL'de, Ne Ararsanız Bulabileceksiniz

03.06.2023 yasinsunmaz 595 0

Veri tabanı yöneticilerinin yanında zaman zaman yazılımcıların da SQL'i aktif olarak kullanması gerekebiliyor. SQL'i belli başlı şekillder kullanıp işlemlerimizi ...

SQL Server Offset Fetch Kullanımı

06.03.2023 yasinsunmaz 1701 0

Merhabalar uzun zamandır yazı yazamadım. Ülke olarak zor zamanlar geçirmekteyiz. Herkese çok geçmiş olsun diyerek kısa bir yazı ile tekrar buradayım. SQL ...