Bir Tablonun Sorgulanması
Önceki SQL Dili Sonraki
Bir Tablonun Sorgulanması
Bir tablodan verileri almak için tablo sorgulanır. Bunun için bir SQL cümlesi olan SELECT kullanılır. Cümle, bir seçim listesi (istenen sütunları içeren bir liste), bir tablo listesi (verilerin alınacağı tabloların listesi) ve isteğe bağlı bir niteleme (sınırlamaların belirtildiği kısım) içerir. Örneğin, weather tablosundaki satırların tamamını almak için şunu yazın:
SELECT * FROM weather;
Burada *, "tüm sütunlar" anlamına gelen bir kısayoldur.[83]
Yani, aynı sonuç böyle de alınacaktır:
SELECT city, tmp_lo, tmp_hi, prcp, date FROM weather;
Çıktı şöyle olmalıdır:
     city      | tmp_lo | tmp_hi | prcp |    date
---------------+--------+--------+------+------------
 San Francisco |     46 |     50 | 0.25 | 1994-11-27
 San Francisco |     43 |     57 |    0 | 1994-11-29
 Hayward       |     37 |     54 |      | 1994-11-29
(3 rows)
Seçim listesinde sadece sütun isimlerini değil, ifadeleri de kullanabilirsiniz. Örnek:
SELECT city, (tmp_hi+tmp_lo)/2 AS tmp_avg, date FROM weather;
Bunun çıktısı şöyle olacaktır:
     city      | tmp_avg |    date
---------------+---------+------------
 San Francisco |      48 | 1994-11-27
 San Francisco |      50 | 1994-11-29
 Hayward       |      45 | 1994-11-29
(3 rows)
AS deyiminin çıktılanacak sütunu yeniden isimlendirmekte nasıl kullanıldığına dikkat edin. (AS deyimi isteğe bağlıdır.)
Bir sorgu, istenen satırların yerini belirtmek üzere bir WHERE deyimi eklenerek nitelikli yapılabilir. WHERE deyimi bir mantıksal ifade içerir ve sadece mantıksal ifadeyi doğrulayan satırlar döndürülür. Niteleme amacıyla mantıksal işleçlere (AND, OR ve NOT) izin verilir. Örneğin, San Francisco'nun yağışlı olduğu günleri bulalım:
SELECT * FROM weather
    WHERE city = 'San Francisco' AND prcp > 0.0;
Sonuç:
     city      | tmp_lo | tmp_hi | prcp |    date
---------------+--------+--------+------+------------
 San Francisco |     46 |     50 | 0.25 | 1994-11-27
(1 row)
Sorgu sonucunun sıralanmış olmasını da isteyebilirsiniz:
SELECT * FROM weather
    ORDER BY city;
Sonuç:
     city      | tmp_lo | tmp_hi | prcp |    date
---------------+--------+--------+------+------------
 Hayward       |     37 |     54 |      | 1994-11-29
 San Francisco |     43 |     57 |    0 | 1994-11-29
 San Francisco |     46 |     50 | 0.25 | 1994-11-27
Bu örnekte, sıralamanın nasıl yapılacağı tam olarak belirtilmemiştir, dolayısıyla hangi San Fransisco satırının önce geleceği belli olmaz. Fakat aşağıdaki sorgu daima bu sıralamayla dönecektir.
SELECT * FROM weather
    ORDER BY city, tmp_lo;
Bir sorgunun sonucundan yinelenmiş satırların kaldırılmasını isteyebilirsiniz:
SELECT DISTINCT city
    FROM weather;
     city
---------------
 Hayward
 San Francisco
(2 rows)
Burada da yine satırların sırası her sorguda farklı olabilir. Sonucun istediğimiz sırada olmasını DISTINCT ve ORDER BY deyimlerini birlikte kullanarak sağlayabilirsiniz[84]:
SELECT DISTINCT city
    FROM weather
    ORDER BY city;


[83] SELECT * kolay bir sorgulama olarak kullanışlı gibi görünse de, tabloya bir sütun eklemek sonuçları değiştireceğinden uygulamada çoğunlukla kötü bir tarz olarak kabul edilir.
[84] Bazı veritabanı sistemlerinde ve PostgreSQL'in eski sürümlerinde DISTINCT gerçeklenimi sıralamayı özdevimli yaptığından ORDER BY gereksizdir. Fakat bunun böyle olması SQL standardının bir zorlaması değildir ve şimdiki PostgreSQLTM DISTINCT deyiminin satırları sıralayacağını garanti etmemektedir.
Önceki Üst Ana Başlık Sonraki
Tablolara Satırların Girilmesi Başlangıç Tablolar Arası Katılım
Bir Linux Kitaplığı Sayfası