35  DQL (data query language) SQL Select

35.1 SQL en basit SELECT örneği

SQL standardına göre en basit seçme örneği aşağıdaki gibi olacaktır

SELECT * FROM TableName;

SQL Standard’a göre, SELECT ifadelerinde FROM kullanılması zorunludur. Ancak SQL Server ve sqlite gibi bazı veritabanları FROM kullanılmadan SELECT ifadelerine izin verir.

SELECT 2+2;

Select ifadelerini iki şekilde sıralayabiliriz.

  1. Sözdizimi sıralaması: SQL kelimelerini nasıl sıraladığımız
  2. Anlamsal sıralama: Veritabanı motorunun bu SQL kelimeleri hangi sırada işlediği

Basit durumlar için iki sıralama vereceğiz ve bunları temel alarak daha karışık örnekler vereceğiz.

35.2 SQL Select sözdizimi sıralaması

Aşağıdaki sıralama sql server dokümanlarından alınmıştır ve basitleştirilmiştir. Köşeli parentezler nelerin [] zorunlu olmadığını göstermektedir. Daha önce belirtildiği gibi FROM, SQL standardına göre zorunlu olmasına rağmen bir çok veritabanı FROM olmadan tek başına SELECT çalıştırılmasına izin vermektedir.

  • SELECT seçilen kolonlar
  • [ FROM tablo kaynağı ]
  • [ WHERE arama kriterleri ]
  • [ GROUP BY gruplama ifadeleri ]
  • [ HAVING arama kriterleri ]
  • [ ORDER BY sıralama ifadeleri [ ASC | DESC ]]

Sözdizimi sıralaması, select ifadelerini nasıl yazmamız gerektiğidir. Aşağıdaki tablo anahtar kelimelerin anlamlarını verir.

KOMUT ADI ROL TANIM
SELECT Kolon Listesi Hangi kolonların döndürüleceğini tanımlar
FROM Kaynak Tablo Hangi Tablolar sorgulanıyor
WHERE Arama - Filtre Tablo içindeki satırları filtreler
GROUP BY Gruplama Listesi Satırları Gruplar
HAVING Arama - Filtre Gruplamadan sonra çalışan filtre
ORDER BY Sıralama Kolon Listesi Son çıktıyı sıralar

35.3 SQL Basit Select Örnekleri

Chinook Tüm kolonları * yıldız karaketeri ile

SELECT * FROM Customer;

Kolon isimleri ile SELECT

SELECT FirstName, LastName FROM Customer;   

** Hesaplanan kolonlar **

SELECT FirstName || ' ' || LastName FROM Customer;

** Takma Ad Kolon**

SELECT FirstName || ' ' || LastName AS FullName FROM Customer;

Kolon takma adları özellikle hesaplanan kolonlar (calculated columns) için çok kullanışlıdır.

** Takma Ad Tablo **

SELECT c.FirstName, c.LastName  FROM Customer c;

Tablo takma adı, özellikle birden fazla tablodan SELECT kullanarak bilgileri aldığımız, tablolardaki satır ve sütun adları aynı olduğunda kullanışlıdır. Hangi tabloadi.kolonadi kullandığımızı ayırt etmemiz gerekir. Aşağıdaki örneğe bakınız

SELECT 
c.FirstName || ' ' || c.LastName As CustomerName
, e.FirstName || ' ' || e.LastName AS SupportEmployeeName 
FROM Customer c inner join Employee e on c.SupportRepId = e.EmployeeId 

Daha Karışık Örnek

Açıklaması daha sonra

select CustomerId
,sum(total) as TotalInvoice 
from Invoice 
group by CustomerId
order by TotalInvoice desc;