S1.01. Temel Sorgulama
Select İfadesi
Veritabanı içerisindeki veriler tablo olarak adlandırdığımız yapılar içerisinde saklanır.
Tablolar kolon ve satırlardan oluşur. Sorgulama yaparken tablodaki kolonlar kullanılarak satır bazındaki veriler çağrılır. Her bir satır tekil bir kaydı, her bir kolon da tablonun alanlarını temsil eder.
Klasik bir select ifadesi aşağıdaki syntax gibi kullanılır.
SELECT
<Column(s)>
FROM
<SchemaName>.<TableName>
WHERE
<Criteria(s)>
GROUP BY
<Group Column(s)>
HAVING
<Filter Criteria(s)>
ORDER BY
<Order Column(s)>
Şema, Sql Server içerisindeki tablolar, indexler, viewlar gibi objeleri mantıksal olarak gruplamak için kullanılan yapılardır. Şemaları kullanarak, database design işlemlerini de mantıksal olarak yapabilirsiniz.
Not: Ben örneklerimde AdventureWorks veritabanını kullanacağım. Aynı örnekleri AdventureWorks veritabanını indirerek sizde deneyimleyebilirsiniz.
Bütün Kolonları Sorgulamak
Aşağıdaki kod bloğunda (*) bütün kolonları getir anlamına gelirken, sorgunun geneline baktığımızda HumanResources şemasına ait olan Employee tablosundan bütün kolonları ve satırları getir şeklinde sorgumuzu yorumlayabiliriz.
SELECT
*
FROM
HumanResources.Employee
Bir başka örnekte, HumanResources şemasına ait olan Employee tablosundan LoginID, JobTitle ve HireDate kolonlarını ve bütün satırları getir anlamına gelmektedir.
Belirli Kolonları Sorgulamak
-- Bütün çalışanların LoginID, JobTitle ve HireDate bilgilerini getiren sorgu
SELECT
LoginID, JobTitle, HireDate
FROM
HumanResources.Employee
Kriterlere Göre Sorgulamak
Bazen tablolardaki bütün veriler işimize yaramaz ve sadece istediğimiz kriterlere göre verileri sorgulamak isteriz. Bu gibi durumlarda da WHERE kullanırız.
-- Bütün kadın çalışanları getiren sorgu
SELECT
*
FROM
HumanResources.Employee
WHERE
GENDER = 'F'
Verilerin Sıralanması
Bazen de yaptığımız sorgulamalarda belirli kriterleri göre sonuç kümesinin sıralı olarak gelmesini isteriz. Bu durumda ORDER BY ifadesi kullanılır. ORDER BY ifadesinden sonra hangi kolona göre sıralamak istiyorsak o kolonun ismini vererek sıralama işlemini yapabiliriz.
Kolon adından sonra ASC (Ascending) ve DESC (Descending) keywordlerini kullanarak artan sıralı veya azalan sıralı şeklinde de sıralama işlemini yapabiliriz. Hiçbirisi yazılmasa default olarak ASC olarak sıralı gelecektir.
-- Bütün kadın çalışanların LoginID, JobTitle ve HireDate
-- bilgilerini HireDate kolonuna göre artan sıralı olarak
-- getiren sorgu
SELECT
LoginID,JobTitle,HireDate,Gender
FROM
HumanResources.Employee
WHERE
GENDER = 'F'
ORDER BY
HireDate ASC --DESC
Verilerin Gruplanması
Verileri belirli kriterlere göre gruplama için GROUP BY ifadesi kullanılır. GROUP BY ifadesi genellikle bir aggregate function ile kullanılır.
-- Her bir meslekte kaç adet kadın çalışan olduğunu getiren sorgu
SELECT
JobTitle,
Count(0) Adet
FROM
HumanResources.Employee
WHERE
GENDER = 'F'
GROUP BY
JobTitle
Gruplanmış Verilerde Filtreleme
Gruplanmış Verilerde filtreleme yapmak için HAVING ifadesi kullanılır.
-- 1’den fazla kadın çalışanı bulunan mesleklerin adetlerini getiren sorgu
SELECT
JobTitle,
Count(0) Adet
FROM
HumanResources.Employee
WHERE
GENDER = 'F'
GROUP BY
JobTitle
HAVING
COUNT(*) > 1
SQL Server Engine bir sorguda işlem yapmaya başladığında sırasıyla aşağıdaki blokları okuyarak sorgu sonucunu geri döndürür.
FROM → WHERE → GROUP BY → SELECT → ORDER BY
Faydalı olması dileğiyle.