- Database nima?
Database (ma’lumotlar bazasi) — bu ma’lumotlarni saqlash, boshqarish va qayta ishlash uchun joy.
Masalan, telefoningizdagi kontaktlar ro‘yxati ham kichik ma’lumotlar bazasi.
Internet-do‘kon saytida esa foydalanuvchilar, buyurtmalar, mahsulotlar — hammasi ma’lumotlar bazasida saqlanadi.
👉 Demak, database = katta elektron daftar.
- RDBMS nima? RDBMS (Relational Database Management System) — bu relatsion ma’lumotlar bazasi boshqaruv tizimi.
Relatsion degani = ma’lumotlar jadval (table) ko‘rinishida saqlanadi.
Har bir jadvalda qator (row) va ustun (column) bo‘ladi.
Id | Name | Age |
---|---|---|
1 | Ali | 20 |
2 | Dilnoz | 22 |
RDBMS misollari: SQL Server, PostgreSQL, MySQL, Oracle.
3. SQL va NoSQL farqi
SQL (RDBMS)
- Jadval ko‘rinishida (rows, columns) saqlanadi.
- Qattiq struktura (schema) bo‘ladi.
- Kuchli JOIN va transaction qo‘llab-quvvatlaydi.
- Misollar: SQL Server, PostgreSQL, MySQL.
NoSQL
- Jadval emas, balki hujjat, kalit-qiymat, grafik kabi formatlarda saqlaydi.
- Qattiq schema yo‘q → moslashuvchan.
- Juda katta hajmdagi ma’lumotlarda (Big Data) yaxshi ishlaydi.
- Misollar: MongoDB (document), Redis (key-value).
👉 Esda qolarli:
- SQL = an’anaviy daftar (qatordan-ustunlardan iborat)
- NoSQL = shaxsiy daftar (kim qanday yozsa, shunday turadi)
Xususiyat | SQL (RDBMS) | NoSQL |
---|---|---|
Ma’lumot formati | Jadval (rows va columns) | Hujjat, kalit-qiymat, grafik, columnar |
Schema | Qattiq (oldindan belgilangan) | Moslashuvchan (schema-less) |
Moslik | Murakkab JOIN va transaction’lar | Katta hajm, tezkor va kengayuvchan |
Kengayish | Vertical scaling (serverni kuchaytirish) | Horizontal scaling (ko‘p server qo‘shish) |
Qo‘llanish sohasi | An’anaviy ilovalar, moliya, ERP, CRM | Big Data, real-time analytics, IoT |
Misollar | SQL Server, PostgreSQL, MySQL, Oracle | MongoDB, Redis, Cassandra, Neo4j |
4. SQL Server va PostgreSQL
SQL Server → Microsoft ishlab chiqqan kuchli RDBMS. Korporativ loyihalarda keng qo‘llanadi.
PostgreSQL → Ochiq manbali (open-source) RDBMS. Juda kuchli va moslashuvchan.
Har ikkalasi ham SQL tilida ishlaydi, lekin sintaksisda ozgina farqlar bo‘lishi mumkin.
👉 Esda qolsin:
SQL Server = pullik, Microsoft ekotizimida
PostgreSQL = bepul, kuchli open-source
5. SQL asosiy komandalar
SELECT * FROM Users;
👉 Users jadvalidagi barcha ma’lumotlarni olib keladi.
INSERT — yangi ma’lumot qo‘shish
INSERT INTO Users (Name, Age)
VALUES ('Ali', 20);
👉 Users jadvaliga yangi foydalanuvchi qo‘shadi.
UPDATE — ma’lumotni yangilash
UPDATE Users
SET Age = 25
WHERE Name = 'Ali';
👉 Ali ismli foydalanuvchining yoshini 25 ga o‘zgartiradi.
DELETE — ma’lumotni o‘chirish
DELETE FROM Users
WHERE Name = 'Ali';
👉 Ali ismli foydalanuvchini o‘chiradi.
Primary Key va Foreign Key
Primary Key
Jadvaldagi har bir qatorni unikal aniqlab beradi.
Masalan, Users jadvalidagi Id ustuni.
Takrorlanmaydi va bo‘sh bo‘lmaydi.
CREATE TABLE Users (
Id INT PRIMARY KEY,
Name NVARCHAR(50),
Age INT
);
Foreign Key
Bir jadvaldagi ustun boshqa jadvaldagi primary key ga ulanadi.
Jadval o‘rtasida bog‘lanish yaratadi.
CREATE TABLE Orders (
OrderId INT PRIMARY KEY,
UserId INT,
FOREIGN KEY (UserId) REFERENCES Users(Id)
);
👉 Bu yerda Orders.UserId → Users.Id ga ulanadi.
NULL qiymat
NULL = qiymat yo‘qligi (bo‘sh, noma’lum).
Bu 0 emas, bo‘sh string emas.
Masalan:
Age = NULL → yosh kiritilmagan.
NULL bilan ishlash
SELECT * FROM Users WHERE Age IS NULL;
👉 Yoshi kiritilmagan foydalanuvchilarni chiqaradi.
SELECT * FROM Users WHERE Age IS NOT NULL;
- JOIN turlari JOIN — bu ikki yoki undan ortiq jadvallarni bog‘lab, ma’lumotni birlashtirish. 🔹 INNER JOIN Faqat ikkala jadvalda ham mos keladigan yozuvlarni qaytaradi.
SELECT u.Name, o.OrderId
FROM Users u
INNER JOIN Orders o ON u.Id = o.UserId;
👉 Faqat buyurtma qilgan foydalanuvchilar chiqadi.
🔹 LEFT JOIN
Chap jadvaldagi hamma yozuvlar chiqadi, o‘ng jadvalda mos kelmasa → NULL.
SELECT u.Name, o.OrderId
FROM Users u
LEFT JOIN Orders o ON u.Id = o.UserId;
👉 Hamma foydalanuvchilar chiqadi, buyurtmasi bo‘lmasa NULL.
🔹 RIGHT JOIN
O‘ng jadvaldagi hamma yozuvlar chiqadi, chap jadvalda mos kelmasa → NULL.
SELECT u.Name, o.OrderId
FROM Users u
RIGHT JOIN Orders o ON u.Id = o.UserId;
👉 Hamma buyurtmalar chiqadi, foydalanuvchisi yo‘q bo‘lsa NULL.
🔹 FULL OUTER JOIN
Ikkala jadvaldan hamma yozuvlarni qaytaradi, mos kelmasa → NULL.
SELECT u.Name, o.OrderId
FROM Users u
FULL OUTER JOIN Orders o ON u.Id = o.UserId;
👉 Hamma foydalanuvchilar va hamma buyurtmalar chiqadi.
- WHERE va HAVING farqi
WHERE → qatorlarni guruhlashdan oldin filtrlash uchun.
HAVING → GROUP BY’dan keyin filtr qilish uchun.
-- WHERE bilan (oddiy filtr)
SELECT * FROM Users
WHERE Age > 18;
-- HAVING bilan (agregat filtr)
SELECT Age, COUNT(*) AS CountUsers
FROM Users
GROUP BY Age
HAVING COUNT(*) > 2;
👉 Esda qolsin:
WHERE = oddiy shart
HAVING = guruhlangan natijaga shart
- GROUP BY va ORDER BY GROUP BY Qatorlarni guruhlaydi va agregat funksiyalar bilan ishlaydi.
SELECT Age, COUNT(*) AS CountUsers
FROM Users
GROUP BY Age;
👉 Har bir yosh nechta borligini ko‘rsatadi.
ORDER BY
Natijani saralaydi.
// kamayish buyicha tartiblash
SELECT * FROM Users
ORDER BY Age DESC;
//usish buyicha tartiblash
SELECT * FROM Users
ORDER BY Age ASC;
👉 Yosh bo‘yicha kamayish tartibida chiqaradi.
- Index nima?
Index — bu ma’lumotni tezroq topish uchun maxsus tuzilma (xuddi kitobdagi “alfavit bo‘yicha ko‘rsatkich” kabi).
Foydasi: SELECT tezlashadi.
Kamchiligi: INSERT/UPDATE/DELETE sekinlashishi mumkin (chunki index ham yangilanadi).
CREATE INDEX idx_users_name ON Users(Name);
👉 Endi WHERE Name = 'Ali' so‘rovi juda tez ishlaydi.
- Simple SELECT + Filtering
SELECT Name, Age
FROM Users
WHERE Age > 18 AND Name LIKE 'A%';
// qaysidur ism ni olmoqchi bulsa '_' shunaqa belgi orqali topamiz
`
👉 Bu yerda:
Faqat Age > 18 bo‘lgan foydalanuvchilar
Ismi A harfi bilan boshlanuvchilar chiqadi
📌 Xulosa
JOIN → jadvallarni bog‘laydi (INNER, LEFT, RIGHT, FULL).
WHERE → oddiy filtr, HAVING → guruhlangan natijaga filtr.
GROUP BY → ma’lumotni guruhlash, ORDER BY → saralash.
Index → tez qidirish uchun “kitobdagi ko‘rsatkich” kabi.
SELECT + WHERE → kerakli ma’lumotni tanlab olish.
Top comments (0)