• 0

SQL’de Verileri SELECT ile Kopyalayarak Ekleme

3 hafta önce , Okuma süresi 2 dakika.

SQL’de Verileri SELECT ile Kopyalayarak Ekleme
Bu makalede SQL derslerine devam ediyoruz ve oluşturduğumuz bir veritabanına veri ekleme işlemlerini göreceğiz.

Merhaba arkadaşlar, SQL makale dizimizin yeni bir bölümü ile karşınızdayım. 
Bundan önceki sırası ile; 

1-) SQL'de Tablolar Nedir? ve Nasıl Oluşturulur?
2-) SQL'de Tabloları Değiştirme
3-) SQL'de Tabloları Silme İşlemi
4-) SQL'de Manuel Veri Eklemek - INSERT INTO

Şimdiki konumuzda ise verileri SQL'de kopyalayarak eklemeyi göreceğiz. Bunun için SELECT ifadesini kullanacağız. SELECT ifadesi bir veri satırını tutmamıza yarayan ifadedir. 

Verileri satır satır belirtmek yerine, bir tablodan birden çok veri satırını kopyalayabilir ve bunları bir SELECT sorgu ile diğerine ekleyebilirsiniz .

Bu tür bir işlem için sözdizimi şuna benzer:

INSERT INTO table_A (col_A1, col_A2, col_A3)
SELECT col_B1, col_B2, col_B3
FROM table_B;

VALUES Anahtar kelimeyle birlikte sütun listesini takip etmek yerine , bu örnek sözdizimi onu bir SELECT ifadeyle takip eder. SELECT Bu örnek sözdiziminde deyimi sadece içerir FROM maddesini, ancak herhangi geçerli bir sorgu çalışabilir.

Örnek olarak, CREATE TABLE adlı yeni bir tablo oluşturmak için aşağıdaki işlemi çalıştırın showroomEmployees. Bu tablonun sütunlarının factoryEmployees, önceki bölümde kullanılan tablodaki üç sütunla aynı adlara ve veri türlerine sahip olduğuna dikkat edin:

CREATE TABLE showroomEmployees (
name varchar(30),
hourlyWage decimal(4,2),
startDate date
);

Şimdi, bu yeni tabloyu , yani factoryEmployees bir SELECT ile sorgu ekleyerek önceden oluşturulmuş tablodan bazı verilerle yükleyebilirsiniz.
Eğer SELECTsorgu hedef tablonun sütunları aynı sırada aynı sayıda sütun döndürüyor ve aynı zamanda uyumlu eşleşen veri türlerine sahip ise, bir sütun listesi atlayabilirsiniz:

INSERT INTO showroomEmployees
SELECT
factoryEmployees.name,
factoryEmployees.hourlyWage,
factoryEmployees.startDate
FROM factoryEmployees
WHERE name = 'Agnes';

Not : Bu işlemde  SELECT sorgusunda listelenen sütunların her birinin önünde tablo adı factoryEmployees ve noktadan sonra alan adı  bulunur. Bunun gibi bir sütuna atıfta bulunurken bir tablo adı belirttiğinizde, buna tam nitelikli sütun referansı denir . Bu özel durumda bu gerekli değildir. Aslında, aşağıdaki örnek INSERT INTO ifade bir öncekiyle aynı sonucu verecektir:

INSERT INTO showroomEmployees
SELECT
name,
hourlyWage,
startDate
FROM factoryEmployees
WHERE name = 'Agnes';

 

Bu SELECT işlemdeki ifade de yer alan WHERE, sorgunun yalnızca sütunu değeri içeren factoryEmployees tablodan satırlar döndürmesine neden olan bir alan adını yani name alanınıda Agnes olanları tutmamıza yaradı. Kaynak tabloda böyle tek bir satır olduğu için, yalnızca o satır showroomEmployees tabloya kopyalanır.

Yaptığımız işlemi onaylamak yani sağlamasını yapmak adına, showroomEmployees tablodaki her kaydı döndürmek için aşağıdaki sorguyu çalıştırın :

SELECT * FROM showroomEmployees WHERE name='Agnes';

Şöyle bir çıktı alacaksınız: 

+-------+------------+------------+
| name  | hourlyWage | startDate  |
+-------+------------+------------+
| Agnes |      26.50 | 2017-05-01 |
+-------+------------+------------+
1 row in set (0.00 sec)

Kaynak tablodan birden fazla satır döndürecek herhangi bir sorguya birden çok veri satırı ekleyebilirsiniz. Örneğin, aşağıdaki ifadede yer alan sorgu, factoryEmployeesveritabanında namesütundaki değerin  J ile başlamadığı her kaydı döndürür.

INSERT INTO showroomEmployees
SELECT
factoryEmployees.name,
factoryEmployees.hourlyWage,
factoryEmployees.startDate
FROM factoryEmployees
WHERE name NOT LIKE 'J%';

İşte bu kadar bir sonraki makalede görüşmek üzere sağlıkla kalın...

#sql