PostgreSQL asoslari: SELECT, JOIN va agregatlar
lockThis content isn't available in English yetAvailable in: O'zbek
terminal
Hands-on labs
Interactive tasks attached to this lesson — complete them in a real Kubernetes environment and check the result.
terminal
PostgreSQL: yangi jadval sxemasini yaratish (CREATE TABLE, tiplar, PK)
Osonbolt+10 XP
Monitoring uchun yangi jadval kerak: har server haqida ma'lumot saqlanadi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. Vazifa hn bazasida tugun jadvalini yarating: id — integer, PRIMARY KEY (serial ishlatsangiz ham bo'ladi) nom — text, NOT NULL, UNIQUE ip — inet turi (PostgreSQL ning maxsus turi), NOT NULL yaratilgan — timestamptz, sukut qiymati now() ⚠Jadvalni haqiqatan bazada yarating (psql orqali), fayl yozish yetarli emas. Muvaffaqiyat mezoni (jonli) tugun jadvali katalogda mavjud; ustun turlari, PK, NOT NULL va UNIQUE aynan talab qilinganday
terminal
PostgreSQL: ma'lumot kiritish va o'qish (INSERT, SELECT)
Osonbolt+10 XP
Jadval bor, lekin bo'sh — inventarni to'ldirish kerak. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. Vazifa server jadvaliga AYNAN uch qator qo'shing: ('cache-01','prod',4,16) ('cache-02','prod',4,16) ('lab-01','dev',2,2) (ustunlar tartibi: nom, muhit, yadro, xotira gb) ⚠Bitta INSERT da uchtasini kiritish mumkin — shu usulni ishlating. Muvaffaqiyat mezoni (jonli) Jadvalda aynan 3 qator; qiymatlar to'g'ri; prod muhitida 2 ta server
terminal
PostgreSQL: filtr va tartiblash (WHERE, ORDER BY, LIMIT)
Osonbolt+10 XP
Inventardan eng kuchli ikki ishlab chiqarish serverini ajratib olish kerak. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. Vazifa /root/db/query.sql fayliga so'rov yozing: faqat muhit = 'prod' serverlar nom va yadro ustunlari (shu tartibda) yadro bo'yicha KAMAYISH, teng bo'lsa nom bo'yicha O'SISH tartibida faqat birinchi 2 qator Muvaffaqiyat mezoni (jonli) Natija aynan db-01|8 va web-01|4 qatorlari (shu tartibda)
terminal
PostgreSQL: yangilash va o'chirish (UPDATE, DELETE, RETURNING)
Osonbolt+10 XP
Ishlab chiqarishda ikki o'zgarish: web-03 serveriga yadro qo'shildi va eskirgan xizmat olib tashlanadi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. Vazifa Ikki amalni bajaring: web-03 serverining yadro qiymatini 4 ga, xotira gb ni 8 ga yangilang legacy-agent nomli xizmatni jadvaldan o'chiring ⚠Ikkalasini ham WHERE bilan ANIQ cheklang — butun jadvalni yangilab yubormang. Muvaffaqiyat mezoni (jonli) web-03 yangi qiymatlar bilan; boshqa serverlar TEGILMAGAN; xizmatlar soni 7 ga tushgan va legacy-agent yo'q
terminal
PostgreSQL: jadvallarni birlashtirish (INNER JOIN)
Osonbolt+20 XP
Har xizmat qaysi serverda ishlayotganini bir jadvalda ko'rish kerak. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. Vazifa /root/db/query.sql ga so'rov yozing: xizmat va server jadvallarini server id = server.id bo'yicha birlashtiring ustunlar: server nomi, xizmat nomi, port (shu tartibda) tartib: server nomi bo'yicha, keyin xizmat nomi bo'yicha (ikkisi ham o'sish) serveri BIRIKTIRILMAGAN xizmat natijaga TUSHMASLIGI kerak Muvaffaqiyat mezoni (jonli) Natija 7 qator (biriktirilmagan xizmat tushmaydi) va aynan kutilgan tartibda
terminal
PostgreSQL: LEFT JOIN va NULL semantikasi
Osonbolt+20 XP
Auditorlar hamma xizmatni ko'rishni xohlaydi — serveri biriktirilmaganini ham. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. Vazifa /root/db/query.sql ga so'rov yozing: BARCHA xizmatlar ko'rinishi kerak (serveri yo'q bo'lsa ham) ustunlar: xizmat nomi, server nomi server biriktirilmagan bo'lsa server nomi o'rniga BIRIKTIRILMAGAN matni chiqsin tartib: xizmat nomi bo'yicha o'sish Muvaffaqiyat mezoni (jonli) Natija 8 qator; legacy-agent uchun BIRIKTIRILMAGAN ko'rinadi
terminal
PostgreSQL: guruhlash va agregatlar (GROUP BY, count, sum)
Osonbolt+20 XP
Rahbariyat muhitlar bo'yicha resurs taqsimotini so'radi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. Vazifa /root/db/query.sql ga so'rov yozing: muhit bo'yicha guruhlab: muhit nomi, serverlar soni, yadrolar YIG'INDISI ustunlar shu tartibda tartib: muhit nomi bo'yicha o'sish Muvaffaqiyat mezoni (jonli) Natija aynan dev|1|2, prod|3|16, stage|2|10
terminal
PostgreSQL: HAVING va WHERE farqi
Osonbolt+20 XP
Bir necha xizmat ishlaydigan (ya'ni yuklamasi zich) serverlarni ajratish kerak. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. Vazifa /root/db/query.sql ga so'rov yozing: server nomi va undagi xizmatlar soni FAQAT xizmatlari soni 1 dan KATTA bo'lgan serverlar tartib: server nomi bo'yicha o'sish ⚠Agregat natijasi ustidan filtr qilinadi — where bunga yaramaydi. Muvaffaqiyat mezoni (jonli) Natija aynan db-01|2 va web-01|2; so'rovda having ishlatilgan
terminal
PostgreSQL: DISTINCT, BETWEEN va ILIKE
Osonbolt+20 XP
Tarmoq auditi: n harfi bilan boshlanadigan xizmatlar egallagan noyob portlar ro'yxati kerak (80..9100 oralig'ida). Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. Vazifa /root/db/query.sql ga so'rov yozing: faqat port 80 dan 9100 gacha (ikki chegara ham kiradi) — BETWEEN ishlating xizmat nomi n harfi bilan boshlanadi, KATTA-KICHIK harf farqsiz — ILIKE NOYOB portlar (takror yo'q) — DISTINCT o'sish tartibida Muvaffaqiyat mezoni (jonli) Natija aynan 80, 8080, 9100
terminal
PostgreSQL: xatolar hisoboti (A temasi yakuni)
Murakkabbolt+30 XP
Navbatchi uchun hisobot: qaysi xizmatda qancha XATO hodisa bo'lgan. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. Vazifa /root/db/query.sql ga so'rov yozing: hodisa va xizmat jadvallarini birlashtiring faqat daraja = 'error' hodisalar xizmat nomi bo'yicha guruhlab xatolar sonini chiqaring ustunlar: xizmat nomi, xatolar soni tartib: xatolar soni KAMAYISHI, teng bo'lsa xizmat nomi O'SISHI bo'yicha ⚠Xatosi yo'q xizmatlar natijaga tushmasligi kerak Muvaffaqiyat mezoni (jonli) Natija aynan nginx|2 va postgres|2; JOIN + WHERE + GROUP BY + ORDER BY birga
