SQLab
O‘rganishMashqMasalalarArenaReyting
© 2026 SQLab · Toshkent
SQLab

SQL’ni o‘rnatmasdan, brauzerning o‘zida o‘rganing.

Platforma

  • O‘rganish
  • Mashq
  • Masalalar
  • Arena
  • Reyting

Kimlar uchun

  • Talabalar
  • Ustozlar
  • Universitetlar
© 2026 SQLab. Barcha huquqlar himoyalangan.O‘zbekistonda, talabalar uchun yaratilgan.
O‘rganishMashqMasalalarArenaReyting
0/26

Asoslar

  • Ma’lumotlar bazasi nima?
  • Birinchi SELECT
  • WHERE: kerakli qatorlarni tanlash
  • IN, BETWEEN, LIKE va NULL
  • Saralash, LIMIT va DISTINCT

Hisob-kitob

  • Ifodalar, funksiyalar va CASE
  • Sanalar bilan ishlash
  • COUNT, SUM, AVG, MIN, MAX
  • GROUP BY va HAVING

Jadvallarni ulash

  • Kalitlar va bog‘lanishlar
  • INNER JOIN
  • LEFT JOIN va juftsiz qatorlar
  • Bir nechta jadval va self join

Murakkab so‘rovlar

  • Ichki so‘rovlar
  • UNION, INTERSECT, EXCEPT
  • WITH: nomlangan so‘rovlar
  • Oyna funksiyalari

Jadval yaratish va o‘zgartirish

  • CREATE TABLE: turlar va cheklovlar
  • INSERT, UPDATE, DELETE
  • ALTER, DROP, TRUNCATE
  • Bazani to‘g‘ri loyihalash

Professional daraja

  • Indekslar va EXPLAIN
  • Tranzaksiyalar va ACID
  • VIEW: saqlangan so‘rovlar
  • Funksiyalar, protseduralar, triggerlar
  • Foydalanuvchilar, huquqlar, zaxira nusxa
O‘rganish/Professional daraja

Funksiyalar, protseduralar, triggerlar

259 daq

SQL faqat so‘rov emas — baza ichida dastur ham yozsa bo‘ladi. Funksiyalar, protseduralar va triggerlar mantiqni bazaning o‘ziga joylaydi. Bu yerda PostgreSQL va MySQL eng ko‘p farq qiladi — kursni almashtirib, ikkalasini ham ko‘ring.

Funksiya

Qiymat qaytaradi va so‘rov ichida ishlatiladi.

CREATE FUNCTION mark(score int) RETURNS int
LANGUAGE sql IMMUTABLE AS $$
  SELECT CASE WHEN score >= 86 THEN 5 WHEN score >= 71 THEN 4 WHEN score >= 56 THEN 3 ELSE 2 END
$$;

SELECT student_id, score, mark(score) FROM grades;

$$ … $$ — funksiya tanasi (ichida qo‘shtirnoqlarni ikkilash shart emas). Murakkab mantiq uchun LANGUAGE plpgsql ishlatiladi: o‘zgaruvchilar, IF, sikllar.

Protsedura

Qiymat qaytarishi shart emas, bir nechta amalni bajaradi va CALL bilan chaqiriladi.

CREATE PROCEDURE raise_salary(dept int, pct numeric)
LANGUAGE plpgsql AS $$
BEGIN
  UPDATE employees SET salary = salary * (1 + pct / 100) WHERE department_id = dept;
END $$;

CALL raise_salary(1, 10);

Trigger

Jadvalda biror voqea (INSERT, UPDATE, DELETE) bo‘lganda o‘zi ishga tushadi. Misol: dori sotilganda ombordagi qoldiqni kamaytirish.

CREATE FUNCTION decrease_stock() RETURNS trigger
LANGUAGE plpgsql AS $$
BEGIN
  UPDATE dori SET qoldiq = qoldiq - NEW.miqdor WHERE dori_id = NEW.dori_id;
  RETURN NEW;
END $$;

CREATE TRIGGER sotuv_after_insert
AFTER INSERT ON sotuv
FOR EACH ROW EXECUTE FUNCTION decrease_stock();

PostgreSQL’da trigger ikki qismdan iborat: avval funksiya, keyin uni chaqiradigan trigger.

NEW — qo‘shilayotgan (yoki yangilangan) qator, OLD — o‘chirilayotgan (yoki eski) qator.

Qachon ishlatish kerak?

Foydali: bazaning yaxlitligini saqlash (qoldiq hech qachon manfiy bo‘lmasin), o‘zgarishlar tarixini yozish, og‘ir hisobni ma’lumot yonida bajarish.

Ehtiyot bo‘ling: mantiq «ko‘rinmas» bo‘lib qoladi — dasturchi INSERT yozadi, lekin trigger yana nimalar qilayotganini bilmaydi. Triggerlarni hujjatlashtiring va kam ishlating.

Mashq

Erkin rejimda tayyor dorixona bazasini yuklang, dori jadvaliga qoldiq int DEFAULT 100 ustunini qo‘shing (ALTER TABLE), yuqoridagi triggerni yarating va sotuv qo‘shib ko‘ring — qoldiq kamayishi kerak.

Esda qoldiring

  • Funksiya qiymat qaytaradi, protsedura amal bajaradi (CALL), trigger voqeaga javob beradi.
  • PostgreSQL: $$ … $$ va plpgsql; MySQL: DELIMITER va BEGIN … END.
  • Trigger kuchli, lekin ko‘rinmas — ehtiyotkorlik bilan.
Oldingi darsVIEW: saqlangan so‘rovlarKeyingi darsFoydalanuvchilar, huquqlar, zaxira nusxa

Mundarija

  • Funksiya
  • Protsedura
  • Trigger
  • Qachon ishlatish kerak?
  • Mashq
  • Esda qoldiring
O‘rganishMashqMasalalarArenaReyting

SQLab