İçindekiler
SQL ile Veritabanı Sorgulama ve Veri Çıkarma Prompt Rehberi
SQL, veri dünyasının evrensel dilidir. Küçük bir e-ticaret sitesinden küresel bir bankanın veri ambarına kadar hemen her organizasyonda veriye erişmenin, analiz etmenin ve raporlamanın temel aracı SQL sorgulamadır. Ancak karmaşık iş sorularını doğru SQL sorgularına çevirmek, özellikle çoklu tablo birleştirmeleri, alt sorgular, pencere fonksiyonları ve performans optimizasyonu söz konusu olduğunda deneyimli analistler için bile zorlayıcı olabilir. Yapay zeka destekli araçlar bu süreçte doğal dildeki iş sorusunu SQL sorgusuna dönüştürmeden karmaşık sorguları açıklamaya, hata ayıklamadan performans iyileştirmeye kadar veri profesyonellerine güçlü bir yardımcı pilot görevi üstlenmektedir. Bu rehber, günlük veri analizi ihtiyaçlarınızı yapay zeka ile hızlı ve doğru biçimde karşılamanız için doğrudan kullanabileceğiniz prompt şablonları sunmaktadır.
🔍 Veri Profesyonelleri İçin Önemli Not: Yapay zekanın ürettiği SQL sorgularını üretim veritabanında çalıştırmadan önce mutlaka gözden geçirin ve test ortamında doğrulayın. AI modelleri veritabanı şemanızı bilemez, veri hacminizi kestiremez ve iş kurallarınızın tüm nüanslarını yakalayamaz. Özellikle UPDATE, DELETE ve DROP gibi değişiklik yapan sorguları çalıştırmadan önce WHERE koşullarını dikkatle kontrol edin. Yapay zekayı SQL öğrenme sürecinizi hızlandıran bir araç olarak kullanın ancak her sorgunun mantığını anlamaya özen gösterin.
Temel SQL Sorguları ve Veri Keşfi
İş Sorusunu SQL Sorgusuna Dönüştürme
Yapay zekayı SQL yardımcısı olarak kullanmanın en etkili yolu, veritabanı şemanızı ve iş sorunuzu net biçimde tanımlayan yapılandırılmış promptlar kullanmaktır. Şema bilgisi olmadan yapay zeka tablolarınızı ve sütunlarınızı tahmin etmek zorunda kalır ve büyük olasılıkla çalışmayan bir sorgu üretir. Aşağıdaki şablon, herhangi bir iş sorusunu SQL sorgusuna dönüştürmek için kullanabileceğiniz genel amaçlı bir çerçevedir.
İŞ SORUSUNU SQL SORGUSUNA DÖNÜŞTÜRME
Aşağıdaki veritabanı şeması ve iş sorusuna göre SQL sorgusu yaz.
VERITABANI BİLGİLERİ:
Veritabanı türü: [MySQL / PostgreSQL / SQL Server / Oracle / SQLite]
Versiyon: [Varsa spesifik versiyon]
TABLO ŞEMASI:
Tablo 1: [tablo_adi]
Sütunlar:
- [sutun_adi] [veri_tipi] [PRIMARY KEY / FOREIGN KEY / NOT NULL / açıklama]
- [sutun_adi] [veri_tipi] [kısıtlama veya açıklama]
- [sutun_adi] [veri_tipi] [kısıtlama veya açıklama]
Örnek veri (ilk 3 satır):
| sutun1 | sutun2 | sutun3 |
| deger1 | deger2 | deger3 |
Tablo 2: [tablo_adi]
Sütunlar:
- [sutun_adi] [veri_tipi] [PRIMARY KEY / FOREIGN KEY referansı]
- [sutun_adi] [veri_tipi] [açıklama]
İlişki: [Tablo1.sutun = Tablo2.sutun]
(Gerekli kadar tablo ekleyin)
İŞ SORUSU:
[Doğal dilde iş sorunuz - ne bilmek istiyorsunuz?]
EK KISITLAMALAR:
- Tarih aralığı: [Varsa belirli dönem]
- Filtreleme: [Belirli koşullar]
- Sıralama: [Nasıl sıralanmalı]
- Limit: [Kaç kayıt gerekli]
- Gruplama: [Neye göre gruplamak istiyorsunuz]
BEKLENEN ÇIKTI:
Sütunlar: [Sonuçta görmek istediğiniz sütunlar]
Format: [Sayıların formatı, tarih formatı]
LÜTFEN:
1. SQL sorgusunu yaz (veritabanı türüne uygun syntax)
2. Sorgunun her bölümünü satır satır açıkla (yorum satırlarıyla)
3. Sorgunun döndüreceği sonuç yapısını açıkla
4. Olası edge case leri ve dikkat noktalarını belirt
5. Performans açısından büyük veri setlerinde dikkat edilmesi gerekenleri not et
Veri Keşfi ve Profilleme Sorguları
Yeni bir veritabanıyla çalışmaya başladığınızda veya tanımadığınız bir veri setini analiz etmeniz gerektiğinde, ilk adım veriyi tanımaktır. Veri profilleme, tablodaki kayıt sayısını, sütun dağılımlarını, boş değerleri, tekrarlayan kayıtları ve veri kalitesi sorunlarını sistematik biçimde keşfetme sürecidir.
VERİ KEŞFİ ve PROFİLLEME SORGU SETİ
Aşağıdaki tablo için kapsamlı veri profilleme sorguları oluştur.
VERITABANI TÜRÜ: [MySQL / PostgreSQL / SQL Server]
TABLO: [tablo_adi]
SÜTUNLAR:
- [sutun1] [tip] - [açıklama]
- [sutun2] [tip] - [açıklama]
- [sutun3] [tip] - [açıklama]
- [sutun4] [tip] - [açıklama]
AŞAĞIDAKİ PROFİLLEME SORGULARINI OLUŞTUR:
1. GENEL BAKIŞ:
- Toplam kayıt sayısı
- Her sütundaki NULL değer sayısı ve oranı
- Her sütundaki benzersiz (distinct) değer sayısı
- Tablonun tahmini disk boyutu
2. SAYISAL SÜTUNLAR İÇİN:
- MIN, MAX, AVG, MEDIAN, STDDEV
- Percentile dağılımı (25., 50., 75., 90., 99.)
- Sıfır ve negatif değer sayıları
- Outlier tespiti (IQR yöntemiyle)
3. METİN SÜTUNLARI İÇİN:
- En sık tekrarlanan 10 değer (frekans ile)
- Minimum ve maksimum metin uzunluğu
- Boş string vs NULL ayrımı
- Başında veya sonunda boşluk olan kayıtlar
4. TARİH SÜTUNLARI İÇİN:
- En eski ve en yeni tarih
- Aylık ve yıllık kayıt dağılımı
- Gelecek tarih veya anormal tarih tespiti
- Boşluk analizi (veri olmayan dönemler)
5. VERİ KALİTESİ:
- Tam tekrarlayan (duplicate) satır tespiti
- Primary key tekrarı kontrolü
- Referans bütünlüğü kontrolü (orphan records)
- Tutarsız format tespiti (telefon, e-posta, tarih)
Her sorgu için:
- SQL kodunu yaz
- Sorgunun ne kontrol ettiğini açıkla
- Sonuçların nasıl yorumlanacağını belirt
- Veri kalitesi skoru hesaplama önerisi sun
İleri Düzey SQL Sorguları ve Analitik Fonksiyonlar
Karmaşık JOIN, Alt Sorgu ve CTE Yapıları
Gerçek dünya veri analizi nadiren tek tabloyla yapılır. Müşteri davranışını analiz etmek için sipariş, ürün, ödeme ve iade tablolarını birleştirmeniz; çalışan performansını değerlendirmek için personel, departman, hedef ve değerlendirme tablolarını ilişkilendirmeniz gerekir. Çoklu tablo birleştirmeleri, alt sorgular ve CTE (Common Table Expression) yapıları bu karmaşık analizlerin temel yapı taşlarıdır.
KARMAŞIK JOIN ve CTE YAPILARIYLA ANALİZ
Çoklu tablo birleştirmesi gerektiren analiz sorusu için SQL oluştur.
VERITABANI TÜRÜ: [MySQL / PostgreSQL / SQL Server]
TABLO ŞEMASI:
[Tüm ilgili tabloları, sütunları ve ilişkileri listele]
Tablo: customers
- customer_id INT PK
- name VARCHAR
- email VARCHAR
- city VARCHAR
- registration_date DATE
- segment VARCHAR (gold/silver/bronze)
Tablo: orders
- order_id INT PK
- customer_id INT FK -> customers
- order_date DATE
- total_amount DECIMAL
- status VARCHAR (completed/cancelled/returned)
Tablo: order_items
- item_id INT PK
- order_id INT FK -> orders
- product_id INT FK -> products
- quantity INT
- unit_price DECIMAL
- discount DECIMAL
Tablo: products
- product_id INT PK
- product_name VARCHAR
- category VARCHAR
- brand VARCHAR
- cost DECIMAL
ANALİZ SORUSU:
[Doğal dilde karmaşık iş sorusu]
Örnek sorular:
- Son 6 ayda en az 3 sipariş veren Gold segmentteki müşterilerin ortalama sepet tutarı ve en çok satın aldıkları kategori nedir?
- Her kategorinin aylık bazda gelir trendi, bir önceki aya göre büyüme oranı ve toplam gelir içindeki payı nedir?
- İlk siparişinde indirim kullanan müşterilerin tekrar satın alma oranı, indirim kullanmayanlara kıyasla nasıl?
- Hangi ürün kombinasyonları en sık birlikte satın alınıyor (market basket analizi)?
LÜTFEN:
1. Sorguyu CTE kullanarak modüler ve okunabilir biçimde yaz
2. Her CTE bloğunun amacını açıkla
3. JOIN türü seçimini gerekçelendir (INNER / LEFT / RIGHT / FULL)
4. Alt sorgu yerine CTE tercih etme nedenini açıkla (veya tersi)
5. Aynı soruyu alt sorgu ile de yaz ve karşılaştır
6. Büyük veri setlerinde performans önerilerini belirt
7. Sonuçtaki potansiyel tuzakları uyar (NULL handling, çift sayma)
Pencere Fonksiyonları ve İleri Analitik
Pencere fonksiyonları (window functions), SQL in en güçlü ve en az kullanılan özelliklerinden biridir. Standart gruplama (GROUP BY) satırları tek bir özete daraltırken, pencere fonksiyonları her satırı koruyarak yanına hesaplanmış değerler ekler. Bu sayede sıralama (RANK), kümülatif toplam (SUM OVER), hareketli ortalama, önceki-sonraki kayıt karşılaştırması (LAG/LEAD) ve yüzdelik dilim hesaplaması gibi güçlü analizleri tek bir sorguda gerçekleştirebilirsiniz.
PENCERE FONKSİYONLARI ile İLERİ ANALİTİK
Pencere fonksiyonları kullanarak analitik SQL sorguları oluştur.
VERITABANI TÜRÜ: [MySQL 8+ / PostgreSQL / SQL Server]
TABLO ŞEMASI:
[İlgili tabloları listele]
ANALİZ SENARYOLARı:
Senaryo 1 - Sıralama ve Top-N Analizi:
Soru: [Her kategori içinde en çok satan 3 ürünü bul]
Fonksiyonlar: ROW_NUMBER(), RANK(), DENSE_RANK()
Partition: [PARTITION BY category]
Sıralama: [ORDER BY total_sales DESC]
Senaryo 2 - Kümülatif ve Hareketli Hesaplamalar:
Soru: [Aylık satışların kümülatif toplamı ve 3 aylık hareketli ortalama]
Fonksiyonlar: SUM() OVER, AVG() OVER
Frame: [ROWS BETWEEN 2 PRECEDING AND CURRENT ROW]
Senaryo 3 - Dönem Karşılaştırması:
Soru: [Her ayın bir önceki aya göre büyüme oranı]
Fonksiyonlar: LAG(), LEAD()
Hesaplama: [(current - previous) / previous * 100]
Senaryo 4 - Yüzdelik ve Dağılım:
Soru: [Müşterileri harcamalarına göre yüzdelik dilimlere ayır]
Fonksiyonlar: NTILE(), PERCENT_RANK(), CUME_DIST()
Segmentasyon: [Top %10, %25, %50, alt %25]
Senaryo 5 - İlk/Son Değer ve Boşluk Analizi:
Soru: [Her müşterinin ilk ve son siparişi arasındaki gün farkı]
Fonksiyonlar: FIRST_VALUE(), LAST_VALUE(), DATEDIFF
LÜTFEN HER SENARYO İÇİN:
1. Tam SQL sorgusunu yaz
2. OVER() clause ının her parçasını açıkla (PARTITION BY, ORDER BY, FRAME)
3. Pencere fonksiyonu olmadan aynı sonucu nasıl alırdık karşılaştır
4. Yaygın hataları ve dikkat noktalarını belirt
5. Gerçek dünya kullanım senaryosu örneği ver
6. Performans ipuçları ve indeks önerileri sun
Sorgu Optimizasyonu ve Veri Temizleme
SQL Sorgu Performans Analizi ve İyileştirme
Doğru sonuç üreten bir SQL sorgusu yeterli değildir; bu sorgunun kabul edilebilir sürede çalışması da gerekir. Milyonlarca satırlık tablolarda dakikalarca süren bir sorgu, iş akışını tıkar ve veritabanı sunucusunu gereksiz yere yükler. Sorgu optimizasyonu, execution plan okumadan indeks stratejisine, sorgu yeniden yazımından partition kullanımına kadar geniş bir beceri seti gerektirir ve yapay zeka bu süreçte yavaş sorguların nedenini teşhis etmek ve iyileştirme önerileri sunmak için etkili bir danışman olabilir.
SQL SORGU PERFORMANS ANALİZİ ve İYİLEŞTİRME
Yavaş çalışan SQL sorgusunu analiz et ve optimize et.
VERITABANI TÜRÜ: [MySQL / PostgreSQL / SQL Server]
YAVAŞ SORGU:
```sql
[Buraya yavaş çalışan sorgunuzu yapıştırın]
```
TABLO BİLGİLERİ:
Tablo boyutları:
- [tablo_adi]: [yaklaşık satır sayısı]
- [tablo_adi]: [yaklaşık satır sayısı]
Mevcut indeksler:
- [tablo_adi]: [indeks adı] ON ([sütunlar])
- [tablo_adi]: [indeks adı] ON ([sütunlar])
Performans bilgileri:
- Mevcut çalışma süresi: [saniye/dakika]
- Hedef çalışma süresi: [saniye]
- Execution plan (varsa): [EXPLAIN çıktısı]
ANALİZ VE OPTİMİZASYON:
1. SORGU ANALİZİ:
- Sorgunun mantığını açıkla
- Potansiyel darboğazları tespit et
- Full table scan yapılan noktaları bul
2. EXECUTION PLAN YORUMU:
- EXPLAIN / EXPLAIN ANALYZE çıktısını yorumla
- En maliyetli operasyonları belirle
- Tahmini vs gerçek satır sayısı uyumsuzluklarını tespit et
3. OPTİMİZASYON ÖNERİLERİ:
a) Sorgu yeniden yazımı:
- Daha verimli JOIN sıralaması
- Alt sorgu yerine CTE veya tersi
- EXISTS vs IN vs JOIN karşılaştırması
- Gereksiz sütun ve hesaplama eliminasyonu
b) İndeks önerileri:
- Önerilen yeni indeksler (covering index dahil)
- Bileşik indeks sütun sırası
- Mevcut indekslerde değişiklik
c) Veritabanı düzeyinde:
- Partition stratejisi
- Materialized view önerisi
- İstatistik güncelleme
- Konfigürasyon parametreleri
LÜTFEN:
1. Orijinal ve optimize edilmiş sorguyu yan yana göster
2. Her optimizasyon adımının beklenen etkisini açıkla
3. İndeks oluşturma SQL komutlarını ver
4. Optimizasyon öncesi ve sonrası EXPLAIN karşılaştırma rehberi sun
5. Genel SQL performans kontrol listesi oluştur (anti-pattern lar)
SQL ve Veri Analizi Prompt Kullanımında En İyi Pratikler
Yapay Zekadan Doğru SQL Çıktısı Almak İçin Kritik İpuçları:
- Şema bilgisini her zaman prompt a dahil edin: Tablo adları, sütun adları, veri tipleri ve tablolar arası ilişkileri vermeden yapay zekadan doğru SQL beklemek gerçekçi değildir. CREATE TABLE ifadelerini veya şema özetini paylaşmak sonuç kalitesini dramatik biçimde artırır.
- Veritabanı türü ve versiyonunu mutlaka belirtin: MySQL, PostgreSQL ve SQL Server arasında syntax farklılıkları bulunur; tarih fonksiyonları, string işlemleri ve pencere fonksiyonları veritabanına göre değişir. Yanlış veritabanı için üretilen sorgu çalışmaz.
- Beklenen çıktıyı somut biçimde tarif edin: Sonuçta hangi sütunları görmek istediğinizi, sıralama tercihini ve satır limitini belirtmek, yapay zekanın doğru sonuca ulaşmasını kolaylaştırır.
- Karmaşık soruları adım adım parçalayın: Tek seferde beş tabloyu birleştiren, üç alt sorgu içeren ve iki pencere fonksiyonu kullanan bir sorgu istemek yerine, problemi alt parçalara bölüp her birini ayrı prompt la çözdürün ve sonra birleştirin.
SQL Sorgu Kalitesi ve Güvenliği İçin Kaçınılması Gereken Hatalar:
- Yapay zekanın ürettiği sorguyu anlamadan çalıştırmayın: Her sorgunun mantığını satır satır anlayın, WHERE koşullarının doğruluğunu doğrulayın ve özellikle veri değiştiren (UPDATE, DELETE) sorguları önce SELECT ile test edin. Kör güven veri kaybına yol açabilir.
- SELECT * kullanımından kaçının ve sadece gerekli sütunları çekin: Tüm sütunları çekmek hem ağ trafiğini hem de bellek kullanımını gereksiz artırır. Yapay zekadan da spesifik sütunları seçen sorgular üretmesini isteyin.
- NULL değerleri gözden kaçırmayın ve her analizde NULL handling stratejisi belirleyin: NULL değerler hesaplamalarda, karşılaştırmalarda ve birleştirmelerde beklenmedik sonuçlara yol açar. COALESCE, IFNULL veya CASE WHEN ile NULL senaryolarını yönetin.
- Sorguyu üretim ortamında test etmeden doğrudan çalıştırmayın: Büyük tablolarda optimize edilmemiş bir sorgu sunucuyu kilitleyebilir. LIMIT ile küçük bir örneklem üzerinde test edin ve EXPLAIN ile execution plan ı inceleyin.
Veri Analizi İş Akışında SQL ve AI Entegrasyonu İçin Altın Kurallar:
- Tekrar eden sorguları şablon haline getirin ve prompt kütüphanesi oluşturun: Haftalık satış raporu, aylık müşteri segmentasyonu veya günlük stok kontrolü gibi düzenli ihtiyaçlar için standart prompt şablonları hazırlayın ve parametreleri değiştirerek hızla yeniden kullanın.
- Yapay zekayı SQL öğrenme aracı olarak kullanın: Üretilen sorguyu inceleyerek yeni teknikler keşfedin, açıklama isteyerek mantığı anlayın ve aynı soruyu farklı yöntemlerle çözdürerek alternatif yaklaşımları öğrenin.
- Sorgu sonuçlarını yorumlatmak için de yapay zekadan yararlanın: SQL sorgusunun çıktısını yapay zekaya vererek veri yorumu, anomali tespiti ve iş önerisi üretmesini isteyerek analizin son adımını da hızlandırabilirsiniz.
- Versiyon kontrolü ve dokümantasyon alışkanlığı edinin: Önemli sorguları ve promptları tarih ve açıklama ile kaydedin. Hem ekip içi bilgi paylaşımı hem de gelecekte tekrar kullanım için sorgu kütüphanesi oluşturmak uzun vadede büyük zaman tasarrufu sağlar.