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/Jadval yaratish va o‘zgartirish

Bazani to‘g‘ri loyihalash

219 daq

Yaxshi loyihalangan bazada har bir ma’lumot bir joyda saqlanadi. Yomon loyihalangan bazada esa bir narsa o‘nlab joyda takrorlanadi va vaqt o‘tib o‘ziga zid bo‘lib qoladi. Bu darsda bazani qanday to‘g‘ri bo‘lishni o‘rganamiz.

Yomon misol

Do‘kon hamma narsani bitta jadvalda yuritadi:

order_id customer customer_phone products total
1 Aziz Karimov 901112233 iPhone 15, AirPods 3 13 880 000
2 Aziz Karimov 901112233 Quvvatlagich 20W 190 000
3 Malika Yusupova 935556677 iPhone 15 11 490 000

Muammolar:

  • Takrorlanish — Azizning telefoni har bir buyurtmada qayta yozilgan. Telefon o‘zgarsa, hamma joyda o‘zgartirish kerak; bittasi esdan chiqsa — baza ikki xil telefonni «biladi».
  • Bir katakda ro‘yxat — products da bir nechta mahsulot. «Nechta iPhone sotildi?» degan savolga SQL bilan javob berib bo‘lmaydi.
  • Hisoblangan qiymat — total mahsulot narxlaridan kelib chiqadi; ular mos kelmay qolishi mumkin.

Normal shakllar

Bazani to‘g‘ri qurish qoidalari normal shakllar deyiladi. Amalda dastlabki uchtasi yetarli.

1NF — har bir katakda bitta qiymat. Ro‘yxat bo‘lmaydi, takrorlanuvchi ustunlar (phone1, phone2, phone3) bo‘lmaydi. Mahsulotlar alohida qatorlarga ajratiladi.

2NF — har bir ustun butun kalitga bog‘liq. Agar kalit ikki ustundan iborat bo‘lsa (masalan, order_id + product_id), mahsulot nomi faqat product_id ga bog‘liq — demak u boshqa jadvalda (products) turishi kerak.

3NF — ustunlar bir-biriga bog‘liq emas. Buyurtmada customer_phone turmaydi — u buyurtmaga emas, mijozga tegishli. Mijoz haqidagi hamma narsa customers jadvalida.

To‘g‘ri tuzilma

Xuddi bizning shop bazamizdagidek:

  • customers — mijozlar (ism, telefon — bir marta);
  • products — mahsulotlar (nom, narx);
  • orders — buyurtma: kim va qachon (customer_id);
  • order_items — buyurtma tarkibi: qaysi mahsulotdan nechta (order_id, product_id, quantity).

Endi «Azizning telefoni» bitta joyda, «nechta iPhone sotildi» esa oddiy so‘rov:

shop· O‘zgartirib ko‘ring
SELECT p.name, SUM(oi.quantity) AS sold
FROM order_items oi JOIN products p ON p.id = oi.product_id
WHERE p.brand = 'Apple'
GROUP BY p.name
ORDER BY sold DESC;

Narx nega order_items da ham bor?

products.price — hozirgi narx, order_items.unit_price — sotilgan paytdagi narx. Bu takrorlanish emas: narx ertaga o‘zgarsa ham, o‘tgan buyurtmaning summasi o‘zgarmasligi kerak. Normallashtirish — «hech narsani takrorlama» emas, «bir ma’noni bir joyda saqla».

Denormalizatsiya

Ba’zan tezlik uchun ataylab takrorlashadi: masalan, users.xp — har safar xp_events ni yig‘ish o‘rniga tayyor son. Bu ongli qaror bo‘lishi va qiymatni yangilab turish yo‘li aniq bo‘lishi kerak.

Loyihalash bo‘yicha amaliy maslahatlar

  1. Avval narsalarni (entity) aniqlang: talaba, guruh, fan, baho.
  2. Har biri — alohida jadval, har birida id.
  3. «Birga-ko‘p» — tashqi kalit «ko‘p» tomonda.
  4. «Ko‘pga-ko‘p» — oraliq jadval.
  5. Ustun nomlari aniq va bir xil uslubda: created_at, student_id.
1Mashq

order_items dan buyurtma raqami 1 bo‘lgan buyurtmaning tarkibini chiqaring: mahsulot nomi (products.name), quantity va unit_price.


Esda qoldiring

  • Bir ma’no — bir joy: takrorlanish xatolarga olib keladi.
  • 1NF — katakda bitta qiymat; 2NF — butun kalitga bog‘liqlik; 3NF — ustunlar faqat kalitga bog‘liq.
  • Tarixiy qiymat (sotilgan paytdagi narx) — takrorlanish emas.
Oldingi darsALTER, DROP, TRUNCATEKeyingi darsIndekslar va EXPLAIN

Mundarija

  • Yomon misol
  • Normal shakllar
  • To‘g‘ri tuzilma
  • Narx nega order_items da ham bor?
  • Denormalizatsiya
  • Loyihalash bo‘yicha amaliy maslahatlar
  • Esda qoldiring
O‘rganishMashqMasalalarArenaReyting

SQLab