Ma'lumotlar bazasi bilan ishlaydigan har qanday dastur — SQL bilishingizni talab qiladi. Django ORM yoki Mongoose ishlatsangiz ham, qoqasida SQL ishlaydi. Shuning uchun SQL'ni tushunmasdan "backend dasturchi" bo'lish qiyin. Keling, amaliy misollar bilan boshlaylik.
Ma'lumotlar bazasi va jadval nima
Ma'lumotlar bazasi — bu Excel'ga o'xshash, lekin minglab, millionlab qatorlarni tez boshqara oladigan tizim. Ichida jadvallar bor, jadvalda esa ustunlar va qatorlar.
-- Misol jadval tuzilishi
CREATE TABLE talabalar (
id INTEGER PRIMARY KEY,
ism TEXT NOT NULL,
yosh INTEGER,
guruh TEXT,
baho INTEGER
);
-- Ma'lumot qo'shish
INSERT INTO talabalar (ism, yosh, guruh, baho)
VALUES ('Ali Karimov', 20, 'B-21', 88);
INSERT INTO talabalar (ism, yosh, guruh, baho)
VALUES ('Dilnoza Yusupova', 19, 'A-21', 95);
INSERT INTO talabalar (ism, yosh, guruh, baho)
VALUES ('Bobur Toshmatov', 21, 'B-21', 72);
SELECT — ma'lumotlarni olish
-- Hammani ko'rsatish
SELECT * FROM talabalar;
-- Faqat kerakli ustunlar
SELECT ism, baho FROM talabalar;
-- Tartiblash
SELECT ism, baho FROM talabalar
ORDER BY baho DESC; -- yuqoridan pastga
-- Cheklash
SELECT ism, baho FROM talabalar
ORDER BY baho DESC
LIMIT 3; -- faqat top 3 ta
WHERE — shartlar bilan filtrlash
-- 90 va undan yuqori baho olganlar
SELECT ism, baho FROM talabalar
WHERE baho >= 90;
-- Muayyan guruh
SELECT ism FROM talabalar
WHERE guruh = 'B-21';
-- Bir nechta shart
SELECT ism, baho FROM talabalar
WHERE guruh = 'B-21' AND baho > 80;
-- Yoki sharti
SELECT ism, baho FROM talabalar
WHERE baho < 60 OR baho > 90;
-- LIKE — qisman moslik
SELECT ism FROM talabalar
WHERE ism LIKE 'Ali%'; -- "Ali" bilan boshlanadigan ismlar
JOIN — bir nechta jadvalni birlashtirish
Real loyihalarda ma'lumot bitta jadvalda emas, bir nechtasida bo'ladi. Masalan:
-- Ikkinchi jadval
CREATE TABLE kurslar (
id INTEGER PRIMARY KEY,
nomi TEXT,
talaba_id INTEGER
);
INSERT INTO kurslar (nomi, talaba_id)
VALUES ('Python', 1), ('Django', 1), ('SQL', 2);
-- INNER JOIN — faqat ikkala jadvalda mavjudlar
SELECT talabalar.ism, kurslar.nomi
FROM talabalar
INNER JOIN kurslar ON talabalar.id = kurslar.talaba_id;
-- Natija:
-- Ali Karimov | Python
-- Ali Karimov | Django
-- Dilnoza Yusupova | SQL
Agregat funksiyalar — hisob-kitob
-- O'rtacha baho
SELECT AVG(baho) AS ortacha_baho FROM talabalar;
-- Eng yuqori va eng past
SELECT MAX(baho), MIN(baho) FROM talabalar;
-- Guruh bo'yicha hisoblash
SELECT guruh, COUNT(*) AS talabalar_soni, AVG(baho) AS ortacha
FROM talabalar
GROUP BY guruh;
Ko'p uchraydigan xatolar
Xato 1: SELECT * ni hamma joyda ishlatish. Katta jadvallarda bu sekin ishlaydi — faqat kerakli ustunlarni tanlang.
Xato 2: JOIN va WHERE tartibini aralashtirib yuborish. Avval JOIN, keyin WHERE yoziladi.
Maslahat: SQL'ni o'rganish uchun sqliteonline.com yoki db-fiddle.com saytlaridan foydalaning — hech narsa o'rnatmasdan brauzerda SQL yozib sinab ko'rishingiz mumkin.
+0
+0
+0
+0
+1
+0
+0