SQL Notları: `LOAD DATA INFILE` ve `UNION`

MySQL, büyük veri kümelerini veritabanına aktarmak ve birden fazla sorgunun sonuçlarını birleştirmek için güçlü araçlar sunar. Bu yazıda, **LOAD DATA INFILE** ve **UNION** operatörünün temel kullanımını ve bu araçlarla gerçekleştirilebilecek işlemleri ele alacağız.

### `LOAD DATA INFILE` ile Veri İçe Aktarma

`LOAD DATA INFILE`, büyük miktarda veriyi hızlı bir şekilde MySQL tablolarına aktarmak için kullanılan bir komuttur. Bu komut, özellikle CSV veya metin dosyalarındaki verileri veritabanına aktarmak için oldukça kullanışlıdır.

#### Temel Kullanım
Örnek bir CSV dosyası (`employee.csv`) aşağıdaki gibi olsun:

“`
1;max;male;manager;12-7-1985
2;jack;male;executive;21-8-1990
1000000;marta;female;accountant;15-6-1992
“`

Bu dosyayı bir MySQL tablosuna aktarmak için aşağıdaki komutu kullanabilirsiniz:

“`sql
LOAD DATA INFILE ‘/path/to/employee.csv’
INTO TABLE employee
FIELDS TERMINATED BY ‘;’
LINES TERMINATED BY ‘\r\n’
(id, name, sex, designation, dob);
“`

Bu komut, `employee.csv` dosyasındaki verileri `employee` tablosuna aktarır.

#### Tarih Formatını Dönüştürme
Eğer tarih formatı standart değilse (örneğin `17-Jan-1985`), `STR_TO_DATE` fonksiyonunu kullanarak tarih formatını dönüştürebilirsiniz:

“`sql
LOAD DATA INFILE ‘/path/to/employee.csv’
INTO TABLE employee
FIELDS TERMINATED BY ‘;’
LINES TERMINATED BY ‘\r\n’
(id, name, sex, designation, @dob)
SET dob = STR_TO_DATE(@dob, ‘%d-%b-%Y’);
“`

#### Yinelenen Kayıtları Yönetme
Yinelenen kayıtları yönetmek için `REPLACE` veya `IGNORE` seçeneklerini kullanabilirsiniz:

– `REPLACE`: Yinelenen kayıtları yeni verilerle değiştirir.
– `IGNORE`: Yinelenen kayıtları görmezden gelir.

“`sql
LOAD DATA INFILE ‘/path/to/employee.csv’
REPLACE INTO TABLE employee
FIELDS TERMINATED BY ‘;’
LINES TERMINATED BY ‘\r\n’
(id, name, sex, designation, dob);
“`

### `UNION` ile Sorgu Sonuçlarını Birleştirme

`UNION` operatörü, iki veya daha fazla `SELECT` sorgusunun sonuçlarını birleştirmek için kullanılır. Bu operatör, varsayılan olarak yinelenen kayıtları çıkarır.

#### Temel Kullanım
Örnek olarak, `Customers` ve `Suppliers` tablolarındaki farklı şehirleri birleştirmek için aşağıdaki sorguyu kullanabilirsiniz:

“`sql
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
“`

Bu sorgu, her iki tablodaki benzersiz şehirleri birleştirir ve sıralar.

#### `UNION ALL` ile Tüm Kayıtları Birleştirme
Eğer yinelenen kayıtları da dahil etmek istiyorsanız, `UNION ALL` kullanabilirsiniz:

“`sql
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
“`

Bu sorgu, her iki tablodaki tüm şehirleri (yinelenenler dahil) birleştirir ve sıralar.

#### `WHERE` ile Koşullu Birleştirme
Belirli bir koşula göre verileri birleştirmek için `WHERE` ifadesini kullanabilirsiniz. Örneğin, sadece Almanya’daki şehirleri birleştirmek için:

“`sql
SELECT City, Country FROM Customers
WHERE Country=’Germany’
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country=’Germany’
ORDER BY City;
“`

Bu sorgu, `Customers` ve `Suppliers` tablolarındaki Almanya’daki şehirleri birleştirir.

### Sonuç

`LOAD DATA INFILE` ve `UNION` operatörü, MySQL’de veri yönetimi ve sorgulama işlemlerini kolaylaştıran güçlü araçlardır. `LOAD DATA INFILE`, büyük veri kümelerini veritabanına hızlı bir şekilde aktarmak için idealdir. `UNION` operatörü ise birden fazla sorgunun sonuçlarını birleştirerek daha kapsamlı raporlar oluşturmanıza olanak tanır. Bu araçları doğru bir şekilde kullanarak, veritabanı yönetimini daha verimli hale getirebilirsiniz.