MySQL nima? Relational DB tushunchasi, boshqa DB lar bilan farqi
Muammodan boshlaylik
Kichik do'kon egasi savdolarni Excel da yuritadi. Bir varaqda mijozlar, bir varaqda mahsulotlar, bir varaqda buyurtmalar. Bir yildan keyin:
- Fayl 80 MB, ochilishi 2 daqiqa
- Ikki sotuvchi bir vaqtda o'zgartirdi — birining ishi yo'qoldi
- Mijoz telefon raqamini o'zgartirdi — uni 340 ta buyurtma qatorida qo'lda yangilash kerak
- "Toshkentdagi mijozlarning o'tgan oydagi o'rtacha cheki" degan savolga javob topish — yarim kun
Bu muammolarning hammasi uchun bitta vosita bor — ma'lumotlar bazasi boshqaruv tizimi (DBMS). Dunyodagi eng mashhurlaridan biri — MySQL.
Ma'lumotlar bazasi nima?
Ma'lumotlar bazasi — tartiblangan ma'lumotlar to'plami va ular bilan ishlash qoidalari. DBMS esa shu bazani boshqaradigan dastur: ma'lumotni saqlaydi, qidiradi, himoya qiladi, bir vaqtda ko'p foydalanuvchiga xizmat qiladi.
MySQL — server dastur. U kompyuterda doimiy ishlab turadi va so'rovlarni kutadi. Sizning ilovangiz (PHP, Node.js, Python) unga ulanib, SQL tilida savol beradi va javob oladi.
┌──────────────┐ SQL so'rov ┌──────────────┐
│ Ilova │ ────────────────→ │ MySQL server │ ←→ Diskdagi fayllar
│ (PHP, Node) │ ←──────────────── │ │
└──────────────┘ natija └──────────────┘
Relational — jadvallar va munosabatlar
MySQL — relational (relyatsion) baza. Ma'lumot jadvallarda saqlanadi, jadvallar esa bir-biri bilan bog'langan.
mijozlar jadvali:
| id | ism | telefon | shahar |
|---|---|---|---|
| 1 | Aziz Karimov | +998901234567 | Toshkent |
| 2 | Malika Rahimova | +998935554433 | Samarqand |
buyurtmalar jadvali:
| id | mijoz_id | summa | sana |
|---|---|---|---|
| 101 | 1 | 250000 | 2026-10-01 |
| 102 | 1 | 85000 | 2026-10-15 |
| 103 | 2 | 1200000 | 2026-10-20 |
Buyurtmada mijoz ismi va telefoni yo'q — faqat mijoz_id. Aziz telefonini o'zgartirsa — faqat bitta joyda (mijozlar jadvalida) o'zgartiriladi. Barcha buyurtmalar avtomatik yangi raqamni "ko'radi".
Bu — relational bazaning asosiy g'oyasi: har bir ma'lumot bir joyda, qolgan joylar unga ishora qiladi.
Asosiy atamalar
| Atama | Ma'nosi |
|---|---|
| Table (jadval) | Bir turdagi narsalar to'plami: mijozlar, buyurtmalar |
| Row (qator, yozuv) | Bitta narsa: bitta mijoz |
| Column (ustun) | Xususiyat: ism, telefon. Har birining qat'iy turi bor |
| Primary key | Har bir qatorni noyob aniqlaydigan ustun (id) |
| Foreign key | Boshqa jadvalning primary key iga ishora (mijoz_id) |
| SQL | Bazaga savol berish tili |
SQL — bazaning tili
SQL (Structured Query Language) — deyarli barcha relational bazalar tushunadigan til. U "nima kerak" ni aytadi, "qanday topish" ni emas:
SELECT m.ism, SUM(b.summa) AS jami
FROM mijozlar m
JOIN buyurtmalar b ON b.mijoz_id = m.id
WHERE m.shahar = 'Toshkent'
GROUP BY m.ism
ORDER BY jami DESC;
"Toshkentlik mijozlarni buyurtmalari jami bo'yicha ko'rsat" — va MySQL eng tez yo'lni o'zi topadi. Excel dagi yarim kunlik ish — bir soniyadan kam.
SQL buyruqlari guruhlari:
| Guruh | Buyruqlar | Nima uchun |
|---|---|---|
| DDL (Definition) | CREATE, ALTER, DROP |
Tuzilmani boshqarish |
| DML (Manipulation) | SELECT, INSERT, UPDATE, DELETE |
Ma'lumot bilan ishlash |
| DCL (Control) | GRANT, REVOKE |
Huquqlar |
| TCL (Transaction) | BEGIN, COMMIT, ROLLBACK |
Tranzaksiyalar |
Kurs aynan shu tartibda boradi.
MySQL ning tarixi
- 1995 — Shvetsiyadagi MySQL AB kompaniyasi chiqardi. Nomi — asoschi Monty Widenius ning qizi My ismidan
- 2000-yillar — LAMP stack (Linux, Apache, MySQL, PHP) internetning asosiga aylandi. Facebook, YouTube, Twitter, Wikipedia — hammasi MySQL da o'sgan
- 2008 — Sun Microsystems sotib oldi, 2010 — Oracle
- 2009 — Monty Oracle dan xavotirlanib, MySQL ning ochiq "egizagi" — MariaDB ni yaratdi
- Bugun — MySQL 8.x (LTS versiya — 8.4), hali ham dunyodagi eng ko'p ishlatiladigan ochiq bazalardan biri
Boshqa bazalar bilan farqi
MySQL va PostgreSQL
Ikkalasi ham kuchli, ochiq, relational. Farqlar nozik:
| MySQL | PostgreSQL | |
|---|---|---|
| Kuchli tomoni | Oddiylik, o'qish tezligi, keng tarqalganlik | SQL standartiga qat'iy moslik, murakkab so'rovlar, kengaytmalar |
| Hosting | Deyarli har qanday arzon hostingda tayyor | Kamroq, lekin bulut xizmatlarida hamma joyda |
| Ekotizim | WordPress, Laravel, Magento | Django, GIS, analitika |
| JSON | Bor (JSON turi) |
Kuchliroq (JSONB + indekslar) |
Boshlovchi uchun ikkalasi ham yaxshi tanlov. Biri bilan ishlashni o'rgansangiz, ikkinchisiga o'tish — bir necha kunlik ish. Saytda alohida PostgreSQL kursi ham bor.
MySQL va MongoDB
| MySQL (relational) | MongoDB (document) | |
|---|---|---|
| Tuzilma | Qat'iy jadvallar va ustunlar | Moslashuvchan JSON hujjatlar |
| Munosabatlar | JOIN — kuchli |
Ichma-ich hujjatlar yoki qo'lda |
| Tranzaksiyalar | Asosiy imkoniyat | Bor, lekin kamroq ishlatiladi |
| Qachon | Bog'liq ma'lumotlar: buyurtmalar, to'lovlar, foydalanuvchilar | Tuzilmasi tez-tez o'zgaradigan, mustaqil hujjatlar |
Qoida: ma'lumotlaringiz o'zaro bog'langan bo'lsa (deyarli har doim shunday) — relational baza bilan boshlang.
SQLite
Server emas — oddiy fayl. Mobil ilovalar, brauzerlar, kichik vositalar ichida. Bir vaqtda ko'p yozuvchi foydalanuvchi bo'lgan veb-sayt uchun — MySQL yoki PostgreSQL.
Nima uchun shunday?
Nima uchun ma'lumotni bir necha jadvalga bo'lamiz — hammasini bitta katta jadvalda saqlash oddiyroq emasmi?
Bitta jadvalda har bir buyurtma qatorida mijozning ismi, telefoni, manzili qaytariladi. Mijoz 50 ta buyurtma bergan bo'lsa — telefon 50 marta yozilgan. Uni o'zgartirganda bitta qatorni unutsangiz — baza o'ziga zid bo'lib qoladi: bitta odamning ikki xil telefoni. Relational model 1970-yilda Edgar Codd tomonidan aynan shu muammoni hal qilish uchun matematik asosda ishlab chiqilgan. Bu "normalizatsiya" deyiladi — 46-darsda batafsil.
Xulosa
Eslab qoling:
- MySQL — server dastur; ilova unga SQL so'rov yuboradi
- Relational: ma'lumot jadvallarda, jadvallar
idorqali bog'langan - Har bir ma'lumot bir joyda saqlanadi, qolgan joylar unga ishora qiladi
- SQL: DDL (tuzilma), DML (ma'lumot), DCL (huquqlar), TCL (tranzaksiyalar)
- MariaDB — MySQL ning ochiq egizagi, deyarli to'liq mos
- Bog'liq ma'lumotlar uchun relational baza — standart tanlov
Keyingi dars
2-dars: O'rnatish — Windows, Mac, Linux, Docker bilan