SQL sorguları ile seçilen kayıtları belirtir.
Söz dizimi
SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [YÜZDE]]]
FROM tablosu
Bu koşulları içeren bir SELECT deyimi aşağıdaki bölümlere sahiptir:
| Bölüm | Açıklama |
|---|---|
| ALL | Koşullardan birini eklemezseniz varsayılır. Microsoft Access veritabanı altyapısı, SQL deyimindeki koşulları karşılayan tüm kayıtları seçer. Aşağıdaki iki örnek eşdeğerdir ve Çalışanlar tablosundaki tüm kayıtları döndürür:SELECT ALL * FROM Çalışanlar ORDER BY EmployeeID; SEÇİN* FROM Çalışanlar ORDER BY EmployeeID; |
| DISTINCT | Seçili alanlarda yinelenen veriler içeren kayıtları atlar. Sorgunun sonuçlarına dahil olmak için SELECT deyiminde listelenen her alanın değerleri benzersiz olmalıdır. Örneğin, Çalışanlar tablosunda listelenen birkaç çalışan aynı soyadına sahip olabilir. LastName alanında iki kayıt Smith içeriyorsa, aşağıdaki SQL deyimi Smith içeren yalnızca bir kayıt döndürür: SELECT DISTINCT LastName ÇALıŞANLARDAN; DISTINCT değerini atlarsanız, bu sorgu her iki Smith kaydını da döndürür. SELECT yan tümcesi birden fazla alan içeriyorsa, belirli bir kaydın sonuçlara dahil edilmesi için tüm alanlardaki değerlerin birleşimi benzersiz olmalıdır. DISTINCT kullanan bir sorgunun çıktısı güncelleştirilemez ve diğer kullanıcılar tarafından yapılan sonraki değişiklikleri yansıtmaz. |
| DISTINCTROW | Yalnızca yinelenen alanları değil, yinelenen kayıtların tamamını temel alan verileri atlar. Örneğin, CustomerID alanında Müşteriler ve Siparişler tablolarını birleştiren bir sorgu oluşturabilirsiniz. Müşteriler tablosunda yinelenen CustomerID alanı yoktur, ancak Siparişler tablosunda her müşterinin birden çok siparişi olabileceğinden vardır. Aşağıdaki SQL deyiminde distinctrow kullanarak en az bir siparişi olan ancak bu siparişlerle ilgili hiçbir ayrıntı içermeyen şirketlerin listesini nasıl oluşturabileceğiniz gösterilmektedir: SELECT DISTINCTROW CompanyName MÜŞTERILERDEN INNER JOIN Siparişleri ON Customers.CustomerID = Orders.CustomerID ORDER BY CompanyName; DISTINCTROW'u atlarsanız, bu sorgu her şirket için birden fazla siparişi olan birden çok satır üretir. DISTINCTROW yalnızca sorguda kullanılan tabloların bazılarından alan seçtiğinizde ancak tümünü seçmediğinizde etkili olur. Sorgunuz yalnızca bir tablo içeriyorsa veya tüm tablolardan alan çıktısı alıyorsanız DISTINCTROW yoksayılır. |
| TOP n [YÜZDE] | ORDER BY yan tümcesi tarafından belirtilen aralığın en üstüne veya altına düşen belirli sayıda kayıt döndürür. 1994 sınıfından en iyi 25 öğrencinin adlarını istediğinizi varsayalım: İLK 25'I SEÇIN Ad, Soyadı ÖĞRENCILERDEN WHERE GraduationYear = 2003 ORDER BY GradePointAverage DESC; ORDER BY yan tümcesini eklemezseniz sorgu, Öğrenciler tablosundan WHERE yan tümcesini karşılayan rastgele bir 25 kayıt kümesi döndürür. TOP koşulu eşit değerler arasında seçim yapmaz. Yukarıdaki örnekte, yirmi beşinci ve yirmi altıncı en yüksek not ortalamaları aynıysa, sorgu 26 kayıt döndürür. ORDER BY yan tümcesi tarafından belirtilen aralığın en üstüne veya altına düşen kayıtların belirli bir yüzdesini döndürmek için PERCENT ayrılmış sözcüğünü de kullanabilirsiniz. İlk 25 öğrenci yerine sınıfın en alt yüzde 10'unu istediğinizi varsayalım: İLK YÜZDE 10'I SEÇIN Ad, Soyadı ÖĞRENCILERDEN WHERE GraduationYear = 2003 ORDER BY GradePointAverage ASC; ASC koşulu, alt değerlerin bir dönüşünü belirtir. TOP'un ardından gelen değer işaretsiz bir Tamsayı olmalıdır. TOP, sorgunun güncelleştirilebilir olup olmadığını etkilemez. |
| tablo | Kayıtların getirildiği tablonun adı. |