SQL Notları: Komut Satırı İşlemleri ve Geçici Tablolar
MySQL komut satırı araçları ve geçici tablolar, veritabanı yönetimi ve so...
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.