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.
- Sözdizimi sıralaması: SQL kelimelerini nasıl sıraladığımız
- 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.LastName As CustomerName
c.FirstName || ' ' || e.LastName AS SupportEmployeeName
, e.FirstName 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;