WHERE: Veriyi Filtreleme

PostgreSQL WHERE: Verilerin Filtrelenmesi

PostgreSQL'e dair bir sonraki dersimize hoş geldiniz! Bugün, PostgreSQL sorgularınızda verileri filtrelemek için temel bir bileşen olan WHERE koşulunu ele alacağız. WHERE koşulunu ustaca kullanmak, veritabanınızdan tam olarak ihtiyacınız olan bilgileri almanıza olanak tanır.

WHERE Koşuluna Giriş

PostgreSQL'de WHERE koşulu, bir sorgu tarafından döndürülen kayıtları filtrelemek için kullanılan koşulları tanımlar. Koşullar uygulayarak, sorgu sonuçlarınızı yalnızca kriterlerinize uyan satırları içerecek şekilde daraltabilirsiniz.

Temel Sözdizimi

SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • SELECT: Elde etmek istediğiniz sütunları listeler.
  • FROM: Sorgulamak istediğiniz tabloyu belirtir.
  • WHERE: Satırları filtrelemek için koşulu tanımlar.

PostgreSQL'de Verilerin Filtrelenmesi

Şimdi WHERE koşulunu verimli bir şekilde kullanmanın farklı yollarına derinlemesine bakalım.

1. Karşılaştırma Operatörlerinin Kullanımı

Karşılaştırma operatörleri sütun değerlerini belirtilen bir ifadeyle karşılaştırır.

  • =: Eşit
  • <> veya !=: Eşit değil
  • <: Küçük
  • >: Büyük
  • <=: Küçük veya eşit
  • >=: Büyük veya eşit

Örnek: Fiyatı 10$'ın üzerinde olan kitapları getirin

SELECT title, price
FROM books
WHERE price > 10;

Şema Başlatma İşlemine Göz Atın

2. String Desenleri ile Filtreleme

LIKE Operatörünü Kullanma

LIKE operatörü, wildcard (joker karakter) kullanarak desen eşleştirme yapmanıza olanak sağlar.

  • %: Sıfır veya daha fazla karakteri temsil eder
  • _: Tek bir karakteri temsil eder

Örnek: Adı 'J' harfi ile başlayan yazarları bulun

SELECT name
FROM authors
WHERE name LIKE 'J%';

3. Mantıksal Operatörlerin Kullanılması

Mantıksal operatörler birden fazla koşulu birleştirir.

  • AND: Tüm koşulların doğru olması gerekir
  • OR: En az bir koşulun doğru olması yeterlidir
  • NOT: Bir koşulun sonucunu tersine çevirir

Örnek: 'Jane Austen' tarafından yazılmış ve fiyatı 10$'dan düşük olan kitapları getirin

SELECT title, author, price
FROM books
WHERE author = 'Jane Austen' AND price < 10;

4. BETWEEN Operatörü

BETWEEN operatörü verilen aralıktaki değerleri seçer.

Örnek: Sayfa sayısı 200 ile 400 arasında olan kitapları bulun

SELECT title, pages
FROM books
WHERE pages BETWEEN 200 AND 400;

5. IN Operatörü

IN operatörü, bir değerin bir listedeki herhangi bir değerle eşleşip eşleşmediğini kontrol eder.

Örnek: Belirli yazarların kitaplarını getirin

SELECT title, author
FROM books
WHERE author IN ('George Orwell', 'Harper Lee');

6. NULL Değerleriyle Başa Çıkma

IS NULL ve IS NOT NULL

Bu ifadeleri, NULL (bilinmeyen) değerleri kontrol etmek için kullanın.

Örnek: Fiyatı belirtilmemiş kitapları bulun

SELECT title
FROM books
WHERE price IS NULL;

7. Parantezlerle Koşulları Birleştirme

Parantezler, koşulları gruplayarak mantıksal akışı kontrol eder.

Örnek: Karmaşık bir filtreleme

SELECT title, author, price
FROM books
WHERE (author = 'George Orwell' OR author = 'J.D. Salinger') AND price < 10;

8. WHERE Koşulunda Fonksiyonların Kullanımı

PostgreSQL fonksiyonları, WHERE koşulu içinde verileri işlemek için kullanılabilir.

Örnek: Başlık uzunluğu 15 karakterden fazla olan kitapları bulun

SELECT title
FROM books
WHERE LENGTH(title) > 15;

9. EXISTS Operatörü

Bir alt sorgunun satır döndürüp döndürmediğini kontrol eder.

Örnek: Fiyatı 8$'dan düşük olan kitapları olan yazarları bulun

SELECT name
FROM authors
WHERE EXISTS (
    SELECT 1
    FROM books
    WHERE books.author = authors.name AND price < 8
);

10. WHERE Koşulunda Alt Sorgular

Daha gelişmiş filtreleme yapmak için alt sorguları kullanabilirsiniz.

Örnek: Birden fazla kitabı olan yazarların kitaplarını bulun

SELECT title, author
FROM books
WHERE author IN (
    SELECT author
    FROM books
    GROUP BY author
    HAVING COUNT(*) = 1
);

Sonuç

WHERE koşulu, PostgreSQL'de belirli koşullara göre verileri filtrelemek için güçlü bir araçtır. Farklı operatörler ve fonksiyonlar kullanarak verilerinizden anlamlı sonuçlar çıkarabilirsiniz.

Anahtar Noktalar:

  • Sayısal ve metin verilerini filtrelemek için karşılaştırma operatörlerini kullanın.
  • Dize eşleştirmeleri için LIKE ve ILIKE operatörlerini kullanın.
  • Birden fazla koşulu mantıksal operatörlerle birleştirin.
  • Aralık ve liste filtrelemesi için BETWEEN ve IN'i kullanın.
  • Filtreleme yaparken NULL değerlerine dikkat edin.

PostgreSQL WHERE koşulunun farklı senaryolarla kullanımını pratiğe dökmeye devam edin ve becerilerinizi geliştirin.


Schema Initialization

To run the examples, ensure your PostgreSQL database is set up with the following schema:

-- Create the books table
CREATE TABLE books (
    title VARCHAR(255),
    author VARCHAR(255),
    price NUMERIC(10, 2),
    pages INTEGER
);
 
-- Insert sample data into the books table
INSERT INTO books (title, author, price, pages) VALUES
('The Great Gatsby', 'F. Scott Fitzgerald', 10.99, 180),
('To Kill a Mockingbird', 'Harper Lee', 7.99, 281),
('1984', 'George Orwell', 8.99, 328),
('Pride and Prejudice', 'Jane Austen', 6.99, 279),
('The Catcher in the Rye', 'J.D. Salinger', 9.99, 214),
('Moby-Dick', 'Herman Melville', 11.99, 635),
('War and Peace', 'Leo Tolstoy', 12.99, 1225);
 
-- Create the authors table
CREATE TABLE authors (
    name VARCHAR(255)
);
 
-- Insert sample data into the authors table
INSERT INTO authors (name) VALUES
('F. Scott Fitzgerald'),
('Harper Lee'),
('George Orwell'),
('Jane Austen'),
('J.D. Salinger'),
('Herman Melville'),
('Leo Tolstoy');
 
-- Create the movies table
CREATE TABLE movies (
    title VARCHAR(255)
);
 
-- Insert sample data into the movies table
INSERT INTO movies (title) VALUES
('The Shawshank Redemption'),
('The Godfather'),
('The Dark Knight'),
('Pulp Fiction'),
('The Lord of the Rings');

Farklı sorguları keşfetmek ve PostgreSQL'in WHERE koşulunu daha iyi anlamak için örnekleri inceleyin ve değiştirin. İyi sorgulamalar!