Sitemize hoşgeldiniz!  ::  Son eklenen yazı: Git’te “master” mı “main” mi? Bir kelimenin ardındaki hikâye  ::  Toplam 63 yazı  ::  Görüş ve önerileriniz için iletişim sayfasını kullanabilirsiniz.
» Menü
Anasayfa
Hakkımda
İletişim
» Kategoriler
› nostalji (8)
› laravel (7)
› php (5)
› web (3)
› agile (3)
› go (2)
› golang (2)
› api (2)
› redis (2)
› git (2)
› github (2)
› model (1)
» Arşiv
› Ekim 2025 (2)
› Temmuz 2025 (1)
› Nisan 2025 (3)
› Mart 2025 (5)
› Şubat 2025 (1)
› Ocak 2025 (43)
› Haziran 2011 (1)
› Kasım 2009 (1)
› Temmuz 2009 (1)
› Temmuz 2007 (1)
› Ocak 2007 (1)
› Kasım 2006 (1)
› Ekim 2006 (1)
› Ağustos 2006 (1)
Anasayfa » Yazılar » PostgreSQL ve SQL Sorguları: Temel ve İleri Düzey Komutlar
PostgreSQL ve SQL Sorguları: Temel ve İleri Düzey Komutlar
Yazan: Atilla Mutlu | Tarih: 20.01.2025 07:00

PostgreSQL Nedir?

PostgreSQL, açık kaynaklı ve güçlü bir ilişkisel veritabanı yönetim sistemidir (RDBMS). SQL (Structured Query Language) kullanarak veriler üzerinde işlem yapmamıza olanak tanır. Ayrıca JSON, XML gibi veri tiplerini de destekler ve genişletilebilir yapısıyla dikkat çeker.


Temel SQL Komutları

1. Veritabanı Yönetimi Komutları

Veritabanı Oluşturma:

CREATE DATABASE ogrenci_veritabani;

Bu komut "ogrenci_veritabani" adında bir veritabanı oluşturur.

Veritabanına Bağlanma:

\c ogrenci_veritabani;

pgAdmin'de bir veritabanına bağlanmak için sağ tıklayıp "Connect" seçeneğini kullanabilirsiniz.

Veritabanı Silme:

DROP DATABASE ogrenci_veritabani;

2. Tablo Yönetimi Komutları

Tablo Oluşturma:

CREATE TABLE ogrenciler (
    id SERIAL PRIMARY KEY,
    ad VARCHAR(100) NOT NULL,
    soyad VARCHAR(100) NOT NULL,
    yas INTEGER,
    kayit_tarihi DATE DEFAULT CURRENT_DATE
);
  • SERIAL: Otomatik artan birincil anahtar oluşturur.
  • DEFAULT: Varsayılan bir değer ayarlar.

Tabloya Sütun Ekleme:

ALTER TABLE ogrenciler ADD COLUMN email VARCHAR(255);

Tabloya Sütun Silme:

ALTER TABLE ogrenciler DROP COLUMN email;

Tabloyu Silme:

DROP TABLE ogrenciler;

3. Veri İşleme Komutları

Veri Ekleme:

INSERT INTO ogrenciler (ad, soyad, yas)
VALUES ('Ahmet', 'Yılmaz', 20);

Çoklu Veri Ekleme:

INSERT INTO ogrenciler (ad, soyad, yas)
VALUES
('Ayşe', 'Kara', 22),
('Mehmet', 'Çelik', 23);

Veri Güncelleme:

UPDATE ogrenciler
SET yas = 21
WHERE ad = 'Ahmet';

Veri Silme:

DELETE FROM ogrenciler
WHERE soyad = 'Kara';

4. Veri Sorgulama Komutları

Tüm Verileri Getirme:

SELECT * FROM ogrenciler;

Belirli Sütunları Getirme:

SELECT ad, soyad FROM ogrenciler;

Koşullu Sorgular:

SELECT * FROM ogrenciler
WHERE yas > 20;

Sıralama:

SELECT * FROM ogrenciler
ORDER BY yas DESC;
  • ASC: Artan sıralama (varsayılan).
  • DESC: Azalan sıralama.

Veri Sayısını Alma:

SELECT COUNT(*) FROM ogrenciler;

Gruplama:

SELECT yas, COUNT(*) FROM ogrenciler
GROUP BY yas;

Like ile Arama:

SELECT * FROM ogrenciler
WHERE ad LIKE 'A%';
  • %: Sıfır veya daha fazla karakter.
  • _: Tek bir karakter.

İleri Düzey Komutlar

1. Join (Birleştirme)

İç Birleştirme (Inner Join):

SELECT o.ad, o.soyad, s.ders_adi
FROM ogrenciler o
INNER JOIN sinavlar s ON o.id = s.ogrenci_id;
  • Bu sorgu, "ogrenciler" tablosu ile "sinavlar" tablosunu "id" ve "ogrenci_id" üzerinden birleştirir.

Sol Birleştirme (Left Join):

SELECT o.ad, o.soyad, s.ders_adi
FROM ogrenciler o
LEFT JOIN sinavlar s ON o.id = s.ogrenci_id;

2. Alt Sorgular (Subqueries)

SELECT ad, soyad
FROM ogrenciler
WHERE yas = (SELECT MAX(yas) FROM ogrenciler);

3. Trigger (Tetikleyici)

Trigger Fonksiyonu:

CREATE OR REPLACE FUNCTION log_ekle()
RETURNS TRIGGER AS $$
BEGIN
    INSERT INTO log_tablosu (islem, tarih)
    VALUES ('Yeni öğrenci eklendi', NOW());
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

Trigger Oluşturma:

CREATE TRIGGER yeni_ogrenci_ekleme
AFTER INSERT ON ogrenciler
FOR EACH ROW
EXECUTE FUNCTION log_ekle();

4. Görünümler (Views)

Görünüm Oluşturma:

CREATE VIEW aktif_ogrenciler AS
SELECT * FROM ogrenciler
WHERE yas > 18;

Görünüm Kullanma:

SELECT * FROM aktif_ogrenciler;

Performans İpuçları

  1. Dizin (Index) Kullanımı:
    Sorgu performansını artırmak için dizin oluşturabilirsiniz:

    CREATE INDEX idx_yas ON ogrenciler(yas);
  2. ANALYZE ve EXPLAIN Komutları:
    Sorgu optimizasyonu için kullanılır:

    EXPLAIN ANALYZE SELECT * FROM ogrenciler WHERE yas > 20;
  3. Tablo Bölümlendirme (Partitioning):
    Büyük tabloları bölümlere ayırarak performansı artırabilirsiniz.


« Geri dön | Yorum gönder | Yukarı ↑
» Hakkımda
A
Atilla Mutlu
Yazılım Geliştirici

Devamını oku »
» Son Yazılar
› Git’te “master” mı “main” mi? Bir kelimenin ardındaki hikâye
› Laravel Model Controller
› PostgreSQL Mini‑Kılavuz
› ReactJS Rehberi
› Spatie Laravel Paketleri
» İstatistik
Ziyaretçi Sayısı
036374
Toplam yazı: 63
PHPpowered SQLiteinside Firefoxile daha iyi CSStables ♥
Bu site en iyi 1024x768 çözünürlükte görüntülenir.
Copyright © 2006-2026
Anasayfa | Hakkımda | İletişim | Yukarı ↑
Bu sayfa 0,027 saniyede oluşturuldu.