Davlat ro'yxatidan o'tgan nodavlat notijorat tashkilot 1052p-son guvohnoma

Maqolalar

SQL: ma'lumotlar bazasiga birinchi so'rov

12 daqiqa o'qish

SQL asoslari yangi boshlovchilar uchun: SELECT, WHERE, ORDER BY, LIMIT, COUNT, AVG, GROUP BY va JOIN misollarda, bepul mashq vositalari va xatolar.

Maktab jurnali, poliklinika navbati, bank ilovasi, onlayn do’kon katalogi — bularning barchasi ortida ma’lumotlar bazasi turadi, undan ma’lumot olish uchun esa ko’pincha SQL tili ishlatiladi. Birinchi so’rovni yozish uchun dasturchi bo’lish shart emas. Bu qo’llanmada ma’lumotlar bazasi va jadval nima ekanini Excel bilan solishtirib tushuntiramiz, kompyuterda bepul mashq muhitini tayyorlaymiz, so’ng SELECT, FROM, WHERE, ORDER BY, LIMIT, COUNT, SUM, AVG, GROUP BY va oddiy JOIN’ni ikki kichik jadval misolida ko’rib chiqamiz. Oxirida keng tarqalgan xatolar, amaliy mashq va tekshiruv ro’yxati bor.

Ma’lumotlar bazasi va jadval nima

Ma’lumotlar bazasi — ma’lumotlarni tartibli saqlash va ulardan tez qidirish uchun mo’ljallangan tizim. Eng keng tarqalgan turi — relyatsion baza: unda ma’lumotlar jadvallarda saqlanadi, jadvallar esa o’zaro bog’lanadi.

Agar siz Excel yoki Google Sheets bilan ishlagan bo’lsangiz, ko’p tushunchalar tanish:

Excel’daMa’lumotlar bazasida
Fayl (ishchi kitob)Baza
VaraqJadval
Ustun sarlavhasiUstun (maydon) nomi
QatorYozuv
FiltrWHERE sharti
SaralashORDER BY
Yig’ma jadval (Pivot table)GROUP BY
VLOOKUP / XLOOKUPJOIN

Farqlar ham bor va ular muhim:

  • Ustun turi qat’iy. yosh ustuniga son belgilangan bo’lsa, u yerga “20 yosh” deb yozib bo’lmaydi.
  • Hajm va foydalanuvchilar. Baza millionlab yozuvlar va bir vaqtda ishlaydigan ko’p xodim uchun mo’ljallangan.
  • Formula katakda emas, so’rovda. Siz so’rov yozasiz, baza natijani yangi jadval ko’rinishida qaytaradi, asl ma’lumot esa o’zgarmaydi.

Bazadagi bitta jadval yoki jadvallar to’plami ko’pincha dataset deb ham ataladi — ayniqsa ma’lumot tahlil uchun tayyorlanganda.

SQL nima va nima uchun kerak

SQL (Structured Query Language — tuzilmali so’rovlar tili) — relyatsion bazalar bilan ishlash uchun standart til. SQL’da “qanday qidirish kerak”ni emas, “nima kerak”ni yozasiz. Masalan: “Toshkentdagi o’quvchilarning ismlarini ber”. Qidiruvni qanday tez bajarishni bazaning o’zi hal qiladi.

SQL bilan ishlaydigan ko’plab tizimlar bor: SQLite, MySQL, PostgreSQL, Microsoft SQL Server, Oracle va boshqalar. Ularning har birida o’ziga xos qo’shimchalar bor (bu “dialekt” deyiladi), lekin bu maqoladagi asosiy buyruqlar deyarli hamma joyda bir xil ishlaydi. Bitta farqni oldindan aytib qo’yamiz: natija qatorlarini cheklovchi LIMIT SQLite, MySQL va PostgreSQL’da ishlaydi, Microsoft SQL Server’da esa buning o’rniga TOP ishlatiladi.

SQL ma’lumotlar tahlili bilan shug’ullanuvchilar uchun kundalik asosiy vosita. Buxgalter, menejer yoki o’quv markazi xodimi ham u bilan “shu oy nechta yangi o’quvchi keldi” kabi savollarga dasturchini kutmasdan o’zi javob topadi.

Mashq uchun bepul muhit

SQL so’rov yozib o’rganiladi va buning uchun server shart emas.

  • SQLite — butun baza bitta faylda saqlanadigan bepul tizim, deyarli sozlash talab qilmaydi.
  • DB Browser for SQLite — SQLite bazalarini oynali interfeysda ochish va so’rov yozish uchun bepul, ochiq kodli dastur. Windows, macOS va Linux uchun rasmiy saytidan (sqlitebrowser.org) yuklab olinadi.
  • Onlayn SQL muharrirlari (masalan, SQLite Online yoki DB Fiddle) — hech narsa o’rnatmasdan brauzerda mashq qilish uchun. Ularga shaxsiy yoki ish ma’lumotlarini yuklamang.

DB Browser’da baza yaratish

  1. Dasturni oching va New Database tugmasini bosing. Faylga nom bering, masalan, oquv_markazi.db, va saqlang.
  2. Jadval yaratish oynasi (Edit table definition) ochiladi — uni Cancel bilan yoping, jadvallarni so’rov orqali yaratamiz.
  3. Execute SQL yorlig’iga o’ting va quyidagi skriptni nusxalab qo’ying.
  4. Execute all tugmasini yoki F5 ni bosing.
  5. O’zgarishlarni faylga yozish uchun Write Changes (Ctrl + S) ni bosing. Bu tugma bosilmaguncha o’zgarishlar faylga yozilmaydi.
  6. Browse Data yorlig’ida jadvallar paydo bo’lganini tekshiring.
CREATE TABLE kurslar (
  id INTEGER PRIMARY KEY,
  nomi TEXT,
  davomiylik_hafta INTEGER
);

CREATE TABLE oquvchilar (
  id INTEGER PRIMARY KEY,
  ism TEXT,
  shahar TEXT,
  yosh INTEGER,
  kurs_id INTEGER,
  ball INTEGER
);

INSERT INTO kurslar VALUES
  (1, 'Kompyuter savodxonligi', 8),
  (2, 'Ingliz tili', 12),
  (3, 'Data analitika', 10),
  (4, 'Mobilografiya', 6);

INSERT INTO oquvchilar VALUES
  (1, 'Dilnoza', 'Toshkent', 19, 3, 88),
  (2, 'Jasur', 'Samarqand', 24, 1, 75),
  (3, 'Malika', 'Namangan', 17, 2, 92),
  (4, 'Sardor', 'Toshkent', 31, 3, 64),
  (5, 'Nodira', 'Buxoro', 22, 1, 81),
  (6, 'Bekzod', 'Qo''qon', 27, 2, NULL),
  (7, 'Gulnora', 'Samarqand', 35, 3, 79),
  (8, 'Otabek', 'Toshkent', 20, 4, 70);

Bu shartli o’quv markazi: ismlar, yoshlar va ballar o’ylab topilgan. kurs_id — kurslar jadvalidagi id ga ishora. Bekzodning bali hali qo’yilmagan — NULL, ya’ni “qiymat yo’q”. Jadval va ustun nomlarida apostrof va probel ishlatmadik (oquvchilar, kurs_id) — bu ko’p muammoning oldini oladi.

Agar ma’lumotingiz Excel’da bo’lsa, uni CSV formatida saqlab, DB Browser’da File → Import → Table from CSV file orqali jadvalga aylantirish mumkin.

Birinchi so’rovlar: SELECT, FROM, WHERE

SELECT va FROM

Eng oddiy so’rov ikki qismdan iborat: SELECT — qaysi ustunlar kerak, FROM — qaysi jadvaldan.

SELECT ism, shahar FROM oquvchilar;

Natija — sakkiz o’quvchining ismi va shahri. Barcha ustunlar uchun yulduzcha ishlatiladi: SELECT * FROM oquvchilar;, lekin katta jadvallarda faqat keraklilarini yozing. Buyruqlarni katta harf bilan yozish shart emas, ammo o’qishga oson. Nuqtali vergul so’rovni keyingisidan ajratadi.

WHERE: shart bo’yicha tanlash

WHERE Excel’dagi filtr vazifasini bajaradi: faqat shartga mos qatorlarni qoldiradi.

SELECT ism, shahar FROM oquvchilar
WHERE shahar = 'Toshkent';
ismshahar
DilnozaToshkent
SardorToshkent
OtabekToshkent

Matnli qiymat bittalik qo’shtirnoq ichida yoziladi, son esa qo’shtirnoqsiz: WHERE yosh > 25 — natijada Sardor (31), Bekzod (27) va Gulnora (35) qoladi. Taqqoslash belgilari: =, <> (teng emas), >, <, >=, <=.

Bir nechta shart: AND, OR, IN, LIKE

  • WHERE shahar = 'Samarqand' AND yosh < 30 — ikkala shart ham bajarilishi kerak. Natija: Jasur.
  • WHERE shahar = 'Buxoro' OR shahar = 'Namangan' — kamida bittasi. Natija: Malika va Nodira.
  • WHERE shahar IN ('Buxoro', 'Namangan') — oldingi so’rovning qisqa yozilishi.
  • WHERE yosh BETWEEN 18 AND 25 — oraliq, chegaralar ham kiradi.
  • WHERE ism LIKE 'S%' — “S” harfi bilan boshlanadigan ismlar. % — istalgan miqdordagi belgi. Natija: Sardor.

AND va OR aralash ishlatilsa, qavs qo’ying: WHERE (shahar = 'Buxoro' OR shahar = 'Namangan') AND yosh > 18. Qavssiz so’rov siz kutgandan boshqacha natija berishi mumkin.

Saralash va cheklash: ORDER BY, LIMIT

ORDER BY natijani tartiblaydi: ASC — o’sish bo’yicha (standart), DESC — kamayish bo’yicha. LIMIT esa natijadagi qatorlar sonini cheklaydi. Ikkalasi birga “eng yaxshi uchtalik” kabi savollarga javob beradi:

SELECT ism, ball FROM oquvchilar
ORDER BY ball DESC
LIMIT 3;
ismball
Malika92
Dilnoza88
Nodira81

ORDER BY shahar, ism — avval shahar, so’ng ism bo’yicha. NULL qayerga tushishi tizimga bog’liq: SQLite’da u eng kichik qiymat, shuning uchun DESC da oxirida turadi.

Muhim qoida: ORDER BY yozilmasa, qatorlar tartibi kafolatlanmaydi. Tartib kerak bo’lsa, uni doim aniq yozing.

Hisoblash: COUNT, SUM, AVG va GROUP BY

Agregat funksiyalar

Agregat funksiyalar ko’p qatordan bitta natija chiqaradi — Excel’dagi SUM, AVERAGE va COUNT formulalariga o’xshaydi.

SELECT COUNT(*) AS jami,
       COUNT(ball) AS ball_bor,
       ROUND(AVG(ball), 1) AS ortacha_ball,
       MAX(ball) AS eng_yuqori
FROM oquvchilar;
jamiball_borortacha_balleng_yuqori
8778.492

COUNT(*) barcha qatorlarni sanaydi — 8 ta, COUNT(ball) esa faqat bali borlarini — 7 ta, chunki Bekzodniki NULL. AVG ham NULL’ni hisobga olmay, yetti kishi bo’yicha hisoblaydi. AS ustunga nom beradi, ROUND(..., 1) bir xonagacha yaxlitlaydi.

SUM yig’indini beradi: SELECT SUM(davomiylik_hafta) FROM kurslar; — barcha kurslar jami 36 hafta. MIN va MAX — eng kichik va eng katta qiymat.

GROUP BY: guruhlab hisoblash

GROUP BY qatorlarni bir xil qiymat bo’yicha guruhlaydi va har guruh uchun alohida hisoblaydi — Excel’dagi yig’ma jadvalga (Pivot table) o’xshaydi. Har bir shaharda nechta o’quvchi bor?

SELECT shahar, COUNT(*) AS soni
FROM oquvchilar
GROUP BY shahar
ORDER BY soni DESC, shahar;
shaharsoni
Toshkent3
Samarqand2
Buxoro1
Namangan1
Qo’qon1

Qoida: SELECT da faqat guruhlangan ustun va agregat funksiyalar bo’ladi. Guruhlanmagan ism ni qo’shsangiz, ko’p tizimlar xato beradi, SQLite esa guruhdan ixtiyoriy bitta ismni chiqaradi — xato ko’rinmagani uchun bu yanada xavfli.

HAVING: guruhlarni filtrlash

WHERE qatorlarni guruhlashdan oldin, HAVING esa tayyor guruhlarni filtrlaydi. Kamida ikki o’quvchisi bor kurslar:

SELECT kurs_id, COUNT(*) AS soni
FROM oquvchilar
GROUP BY kurs_id
HAVING COUNT(*) >= 2;

Natijada 1, 2 va 3-kurslar qoladi, faqat Otabek o’qiydigan 4-kurs tushib qoladi.

Ikki jadvalni bog’lash: JOIN g’oyasi

oquvchilar jadvalida kurs nomi emas, faqat raqami (kurs_id) bor. Nom har qatorda takrorlansa, u o’zgarganda yuzlab joyda tuzatish kerak bo’lardi. Shuning uchun nom bir marta kurslar jadvalida saqlanadi, ikki jadvalni esa kerak paytda JOIN birlashtiradi — Excel’dagi VLOOKUP’ga o’xshab.

SELECT o.ism, k.nomi
FROM oquvchilar AS o
JOIN kurslar AS k ON o.kurs_id = k.id
WHERE k.nomi = 'Data analitika';
ismnomi
DilnozaData analitika
SardorData analitika
GulnoraData analitika

o va k — jadvallarning qisqa nomlari. ON o.kurs_id = k.id — bog’lash sharti: o’quvchining kurs_id si kursning id siga teng qatorlar juftlanadi. o.ism va k.nomi ustun qaysi jadvaldan ekanini ko’rsatadi.

JOIN, GROUP BY va agregatlarni birlashtirsak, haqiqiy hisobot hosil bo’ladi:

SELECT k.nomi,
       COUNT(*) AS oquvchilar_soni,
       ROUND(AVG(o.ball), 1) AS ortacha_ball
FROM oquvchilar AS o
JOIN kurslar AS k ON o.kurs_id = k.id
GROUP BY k.nomi
ORDER BY oquvchilar_soni DESC, k.nomi;
nomioquvchilar_soniortacha_ball
Data analitika377.0
Ingliz tili292.0
Kompyuter savodxonligi278.0
Mobilografiya170.0

“Ingliz tili” qatoriga e’tibor bering: o’quvchi ikkita, o’rtacha ball esa faqat Malikaning bali, chunki Bekzodniki NULL. Haqiqiy hisobotda buni izohsiz qoldirib bo’lmaydi.

Oddiy JOIN (to’liq nomi INNER JOIN) faqat ikkala jadvalda mosi bor qatorlarni qaytaradi. Agar o’quvchisi yo’q kurslarni ham ko’rish kerak bo’lsa, LEFT JOIN ishlatiladi — bu keyingi bosqich mavzusi.

Keng tarqalgan xatolar

  • = NULL bilan tekshirish. WHERE ball = NULL hech qanday qator qaytarmaydi, chunki NULL “noma’lum” degani va u hech narsaga, hatto o’ziga ham teng emas. To’g’ri yozuv: WHERE ball IS NULL yoki WHERE ball IS NOT NULL. Bizning jadvalda birinchisi Bekzodni qaytaradi.
  • Qo’shtirnoqlarni adashtirish. Matn bittalik qo’shtirnoqda yoziladi: 'Toshkent'. Qo’shaloq qo’shtirnoq ("...") standart bo’yicha jadval yoki ustun nomi uchun.
  • O’zbekcha apostrof. 'Qo'qon' yozilsa, SQL matnni “Qo” da tugadi deb hisoblaydi va xato beradi. Matn ichidagi apostrof ikki marta yoziladi: 'Qo''qon'. Xuddi shu holat O’g’iloy, Sa’dulla kabi ismlarda ham uchraydi.
  • Katta-kichik harf. SQLite’da WHERE shahar = 'toshkent' hech narsa topmaydi, chunki bazada “Toshkent” katta harf bilan yozilgan. LIKE esa ba’zi tizimlarda harf kattaligini farqlaydi, ba’zilarida farqlamaydi.
  • WHERE’siz DELETE yoki UPDATE. DELETE FROM oquvchilar; jadvaldagi barcha qatorlarni o’chiradi, UPDATE oquvchilar SET ball = 0; esa hammaning balini nolga aylantiradi. Tizim “Ishonchingiz komilmi?” deb so’ramaydi. Xavfsiz tartib: avval aynan shu shart bilan SELECT yozib, qaysi qatorlar o’zgarishini ko’ring, so’ng uni DELETE ga almashtiring. Muhim bazadan oldin zaxira nusxa oling. DB Browser’da Revert Changes yozilmagan o’zgarishlarni bekor qiladi, lekin ish serverida bunday tugma bo’lmasligi mumkin.
  • Buyruqlar tartibi. Yozish tartibi qat’iy: SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT. WHERE ni GROUP BY dan keyin yozsangiz, xato chiqadi.
  • Xato xabarini o’qimaslik. “no such column” yoki “syntax error” muammo joyini ko’rsatadi: ko’pincha nomdagi harf xatosi, ortiqcha vergul yoki yopilmagan qo’shtirnoq.

Amaliy mashq va tekshiruv ro’yxati

Yuqoridagi skript bilan yaratilgan bazada quyidagi so’rovlarni o’zingiz yozing. Avval natijani taxmin qiling, keyin so’rovni ishga tushirib solishtiring.

  1. Samarqandlik o’quvchilarning ismi va yoshi.
  2. Yoshi 18 dan 25 gacha bo’lgan o’quvchilar, yosh bo’yicha o’sish tartibida.
  3. Bali 80 dan yuqori bo’lgan o’quvchilar soni.
  4. Har bir kurs nomi va undagi eng yuqori ball (JOIN, GROUP BY, MAX).
  5. Bali qo’yilmagan o’quvchi va uning kursi nomi.
  6. Qiyinroq: kurslar jadvaliga yangi kurs qo’shing (INSERT INTO), keyin LEFT JOIN haqida o’qib, o’quvchisi yo’q kurslarni ham ko’rsatadigan so’rov tuzing.

Tekshirish uchun javoblar: 1) Jasur 24, Gulnora 35; 2) Dilnoza 19, Otabek 20, Nodira 22, Jasur 24; 3) 3 ta; 4) Data analitika 88, Ingliz tili 92, Kompyuter savodxonligi 81, Mobilografiya 70; 5) Bekzod, Ingliz tili.

Keyin o’z ma’lumotingizga o’ting: masalan, oilaviy kutubxonadagi kitoblar yoki sport to’garagidagi mashg’ulot soatlari ro’yxatini CSV orqali SQLite’ga yuklab, savollaringizga so’rov yozing.

So’rovni ishga tushirishdan oldingi checklist

  • Kerakli ustunlar aniq yozilgan, SELECT * faqat tekshiruv uchun.
  • Matnlar bittalik qo’shtirnoqda, ichidagi apostrof ikki marta yozilgan.
  • NULL faqat IS NULL yoki IS NOT NULL bilan tekshirilgan.
  • AND va OR aralash bo’lsa, qavslar qo’yilgan.
  • Tartib kerak bo’lsa, ORDER BY yozilgan.
  • GROUP BY ishlatilsa, SELECT da faqat guruhlangan ustunlar va agregatlar bor.
  • DELETE va UPDATE dan oldin xuddi shu shart bilan SELECT ishga tushirilgan va zaxira nusxa olingan.
  • Natija sog’lom fikrga mos: qatorlar soni va raqamlar kutilgan oraliqda.

Bir necha qatorli so’rov Excel’dagi uzoq qo’l mehnatining o’rnini bosishi mumkin. Har kuni 15–20 daqiqa mashq qilsangiz, asosiy buyruqlar tez orada odatga aylanadi.

Agar SQL, Excel va ma’lumotlar tahlilini o’qituvchi bilan tizimli o’rganmoqchi bo’lsangiz, assotsiatsiyamizning bepul data analitika dasturi va boshqa o’quv dasturlari bilan tanishing. Tayyor bo’lsangiz, ariza qoldiring — mutaxassislarimiz siz bilan bog’lanadi.

Maqolalarga qaytish

Boshqa maqolalar

11 daqiqa o'qish

Algoritmik fikrlash: dasturlashdan oldingi qadam

Muammoni bo'laklarga ajratish, naqsh va abstraksiya, shart va sikl, psevdokod va blok-sxema, oddiy masalalar va qo'lda tekshirish — misollar va mashqlar bilan.

Bugun o'qishni boshlang

Guruhlarga qabul ochiq. Ariza qoldiring — mutaxassislarimiz siz bilan bog'lanib, mos yo'nalishni tanlashga yordam beradi.

Telegram orqali yozish