Bu nima?
SQL so‘rovlar oʻzi nima?
SQL (Structured Query Language) dasturlash tili ma’lumotlar bazasini boshqarishga mo‘ljallangan. Ma’lumotlar bazasidagi ma’lumotlarni qayta ishlash uchun SQL so‘rovlardan foydalanish zarur. Maqolada shu haqida soʻz yuritamiz.
SQL so‘rovlarning turlari
SQL o‘zaro bog‘langan jadval ko‘rinishida taqdim etiladigan relyatsion ma’lumotlar bazalarini (MB) boshqarish uchun ishlatiladi. SQL so‘rovlarning 4 turi mavjud bo‘lib, ular SQL tilining quyi guruhlari deb ham ataladi. Ularning har biri MB yoki ma’lumotlar bilan ma’lum harakatlarni bajaradi va har biri o‘z so‘rovlar to‘plamiga ega:
DDL – Data Definition Language. Maʼlumotlar bazasi strukturasini ta’riflash va boshqarish tili. Bunday so‘rovlar yordamida MBni noldan yaratish, tuzilishini tavsiflash va unda ma’lumotlarni joylashtirish qoidalarini sozlash mumkin. DDL so‘rovlari yordamida amalga oshiriladigan o‘zgarishlar odatda doimiy bo‘lib, avtomatik ravishda (auto-commit) qayd etiladi.
DML – Data Manipulation Language. MB ma’lumotlari bilan amallarni bajarishga moʻljallangan til. Quyi guruhning SQL so‘rovlari qo‘shish, yangilash, tanlash, ajratib olish yoki o‘chirish kabi amallar orqali ma’lumotlarni o‘zgartirishga yordam beradi. DML so‘rovlar ma’lumotlar bilan manipulyatsiya qiladi, ammo MBdagi jadvallar strukturasini o‘zgartirmaydi.
DCL – Data Control Language. MB obyektlaridan foydalanishni boshqarish tili. Bunday so‘rovlar ma’lum foydalanuvchilarga kirish huquqini berish yoki qaytarib olish imkonini beradi. DCL so‘rovlari yordamida MBda saqlanadigan ma’lumotlarning xavfsizligi ta’minlanadi.
TCL – Transaction Control Language. MBda tranzaksiyalarni boshqarish tili. Tranzaksiyalar butun holda bajariladigan va operatsiyalardan biri ishlamay qolganida amalga oshmaydigan bir nechta DML so‘rovlar ketma-ketligidir. Masalan, tranzaksiyalar yordamida bir vaqtning o‘zida MBdagi bir nechta obyektni o‘zgartirish mumkin. TCL so‘rovlar bir nechta operatsiyalarni bajarishda ma’lumotlarning yaxlitligi hamda muvofiqligini ta’minlaydi. Bu xatolik sodir bo‘lganda o‘zgarishlarni bekor qilish imkonini beradi.
Sodda va murakkab SQL so‘rovlar
Strukturasi va funksionalligiga ko‘ra SQL so‘rovlarni sodda hamda murakkab turlarga bo‘lish mumkin:
Sodda SQL so‘rovlar bitta asosiy funksiyani bajaradi va odatda MBdagi ma’lumotlarning faqat bitta jadvaliga taalluqli bo‘ladi. Ular sodda struktura, kichik so‘rov va birikmalar ilova qilinmagan minimal miqdordagi shart hamda operatsiyalarga ega bo‘ladi. Bu xususiyatlar yuqori ish unumdorligini ta’minlaydi. Oddiy SQL so‘rovlarni bajarish uchun minimal vaqt sarflanadi.
Sodda amallar: oddiy shartlarga ega bitta jadvaldan ma’lumotlarni ajratib olish, kiritish, yangilash yoki o‘chirish.
Bu sodda so‘rov SELECT buyrug‘i yordamida goods nomli jadvaldan barcha ustunlarni chiqarib oladi va * belgisi bilan belgilaydi
SQL murakkab so‘rovlari bir nechta amallarni bajaradi. Shuningdek, ilova qilingan kichik so‘rov va boshqa konstruksiyalardan iborat murakkab tuzilish – JOINʼga ega bo‘ladi. Bunday so‘rovlar bir vaqtning o‘zida MBdagi bir nechta jadvallarga murojaat qilishi va murakkab shartlardan foydalanishi mumkin. Murakkab strukturasi tufayli operatsiyalarning ish unumdorligi pasayadi va ular sodda SQL so‘rovlarga qaraganda uzoqroq vaqt davomida bajariladi.
Murakkab operatsiyalar — bir nechta jadvallarning ma’lumotlarni birlashtirish, filtrlash yoki ma’lumotlarni ajratib olish uchun kichik so‘rovlar, agregat funksiyalar, ma’lumotlarni guruhlash, filtrlash, saralashning murakkab shartlari bilan amalga oshiriladigan operatsiyalar.
Ushbu murakkab so‘rov kiyim bo‘limi Clothʼda sotilayotgan mahsulotlarning nomlari — name, ularning narxlari — priceʼni ORDER BY buyrug‘i va DESC modifikatori yordamida narxi kamayib borish tartibida saralab qaytaradi.
SQLʼdagi so‘rov strukturasi
SQL so‘rovlarda so‘zlar va belgilar ma’lum tartibda ketma-ket yoziladi. Agar so‘rov barcha asosiy buyruqlarni o‘z ichiga olgan bo‘lsa, ularning standart tartibi quyidagicha bo‘ladi:
SELECT – jadvalning tanlanishi kerak bo‘lgan ustunlarini ko‘rsatadi:
FROM – ustunlar joylashgan jadvalning nomini ko‘rsatadi;
JOIN – bir nechta jadvallarni birlashtiradi;
WHERE – satrlarni guruhlashni bajarishdan oldin filtrlaydi;
GROUP BY – satrlarni ko‘rsatilgan ustunlar bo‘yicha guruhlaydi;
HAVING – guruhlashdan keyin hosil bo‘lgan guruhlarni filtrlaydi;
ORDER BY – so‘rov natijasini saralaydi;
LIMIT – qaytariladigan satrlar sonini cheklaydi.
Agar so‘rovda ma’lum buyruqlardan foydalanish shart bo‘lmasa, ular standart tartibda ishlatiladigan buyruqlarni saqlagan holda tushirib qoldiriladi. So‘rovni o‘qish osonroq boʻlishi uchun buyruq va modifikatorlar odatda yuqori registrdagi harflar bilan yoziladi. Ammo so‘rov kichik harflar bilan ham bajariladi.
Standart SQL so‘rov shabloni quyidagicha ko‘rinishda boʻladi
Standart SQL so‘rov shabloni quyidagilardan iborat:
column1, column2,... – ustunlar nomi;
table1, table2 – foydalaniladigan jadvallar nomi;
condition – satrlarini filtrlash buyrug‘i WHERE va guruhlarini filtrlash buyrug‘i HAVINGʼni bajarish uchun shart;
ASC|DESC – guruhlash buyrug‘I ORDER BYʼning modifikatorlaridan biri. DESC kamayish tartibida, ASC o‘sish tartibida;
number – LIMIT buyrug‘i tomonidan qaytariladigan satrlarning maksimal soni.
O‘qish qulay bo‘lishi uchun SQL so‘rovlarni misoldagi kabi satrlar bo‘yicha strukturalash yoki standart ketma-ketlikni saqlagan holda bir satrga yoziladi.
Agregat funksiyalar
Ma’lumotlar so‘rovida SQL agregat funksiyalar qiymatlar to‘plami ustida hisoblashlarni bajarib, bitta qiymatni qaytaradi. Bunday funksiyalar ko‘pincha turli statistik operatsiyalarni bajarish va ma’lumotlarni tahlil qilishda ishlatiladi. Masalan, satrlar sonini hisoblash, berilgan to‘plamdagi o‘rtacha kattalik, yig‘indi, maksimal yoki minimal qiymatni topish uchun.
Asosiy agregat funksiyalar:
COUNT(*) — ma’lumotlar to‘plamidagi satrlar sonini qaytaradi;
SUM(column) — ko‘rsatilgan ustundagi qiymatlar yig‘indisini qaytaradi;
AVG(column) — ko‘rsatilgan ustundagi o‘rtacha qiymatni qaytaradi;
MAX(column) — ko‘rsatilgan ustundagi maksimal qiymatni qaytaradi;
MIN(column) — ko‘rsatilgan ustundagi minimal qiymatni qaytaradi.
Agregat funksiyalar ko‘pincha GROUP BY operatori bilan birgalikda ishlatiladi. Bu ko‘rsatilgan ustunlardagi bir xil qiymatga ega bo‘lgan satrlarni guruhlash va agregat funksiyalarni har bir guruhga qo‘llash imkonini beradi.
Masalan:
SELECT department, AVG(price) AS average_price
FROM goods
GROUP BY department;
Bu so‘rov har bir bo‘limdagi mahsulotlarning o‘rtacha narxini hisoblab, satrlarni department ustuni bo‘yicha guruhlaydi.
AS so‘zi so‘rovlardagi ustun va jadvallarga taxalluslar – aliasʼni berish uchun ishlatiladi. Misolda qaytarilgan ustun average_price taxallusini oladi. Unda department ustunidagi bo‘limlar bo‘yicha guruhlangan qiymatlarning o‘rtacha qiymati bo‘ladi. Taxalluslar so‘rov natijalari bilan ishlashni va ularni o‘qishni osonlashtiradi. Lekin ulardan foydalanish shart emas.
Ilova qilinadigan kichik soʻrovlar
SQLʼdagi ilova qilinadigan kichik so‘rovlar boshqa so‘rov ichidagi so‘rovlardir. Ular sub-so‘rovlar deb ham ataladi. Ular boshqa so‘rov natijalariga bog‘liq bo‘lgan operatsiyalarni bajarish uchun ishlatiladi. Kichik so‘rovlar SQL so‘rovlarning turli qismlariga kiritilishi mumkin.
SELECTʼdagi kichik so‘rovlar. Natijaviy to‘plamning bir qismi sifatida qaytariladigan qiymatlarni hisoblash uchun foydalaniladi.
FROMʼdagi kichik so‘rovlar. Asosiy so‘rovda ishlatilishi mumkin bo‘lgan vaqtinchalik jadvalni yaratish uchun qoʻllanadi.
WHEREʼdagi kichik so‘rovlar. Satrlarni boshqa so‘rovga bog‘liq shartlar asosida filtrlash uchun ishlatiladi.
HAVINGʼdagi kichik so‘rovlar. Guruhlangan ma’lumotlarni filtrlash uchun ishlatiladi.
JOINʼdagi kichik so‘rovlar. Keyinchalik boshqa jadvallar bilan birlashtiriladigan virtual jadvallarni yaratish uchun qoʻllanadi.
INSERTʼdagi kichik so‘rovlar. Boshqa so‘rovdan olingan ma’lumotlarni kiritish uchun ishlatiladi.
UPDATEʼdagi kichik so‘rovlar. Ma’lumotlarni boshqa so‘rov natijalari asosida o‘zgartirish uchun qoʻllanadi.
DELETEʼdagi kichik so‘rovlar. Ma’lumotlarni boshqa so‘rovga bog‘liq shartlar asosida o‘chirish uchun kerak boʻladi.
Misol:
SELECT name, (SELECT COUNT(*) FROM orders WHERE orders.goods_id = goods.id) AS order_count
FROM goods;
Bu so‘rov mahsulotlar nomi va ularga berilgan buyurtmalar sonini qaytaradi. Ilova qilingan kichik soʻrov kodi esa SELECT COUNT(*) FROM orders WHERE orders.goods_id = goods.id
SQL so‘rovlarga misollar
Onlayn do‘kondagi mahsulotlar haqidagi ma’lumotlar aks etgan goods jadvalini tasavvur qilamiz va bir nechta SQL so‘rov namunalarini yaratamiz. Jadvalda ustunlar mavjud:
name – mahsulot nomi;
price – mahsulot narxi;
department – bo‘lim;
orders – buyurtmalar soni.
goods jadvalidan ma’lumotlarni chiqarib olish:
SELECT * FROM goods;
Mahsulot nomi va narxi ko‘rsatilgan ustunlarni chiqarib olish:
SELECT name, price
FROM goodsKiyim-kechak (Cloth) bo‘limida sotiladigan mahsulotlarni chiqarib olish:
SELECT name, price
FROM goods
WHERE department = 'Cloth';Narxi kamayib borish tartibida saralangan mahsulotlarni chiqarib olish:
SELECT name, price
FROM goods
ORDER BY price DESC;COUNT agregat funksiyasi yordamida har bir bo‘limdagi mahsulotlar sonini hisoblash:
SELECT department, COUNT(*) AS total_goods FROM goods GROUP BY department;
Kichik so‘rov yordamida narxi barcha mahsulotlarning o‘rtacha narxidan yuqori bo‘lgan mahsulotlarni chiqarib olish:
SELECT name, price
FROM goods
WHERE price > (SELECT AVG(price) FROM goods);Buyurtmalarning umumiy soni 100 tadan ortiq bo‘lgan mahsulotlarni chiqarib olish:
SELECT name, orders
FROM goods
WHERE orders > 100;goods jadvaliga Cloth bo‘limidan 19,99 narxdagi shirt nomli yangi mahsulotni qo‘shish:
INSERT INTO goods (name, price, department, orders)
VALUES ('Shirt', 19.99, 'Cloth', 0);goods jadvalida skirt nomli mahsulot narxini 20.00 gacha yangilash:
UPDATE goods
SET price = 20.00
WHERE name = 'skirt;goods jadvalidan skirt nomli mahsulotni olib tashlash:
DELETE FROM goods
WHERE name = 'skirt';
Xulosa
SQL so‘rovlar relyatsion, ya’ni jadval ko‘rinishida taqdim etilgan ma’lumotlar bazalarini boshqarishga yordam beradi. SQL tilining quyi guruhlar deb ataluvchi to‘rtta turdagi so‘rovlari mavjud. Ular yordamida ma’lumotlar bazasini yaratish, qiymatlar ustida amallar bajarish, unga kirish va tranzaksiyalarni boshqarish mumkin. Sodda so‘rovlar bitta jadval va asosiy buyruqlardan foydalanadi. Murakkab so‘rovlar esa agregat funksiyalar, ilova qilingan kichik so‘rovlar va boshqa shartlardan foydalanishi mumkin.
Manba: SQL-запросы: основные команды для управления базами данных