1 / 18

Ma'lumotlar Bazalari

SQL va NoSQL

PostgreSQL asosida

1-dars: Kirish va asoslar

Tayyorlagan: Claude

Mundarija

  1. Ma'lumotlar bazasi nima?
  2. Ma'lumotlar bazasining turlari
  3. SQL va NoSQL farqi
  4. PostgreSQL haqida umumiy ma'lumot
  5. PostgreSQL ni o'rnatish
  6. Asosiy SQL buyruqlari
  7. Ma'lumotlar turlari
  8. Jadvallar bilan ishlash
  9. CRUD operatsiyalari
  10. Amaliy misollar

Ma'lumotlar bazasi nima?

Ma'lumotlar bazasi - bu ma'lumotlarni tizimli ravishda saqlash, boshqarish va olish uchun mo'ljallangan tizim.

Asosiy xususiyatlari:

Foydalanuvchi
DBMS
Ma'lumotlar Bazasi

Ma'lumotlar Bazasining Turlari

1. Relatsion bazalar (SQL)

2. NoSQL bazalar

3. NewSQL

SQL vs NoSQL Taqqoslash

Xususiyat SQL NoSQL
Struktura Jadvallar, satrlar, ustunlar Hujjat, kalit-qiymat, graf
Schema Qattiq schema Moslashuvchan schema
Masshtablash Vertikal Gorizontal
ACID To'liq qo'llab-quvvatlaydi Cheklangan qo'llab-quvvatlash
Til SQL Turli API lar
Ishlatish Murakkab so'rovlar Katta hajm, tez ishlov berish

PostgreSQL haqida

PostgreSQL - eng kuchli ochiq manbali relatsion ma'lumotlar bazasi tizimi.

Tarix:

Afzalliklari:

PostgreSQL ni O'rnatish

Windows uchun:

  1. postgresql.org saytidan yuklab oling
  2. O'rnatish faylini ishga tushiring
  3. Parolni o'rnating
  4. Portni tanlang (standart: 5432)

Ubuntu/Linux uchun:

sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql
sudo systemctl enable postgresql

macOS uchun:

# Homebrew orqali
brew install postgresql
brew services start postgresql

Ulanish:

psql -U postgres -h localhost

SQL Asoslari

SQL (Structured Query Language) - ma'lumotlar bazasi bilan ishlash uchun standart til.

SQL buyruqlari turlari:

Asosiy sintaksis qoidalari:

PostgreSQL Ma'lumotlar Turlari

Asosiy turlar:

Tur Ta'rif Misol
INTEGER Butun sonlar 123, -456
VARCHAR(n) O'zgaruvchan matn 'Salom dunyo'
TEXT Uzun matn 'Uzun ma'lumotnoma...'
BOOLEAN Mantiqiy TRUE, FALSE
DATE Sana '2024-01-15'
TIMESTAMP Sana va vaqt '2024-01-15 14:30:00'
DECIMAL O'nlik sonlar 123.45

Jadval Yaratish (CREATE TABLE)

Asosiy sintaksis:

CREATE TABLE jadval_nomi (
  ustun1 tur1 cheklovlar,
  ustun2 tur2 cheklovlar,
  ...
);

Misol - Talabalar jadvali:

CREATE TABLE talabalar (
  id SERIAL PRIMARY KEY,
  ism VARCHAR(50) NOT NULL,
  familiya VARCHAR(50) NOT NULL,
  yosh INTEGER CHECK (yosh > 0),
  email VARCHAR(100) UNIQUE,
  ro'yxat_sanasi DATE DEFAULT CURRENT_DATE
);

Cheklovlar (Constraints):

Ma'lumot Qo'shish (INSERT)

Asosiy sintaksis:

INSERT INTO jadval_nomi (ustun1, ustun2, ...)
VALUES (qiymat1, qiymat2, ...);

Bitta yozuv qo'shish:

INSERT INTO talabalar (ism, familiya, yosh, email)
VALUES ('Ali', 'Valiyev', 20, '[email protected]');

Bir nechta yozuv qo'shish:

INSERT INTO talabalar (ism, familiya, yosh, email)
VALUES
  ('Olim', 'Karimov', 22, '[email protected]'),
  ('Dilnoza', 'Umarova', 19, '[email protected]'),
  ('Sardor', 'Toshev', 21, '[email protected]');

Barcha ustunlarga qiymat:

INSERT INTO talabalar
VALUES (5, 'Nargiza', 'Sultanova', 20, '[email protected]', '2024-01-15');

Ma'lumotlarni O'qish (SELECT)

Barcha ma'lumotlar:

SELECT * FROM talabalar;

Aniq ustunlar:

SELECT ism, familiya, yosh FROM talabalar;

Shart bilan (WHERE):

SELECT * FROM talabalar
WHERE yosh > 20;

Saralash (ORDER BY):

-- O'sish tartibida
SELECT * FROM talabalar
ORDER BY yosh ASC;

-- Kamayish tartibida
SELECT * FROM talabalar
ORDER BY familiya DESC;

Cheklash (LIMIT):

SELECT * FROM talabalar
ORDER BY yosh
LIMIT 5;

Ma'lumotlarni Yangilash (UPDATE)

Asosiy sintaksis:

UPDATE jadval_nomi
SET ustun1 = qiymat1, ustun2 = qiymat2
WHERE shart;

Bitta ustunni yangilash:

UPDATE talabalar
SET email = '[email protected]'
WHERE id = 1;

Bir nechta ustunni yangilash:

UPDATE talabalar
SET ism = 'Ali Akbar',
    yosh = 21
WHERE id = 1;

Shartli yangilash:

UPDATE talabalar
SET yosh = yosh + 1
WHERE ro'yxat_sanasi < '2024-01-01';

⚠️ Diqqat: WHERE sharti bo'lmasa, barcha yozuvlar yangilanadi!

Ma'lumotlarni O'chirish (DELETE)

Asosiy sintaksis:

DELETE FROM jadval_nomi
WHERE shart;

Aniq yozuvni o'chirish:

DELETE FROM talabalar
WHERE id = 5;

Shartli o'chirish:

-- 18 yoshdan kichiklar
DELETE FROM talabalar
WHERE yosh < 18;

-- Email bo'sh bo'lganlar
DELETE FROM talabalar
WHERE email IS NULL;

Barcha ma'lumotlarni o'chirish:

-- Barcha yozuvlar (jadval qoladi)
DELETE FROM talabalar;

-- Tezroq variant
TRUNCATE TABLE talabalar;

⚠️ Diqqat: WHERE sharti bo'lmasa, barcha yozuvlar o'chiriladi!

Filtrlash va Izlash

WHERE operatorlari:

-- Tenglik
SELECT * FROM talabalar WHERE yosh = 20;

-- Tengsizlik
SELECT * FROM talabalar WHERE yosh != 20;
SELECT * FROM talabalar WHERE yosh <> 20;

-- Taqqoslash
SELECT * FROM talabalar WHERE yosh > 18;
SELECT * FROM talabalar WHERE yosh <= 25;

LIKE operatori (matn izlash):

-- 'A' harfi bilan boshlanadigan
SELECT * FROM talabalar WHERE ism LIKE 'A%';

-- 'ov' bilan tugaydigan
SELECT * FROM talabalar WHERE familiya LIKE '%ov';

-- O'rtasida 'li' bo'lgan
SELECT * FROM talabalar WHERE ism LIKE '%li%';

IN operatori:

SELECT * FROM talabalar
WHERE yosh IN (19, 20, 21);

BETWEEN operatori:

SELECT * FROM talabalar
WHERE yosh BETWEEN 18 AND 25;

Mantiqiy Operatorlar

AND operatori:

SELECT * FROM talabalar
WHERE yosh > 18 AND yosh < 25;

OR operatori:

SELECT * FROM talabalar
WHERE ism = 'Ali' OR familiya = 'Karimov';

NOT operatori:

SELECT * FROM talabalar
WHERE NOT yosh = 20;

-- Yoki
SELECT * FROM talabalar
WHERE yosh NOT IN (18, 19, 20);

Murakkab shartlar:

SELECT * FROM talabalar
WHERE (yosh > 18 AND yosh < 25)
  AND (ism LIKE 'A%' OR familiya LIKE '%ov');

NULL qiymatlar:

-- Email bo'sh bo'lgan
SELECT * FROM talabalar WHERE email IS NULL;

-- Email bo'sh bo'lmagan
SELECT * FROM talabalar WHERE email IS NOT NULL;

Amaliy Misol - Universitet Tizimi

-- 1. Kafedra jadvali
CREATE TABLE kafedralar (
  id SERIAL PRIMARY KEY,
  nomi VARCHAR(100) NOT NULL,
  mudiri VARCHAR(100)
);

-- 2. Ma'lumot qo'shish
INSERT INTO kafedralar (nomi, mudiri)
VALUES
  ('Informatika', 'Prof. Karimov'),
  ('Matematika', 'Prof. Umarova'),
  ('Fizika', 'Prof. Toshev');

-- 3. Talabalar jadvali (kafedra bilan bog'langan)
CREATE TABLE talabalar (
  id SERIAL PRIMARY KEY,
  ism VARCHAR(50) NOT NULL,
  familiya VARCHAR(50) NOT NULL,
  yosh INTEGER CHECK (yosh > 0),
  kafedra_id INTEGER REFERENCES kafedralar(id),
  stipendiya DECIMAL(10,2) DEFAULT 0,
  ro'yxat_sanasi DATE DEFAULT CURRENT_DATE
);

-- 4. Talabalar ma'lumotini qo'shish
INSERT INTO talabalar (ism, familiya, yosh, kafedra_id, stipendiya)
VALUES
  ('Ali', 'Valiyev', 20, 1, 500000),
  ('Dilnoza', 'Karimova', 19, 2, 450000),
  ('Sardor', 'Umarov', 21, 1, 550000);

-- 5. Ma'lumotlarni o'qish
SELECT t.ism, t.familiya, k.nomi as kafedra
FROM talabalar t
JOIN kafedralar k ON t.kafedra_id = k.id;

-- 6. Statistika
SELECT k.nomi, COUNT(t.id) as talabalar_soni
FROM kafedralar k
LEFT JOIN talabalar t ON k.id = t.kafedra_id
GROUP BY k.id, k.nomi;

Xulosa

Bugun o'rganilgan mavzular:

Keyingi darslar:

Rahmat! Dars tugadi.

Savollar bo'lsa, so'rang! 🤔