SQL so‘rov tilida qism  so‘rovlar tuzishni davom ettramiz, bu maqolada SQLning kalit so‘zlaridan foydalanamiz. Buning uchun bizga quyidagi jadval kerak bo‘ladi.

5_1

Dastlabki so‘rovda «IN» kalit so‘zidan foydalanamiz. Qism dasturdan chiqgan natijalar, asosiy so‘rovda,  «IN» kalit so‘zi orqali tanlanib, mos kelganlari ekranga chiqariladi. Misol ko‘ramiz,

select * from test where year in(select year from test where year>1988);

sql_6_2

Bu so‘rovni qism so‘rovidan natija chiqgach, quyidagicha kichik so‘rovga aylanib qoladi(bazadagi axborotlardan kelib chiqgan holda).

select * from test where year IN(1989, 1990);

ma’nosi, 1989 va 1990 yillarda tug‘ilgan o‘yinchilarni ekranga chiqaring.

Qism so‘rov tuzishda ishlatiladigan navbatdagi kalit so‘zimiz «Exists» deb nomlanadi. Bu kalit so‘z orqali biror ustun emas, butun boshli  so‘rov tekshiriladi. Agar qism dasturdan «true» natija chiqsa, ya’ni qism so‘rovdan jadvalda mavjud bo‘lgan biror axborot chiqsa, asosiy so‘rov ishlaydi, aks holda hech qanday so‘rov ishlamasdan, ekranga hech narsa chiqmaydi.

select * from test where exists(select year from test where year=1990);

sql_6_3

agar qism so‘rovdan natija olinmasa,

select * from test where exists(select year from test where year=1990);

asosiy so‘rov ishlamaydi.  Bu operator uchun qanday natija chiqgani qiziq emas, balki natija chiqgan yoki chiqmagani qiziq. Bunga teskari bo‘lgan operator «Not exists» deb nomlanib, ishlashi ham «exists«ning teskarisi.

YUqoridagi operatorlar  oddiy so‘rovlar uchun ham, qism so‘rovlar uchun ham ishlataveriladi, lekin navbatdagi operatorlar  faqat qism so‘rovlar bilan ishlatiladi. Ular quyidagilardan iborat: ANY, All, SOME.

«ANY» va «SOME» bir hil operator bo‘lib, istalganini ishlatishingiz mumkin, ikkisida ham bir hil natija chiqadi. Bu operatorlarning ishlashi, qism so‘rovdan chiqgan natijani istalgani asosiy so‘rov uchun qiymat bo‘lsa, asosiy so‘rov natija beraveradi. Bu operator «IN» operatori bilan bir hil, faqat bularda «=» dan boshqa «<,<=,>, >=,<>» belgilarni ham ishlatish mumkin(IN da faqat «=»).

select * from test where id>any(select id from test where id>4);

sql_6_4

«ALL«, qism so‘rovdagi barcha natijalar, asosiy so‘rovdagi shartni bajarishi lozim, shunda barcha shartdan o‘tgan natija  ekranga chiqadi.

select * from test where id<all(select id from test where id>3);

sql_6_5

Shu bilan qism so‘rovlarni tugatamiz.