MySQL, zaman işlemleri ve ilişkisel tablolar üzerinde çalışmak için güçlü araçlar sunar. Bu yazıda, **zaman işlemleri** ve **bire-çok ilişkileri** ile ilgili temel bilgileri ve kullanım örneklerini ele alacağız.
—
### Zaman İşlemleri
MySQL, milisaniye hassasiyetinde zaman işlemleri yapmak için çeşitli fonksiyonlar ve veri tipleri sunar.
#### Milisaniye Hassasiyetinde Zaman Alma
Mevcut zamanı milisaniye hassasiyetinde almak için `NOW(3)` fonksiyonunu kullanabilirsiniz:
“`sql
SELECT NOW(3);
“`
Bu sorgu, milisaniye hassasiyetinde mevcut zamanı döndürür (örneğin, `2016-11-19 09:52:53.248`).
#### Javascript Timestamp’ini MySQL’e Kaydetme
Javascript timestamp’ini MySQL’e kaydetmek için `FROM_UNIXTIME` fonksiyonunu kullanabilirsiniz:
“`sql
INSERT INTO table (col) VALUES (FROM_UNIXTIME(1478968868932 * 0.001));
“`
Bu komut, Javascript timestamp’ini MySQL’in anlayabileceği bir formata dönüştürür ve tabloya kaydeder.
#### Milisaniye Hassasiyetinde Tablo Oluşturma
Milisaniye hassasiyetinde zaman bilgisi saklamak için aşağıdaki gibi bir tablo oluşturabilirsiniz:
“`sql
CREATE TABLE times (
dt DATETIME(3),
ts TIMESTAMP(3)
);
“`
Bu tablo, `dt` ve `ts` sütunlarında milisaniye hassasiyetinde zaman bilgisi saklar.
—
### Bire-Çok İlişkiler
Bire-çok ilişkiler, bir tablodaki bir kaydın başka bir tablodaki birden fazla kayıtla ilişkilendirilmesini ifade eder. Bu tür ilişkiler, özellikle hiyerarşik veri yapılarında yaygın olarak kullanılır.
#### Örnek Şirket Tabloları
Bir şirkette her çalışanın bir yöneticisi olduğunu ve her yöneticinin birden fazla çalışanı yönettiğini varsayalım. Bu durumda iki tablo oluşturabiliriz:
**EMPLOYEES Tablosu:**
| EMP_ID | FIRST_NAME | LAST_NAME | MGR_ID |
|——–|————|———–|——–|
| E01 | Johnny | Appleseed | M02 |
| E02 | Erin | Macklemore| M01 |
| E03 | Colby | Paperwork | M03 |
| E04 | Ron | Sonswan | M01 |
**MANAGERS Tablosu:**
| MGR_ID | FIRST_NAME | LAST_NAME |
|——–|————|———–|
| M01 | Loud | McQueen |
| M02 | Bossy | Pants |
| M03 | Barrel | Jones |
#### Belirli Bir Yöneticinin Çalışanlarını Getirme
Belirli bir yöneticinin çalışanlarını getirmek için aşağıdaki sorguyu kullanabilirsiniz:
“`sql
SELECT e.emp_id, e.first_name, e.last_name
FROM employees e
INNER JOIN managers m ON m.mgr_id = e.mgr_id
WHERE m.mgr_id = ‘M01’;
“`
Bu sorgu, `M01` yöneticisinin çalışanlarını getirir:
| EMP_ID | FIRST_NAME | LAST_NAME |
|——–|————|———–|
| E02 | Erin | Macklemore|
| E04 | Ron | Sonswan |
#### Belirli Bir Çalışanın Yöneticisini Getirme
Belirli bir çalışanın yöneticisini getirmek için aşağıdaki sorguyu kullanabilirsiniz:
“`sql
SELECT m.mgr_id, m.first_name, m.last_name
FROM managers m
INNER JOIN employees e ON e.mgr_id = m.mgr_id
WHERE e.emp_id = ‘E03’;
“`
Bu sorgu, `E03` çalışanının yöneticisini getirir:
| MGR_ID | FIRST_NAME | LAST_NAME |
|——–|————|———–|
| M03 | Barrel | Jones |
—
### Sonuç
MySQL, zaman işlemleri ve ilişkisel tablolar üzerinde çalışmak için güçlü araçlar sunar. Milisaniye hassasiyetinde zaman işlemleri, özellikle hassas zaman kayıtları gerektiren uygulamalarda oldukça kullanışlıdır. Bire-çok ilişkiler ise hiyerarşik veri yapılarını yönetmek için idealdir. Bu araçları doğru bir şekilde kullanarak, veritabanı işlemlerinizi daha verimli hale getirebilirsiniz.