SELECT - daha sonra və daha dərin
Transact-SQL-in əsasları olan SELECT əmrinin imkanlarını öyrənməyi davam edək. O ciddi müəyyən edilmiş məlumatların cədvəldən çıxartmaq xassəsinə malikdir. Başlanğıc üçün cədvəldən müəyyən edilmiş sütunların seçilməsinə baxaq. Bu SELECT əmrindən sütunların çıxarılması ilə əldə edilir.
Sual:
SELECT sname, comm FROM Salespeople
Nəticə aşağıdakı kimi olacaq:
sname comm -------- ----------- Иванов 12 Петров 13 Егоров 10 Сидоров 11 Шилин 15
DISTINCT - sizin SELECT əmrində olan təkrar olunan qiymətlərin aradan qaldırılmasını təmin edir. Tutaq ki siz bilmək istəyirsiniz ki hal hazırda hansı agentlərin sizin sifariş cədvəlinizdə sifarişçiləri var. Sizə agentlərin neçə sifarişi olduğu bilmək lazım deyil, sizə sadəcə olaraq agentlərin kodları (snum) lazımdır. Bunun üçün siz növbətiləri daxil edəcəksiniz:
SELECT snum FROM Orders
və belə nəticə alacaqsınız:
snum ----------- 1007 1004 1001 1002 1007 1002 1001 1003 1002 1001
Gördüyünüz kimi kodlar təkrar olunurlar. Təkrarsız siyahının alınması üçün növbətiləri daxil etmək lazımdır:
SELECT DISTINCT snum FROM Orders
Artıq nəticə ayrı cürdür:
snum ----------- 1001 1002 1003 1004 1007
DISTINCT-i SELECT əmrində yalnız bir dəfə istifadə etmək olar. Əgər bir neçə sütun seçilibsə onda DISTINCT tam eyni olan sətirləri çıxardır. Bir neçə qiymətləri eyni olan sətirlər qalacaqlar.
DISTINCT yerinə siz ALL göstərə bilərsiniz. Bu əks təsir edəcək, sətirlərin oxşarlığı yadda qalacaq. Bu heç bir arqumentin yazılmamasına oxşayır. Ona görə də ALL sadəcə olaraq başa salıcı arqumentdir.
Cədvəllər çox böyük olmaq meylinə malikdirlər. Bir halda ki sizi onlardan bəziləri maraqlandırır onda bu sətirləri seçmək üçün qayda təyin etmək imkanı var.
WHERE - cədvəlin ixtiyari sətiri üçün qayda təyin edən və doğru və ya yalnış olan SELECT əmrinin təklifidir. Əmrə yalnız cədvəlin verilmiş sətirləri yerinə yetirən sətirlərini yetirən sətirləri verir. Tutaq ki siz Moskvada olan agentlərin ad və komissiyonnularının adlarını görmək istəyirsiniz. Bundan sadə heç nə yoxdur:
SELECT sname, city FROM Salespeople WHERE city = 'Москва'
Sualda WHERE təklifi olanda SQL Server bütün cədvələ sətir-sətir baxır və hər bir sətirdə verilmiş təklifin doğruluğunu yoxlayır.
Qeyd
'Москва' tipli sətir konstantları Transact-SQL-də apostrof ', və ya dırnaq" ilə məhdudlaşırlar.
İndi isə WHERE təklifini rəqəm tipli ədədlər üçün qurmağa çalışaq. Sifarişçilər (Customers) cədvəlinin rating sütununun sifarişçiləri bu ədədlərin köməkliyi ilə bir neşə kriteriyaya əsaslanmış qruplara bölmək üçün təyin olunub. Məsələn bu əvvəlki sifarişlərin ölçüsündən aslı olan kreditin qiymətlənməsi və qiyməti forması ola bilər. Reytinqi 100 olan bütün sifarişçiləri seçək:
SELECT * FROM Customers WHERE rating = 100
Burda dirnaq işarəsindən istifadə olunmur, yəni ki - bunlar ədəd tiplidirlər. Sorğunun nəticəsi:
CNUM CNAME CITY RATING SNUM ----- ------------------ ------- ----------- ----------- 2001 ТОО Рога и копыта Москва 100 1001 2006 Clemens Лондон 100 1001 2007 ОАО "ООО" ТОМСК 100 1004
İndi siz cədvələ sizə lazım olan informasiyanın sizə verilməsi üçün onu necə məcbur etmək üsullarını bilirsiniz. Əsas olur ki siz cədvəldən min sətir içərisindən birini seçmək üsulunu bilirsiniz. Şərtlər çətin ola bilər, lakin elə bu SQL dilini daha güclü edir.