SQL so'rovlar, ma'lumotlarni filtlash uchun 3ta bosqichli operatsiya bajaradi:
- Row filtering - ushbu bosqichda
FROM
,WHERE
,GROUP BY
vaHAVING
lar ishga tushadi. - Column filtering - ustunlar odatda
SELECT
statement bilan filter qilinadi. - Row filtering -
DISTINCT
,ORDER BY
vaLIMIT
lar ishga tushadi.
Ha, ha, adashmadingiz, row filtering 2 marta amalga oshiriladi. Agar siz yozgan SQL query shunday qilishni talab qilgan bo'lsa yokida DISTINCT
, ORDER BY
, LIMIT
va ...lar siz yozgan queryda mavjud bo'lsa. Keling unda biror query yozib uni tahlil qilib ko'rsak:
SELECT id, full_name, university, gpa
FROM student
WHERE gpa > 3.00
ORDER BY full_name;
FROM, WHERE execution
Birinchi o'rinda FROM
va WHERE
ishga tushadi. Ammo nimaga deysizmi? Tasavvur qiling sizga pul berib sanomara olib kel deyishsa nima qilasiz? Kamida qaysi do'kondan? degan savolni berasiz. Xuddi shunday SQL ham avval FROM
va WHERE
statementlarini ishga tushiradi. Student tabledan kimda gpa 3.00 dan katta bo'lsa o'sha foydalanuvchilarni tanlaydi. Ammo qanday tanlaydi, bu albatta qandaydir loop mexanizmi bilan sodir bo'ladi. Har bir rowni filter qilib oladi, agar gpa > 3.00 bo'lsa ularni oladi, agar unday bo'lmasa keyingi rowlarni tekshiradi.
GROUP BY, HAVING execution
GPA 3.00 dan katta bo'lgan talabalarni tanlab oldi, loop tugadi. Agar siz ma'lumotlarni guruhlashni buyurgan bo'lsangiz GROUP BY
ishga tushadi. Guruhlangan ma'lumotlar ustida qandaydir shartlaringiz bo'lsa HAVING
ishlatasiz WHERE
emas. Chunki WHERE
guruhlashdan avval bajariladi. Guruhlashdan keyin, ularni shart asosida tanlash, o'chirish va boshqa operatsiyalarni bajarish uchun HAVING
clauseni ishlatish kerak kerak.
SELECT execution
SELECT
ning asosiy vazifasi bizga kerakli columnlarni tanlab berish xolos. Ya'ni siz SELECT deb qaysi columlarni kiritsangiz o'shalarni sizga ko'rsatadi. Keraksiz columlarni tanlash SELECT * FROM ...
nega yomonligini bilmoqchi bo'lsangiz ushbu maqolani o'qing.
ORDER BY, LIMIT execution
Demak bizda ko'rsatiladigan columnlar, table va rowlar aniq, endi ularni tartiblash kerak. Agar siz ORDER BY
ishlatgan bo'lsangiz, berilgan column bo'yicha SELECT
qilingan elementlarni tartiblab chiqadi. Agar tartiblangan elementlarga LIMIT
bergan bo'lsangiz demak tartiblab bo'lgandan keyin ularni siz aytgan miqdor bo'yicha sizga taqdim etadi.
Ko'rib turibsizki, SQL queryni qanchalik tez yoki sekin ishlashi, uni bosqichlari ko'pligi va qachon qaysi clauseni ishlatish yaxshi yoki yomonligini bilishga o'zaro bog'liq. Ularni ko'proq o'rganing, amallar bajaring va bizni kuzatishda davom eting!
Telegram: @otabekswe