Elbette, SQL (Structured Query Language) veritabanı yönetiminde kullanılan bir dildir ve karmaşık veri setleriyle çalışırken oldukça güçlüdür. İşte bazı ileri düzey SQL işlemleri ve bunlara ait örnek sorgular:
1. JOIN İşlemleri
Senaryo: İki farklı tablodaki verileri birleştirme
Örnek Sorgu:
sql
Copy code
SELECT employees.name, departments.name
FROM employees
JOIN departments ON employees.department_id = departments.id;
2. Alt Sorgular (Subqueries)
Senaryo: Bir sorgu içinde başka bir sorgu çalıştırma
Örnek Sorgu:
sql
Copy code
SELECT name
FROM employees
WHERE department_id IN (SELECT id FROM departments WHERE name = 'IT');
3. Pencere Fonksiyonları (Window Functions)
Senaryo: Veri üzerinde gruplama yapmadan istatistiksel işlemler gerçekleştirme
Örnek Sorgu:
sql
Copy code
SELECT name, salary, AVG(salary) OVER (PARTITION BY department_id) as avg_department_salary
FROM employees;
4. Common Table Expressions (CTE)
Senaryo: Karmaşık sorguları daha anlaşılır hale getirme
Örnek Sorgu:
sql
Copy code
WITH regional_sales AS (
SELECT region, SUM(amount) AS total_sales
FROM orders
GROUP BY region
)
SELECT region
FROM regional_sales
WHERE total_sales > (SELECT AVG(total_sales) FROM regional_sales);
5. İndeksleme ve Performans Optimizasyonu
Senaryo: Sorgu hızını artırmak için veritabanında indeks oluşturma
Örnek Sorgu:
sql
Copy code
CREATE INDEX idx_employee_name ON employees(name);
6. Trigger Kullanımı
Senaryo: Belirli bir veritabanı işlemi gerçekleştiğinde otomatik olarak başka işlemlerin tetiklenmesi
Örnek Sorgu:
sql
Copy code
CREATE TRIGGER log_salary_change
AFTER UPDATE OF salary ON employees
FOR EACH ROW
BEGIN
INSERT INTO salary_audit(employee_id, old_salary, new_salary, change_date)
VALUES(:OLD.id, :OLD.salary, :NEW.salary, CURRENT_TIMESTAMP);
END;
7. Recursive CTEs
Senaryo: Kendini tekrar eden sorgular yazma, özellikle hiyerarşik veri yapıları için
Örnek Sorgu:
sql
Copy code
WITH RECURSIVE subordinates AS (
SELECT id, name, manager_id
FROM employees
WHERE name = 'John Doe'
UNION ALL
SELECT e.id, e.name, e.manager_id
FROM employees e
INNER JOIN subordinates s ON s.id = e.manager_id
)
SELECT * FROM subordinates;
Bu örnekler SQL'in güçlü ve esnek yapısını göstermektedir. Gerçek dünya uygulamalarında, bu sorguların veritabanınızın yapısına ve ihtiyaçlarınıza göre uyarlanması gerekebilir.
Elbette, SQL'in ileri düzey özelliklerine dair daha fazla senaryo ve örnek sorguları aşağıda bulabilirsiniz:
8. GROUP BY ve HAVING ile Karmaşık Gruplama
Senaryo: Belirli kriterlere göre gruplanmış veriler üzerinde koşullu sorgular yapmak
Örnek Sorgu:
sql
Copy code
SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 50000;
9. EXISTS ve NOT EXISTS Kullanımı
Senaryo: Bir alt sorgunun sonucuna göre koşullu filtreleme yapmak
Örnek Sorgu:
sql
Copy code
SELECT name
FROM employees
WHERE EXISTS (SELECT 1 FROM department WHERE id = employees.department_id AND name = 'HR');
10. CASE WHEN Kullanımı
Senaryo: Sorgu içinde koşullu mantık uygulamak
Örnek Sorgu:
sql
Copy code
SELECT name, salary,
CASE
WHEN salary > 60000 THEN 'High'
WHEN salary BETWEEN 40000 AND 60000 THEN 'Medium'
ELSE 'Low'
END AS salary_range
FROM employees;
11. Pivot Tablolar
Senaryo: Verileri yeniden şekillendirerek farklı bir bakış açısı kazandırmak
Örnek Sorgu:
sql
Copy code
SELECT *
FROM (
SELECT department, salary
FROM employees
) AS source_table
PIVOT (
AVG(salary)
FOR department IN ('Sales', 'HR', 'IT', 'Finance')
) AS pivot_table;
12. Veritabanı İşlemleri (Transaction Management)
Senaryo: Birden fazla işlemi bir işlem bloğu olarak gruplandırmak
Örnek Sorgu:
sql
Copy code
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
13. Veri Tiplerini ve Fonksiyonlarını Kullanma
Senaryo: Özel veri tipleri ve fonksiyonlarla çalışmak
Örnek Sorgu:
sql
Copy code
SELECT name, CAST(salary AS DECIMAL(10,2))
FROM employees;
14. FULL OUTER JOIN Kullanımı
Senaryo: İki tabloyu birleştirirken, her iki tablodaki tüm kayıtları dahil etmek
Örnek Sorgu:
sql
Copy code
SELECT employees.name, departments.name
FROM employees
FULL OUTER JOIN departments ON employees.department_id = departments.id;
15. Özel Fonksiyonlar Oluşturma
Senaryo: Özel durumlar için kullanıcı tanımlı fonksiyonlar yazmak
Örnek Sorgu:
sql
Copy code
CREATE FUNCTION calculate_bonus(salary DECIMAL)
RETURNS DECIMAL
BEGIN
RETURN salary * 0.1;
END;
Bu örnekler, SQL'in çeşitliliğini ve veritabanı sorgulama ve yönetimindeki gücünü ortaya koymaktadır. Veritabanınızın yapısına ve iş ihtiyaçlarınıza göre bu sorguları uyarlamak önemlidir.