MySQL nima? Relational DB tushunchasi, boshqa DB lar bilan farqi

~15 daq · MySQL · Kirish va O'rnatish

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 id orqali 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