DEV Community

Elshod Ibodullayev
Elshod Ibodullayev

Posted on

SQL,PostgreSQL, Database RDBMS, Sql NoSql farqi

  1. 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.

  1. 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 malumotlarni olib keladi.
INSERT  yangi malumot qoshish
INSERT INTO Users (Name, Age)
VALUES ('Ali', 20);
👉 Users jadvaliga yangi foydalanuvchi qoshadi.
UPDATE  malumotni yangilash
UPDATE Users
SET Age = 25
WHERE Name = 'Ali';


👉 Ali ismli foydalanuvchining yoshini 25 ga ozgartiradi.
DELETE  malumotni ochirish
DELETE FROM Users
WHERE Name = 'Ali';


👉 Ali ismli foydalanuvchini ochiradi.
Primary Key va Foreign Key
Primary Key

Jadvaldagi har bir qatorni unikal aniqlab beradi.

Masalan, Users jadvalidagi Id ustuni.

Takrorlanmaydi va bosh bolmaydi.

CREATE TABLE Users (
    Id INT PRIMARY KEY,
    Name NVARCHAR(50),
    Age INT
);
Foreign Key

Bir jadvaldagi ustun boshqa jadvaldagi primary key ga ulanadi.

Jadval ortasida boglanish 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 yoqligi (bosh, nomalum).

Bu 0 emas, bosh 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;
Enter fullscreen mode Exit fullscreen mode
  1. 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;
Enter fullscreen mode Exit fullscreen mode

👉 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;
Enter fullscreen mode Exit fullscreen mode

👉 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;
Enter fullscreen mode Exit fullscreen mode

👉 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;
Enter fullscreen mode Exit fullscreen mode

👉 Hamma foydalanuvchilar va hamma buyurtmalar chiqadi.

  1. 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;
Enter fullscreen mode Exit fullscreen mode

👉 Esda qolsin:
WHERE = oddiy shart
HAVING = guruhlangan natijaga shart

  1. GROUP BY va ORDER BY GROUP BY Qatorlarni guruhlaydi va agregat funksiyalar bilan ishlaydi.
SELECT Age, COUNT(*) AS CountUsers
FROM Users
GROUP BY Age;
Enter fullscreen mode Exit fullscreen mode

👉 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;

Enter fullscreen mode Exit fullscreen mode

👉 Yosh bo‘yicha kamayish tartibida chiqaradi.

  1. 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.

  1. Simple SELECT + Filtering
SELECT Name, Age
FROM Users
WHERE Age > 18 AND Name LIKE 'A%';
// qaysidur  ism ni olmoqchi bulsa '_' shunaqa belgi orqali topamiz 
Enter fullscreen mode Exit fullscreen mode


`

👉 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)