Tarkibga o'tish

3.3 SQL asoslari β€” ma'lumot bilan ishlash

⬅️ Oldingi: 3.2 phpMyAdmin va birinchi jadval Β· 🏠 README Β· Keyingi: 3.4 Filtrlash va saralash (WHERE, ORDER BY, LIMIT) ➑️


SQL (Structured Query Language) β€” ma'lumotlar bazasi bilan "gaplashish" tili. Bazadan ma'lumot olish, qo'shish, o'zgartirish, o'chirish β€” hammasi SQL buyruqlari orqali bajariladi. SQL β€” alohida til (PHP emas), lekin uni o'rganish oson, chunki u deyarli oddiy inglizchaga o'xshaydi.

SQL'ni qayerda sinab ko'rish mumkin? phpMyAdmin'da bazani ochib, yuqoridagi "SQL" bo'limiga o'ting β€” u yerga SQL buyruqlarini yozib, "Go" bosib, natijani ko'rish mumkin. Bu β€” SQL'ni mashq qilishning eng oson yo'li. Quyidagi barcha buyruqlarni shu yerda sinab ko'ring.

Bazada to'rtta asosiy amal bor. Ularni ko'pincha CRUD deb atashadi: - Create (qo'shish) β€” INSERT - Read (o'qish) β€” SELECT - Update (o'zgartirish) β€” UPDATE - Delete (o'chirish) β€” DELETE

O'qish β€” SELECT

Eng ko'p ishlatiladigan buyruq. Jadvaldan ma'lumot oladi:

-- Barcha talabalarning hamma ma'lumotini olish
SELECT * FROM talabalar;
  • SELECT β€” "tanla/ol".
  • * β€” "hamma ustunlar" degani (yulduzcha).
  • FROM talabalar β€” "talabalar jadvalidan".

Faqat kerakli ustunlarni olish ham mumkin:

-- Faqat ism va shaharni olish
SELECT ism, shahar FROM talabalar;

SQL buyruqlari ham ; (nuqtali vergul) bilan tugaydi β€” PHP'dagidek. SQL kalit so'zlari (SELECT, FROM) odatda KATTA harfda yoziladi β€” bu majburiy emas, lekin o'qishni osonlashtiradigan an'ana.

Qo'shish β€” INSERT

Jadvalga yangi qator qo'shadi:

INSERT INTO talabalar (ism, yosh, shahar)
VALUES ('Ali Valiyev', 19, 'Toshkent');
  • INSERT INTO talabalar (...) β€” "talabalar jadvaliga qo'sh, mana shu ustunlarga".
  • VALUES (...) β€” "mana shu qiymatlarni".
  • Ustunlar tartibi va qiymatlar tartibi mos kelishi kerak: ism β†’ 'Ali Valiyev', yosh β†’ 19, shahar β†’ 'Toshkent'.
  • id ni yozmadik β€” chunki u AUTO_INCREMENT, baza o'zi beradi.

Diqqat: SQL'da matn bittalik tirnoq (' ') ichida yoziladi ('Ali Valiyev'), sonlar tirnoqsiz (19). Bu PHP'dan biroz farq qiladi (PHP'da qo'shtirnoq ham ishlardi); SQL'da bittalik tirnoq odat.

O'zgartirish β€” UPDATE

Mavjud qatorni o'zgartiradi:

UPDATE talabalar
SET shahar = 'Samarqand'
WHERE id = 1;
  • UPDATE talabalar β€” "talabalar jadvalini o'zgartir".
  • SET shahar = 'Samarqand' β€” "shahar ustunini Samarqandga o'zgartir".
  • WHERE id = 1 β€” "faqat id'si 1 bo'lgan qatorda".

JUDA MUHIM: UPDATEda WHERE ni unutmang! Agar WHERE yozmasangiz, barcha qatorlar o'zgaradi! Ya'ni UPDATE talabalar SET shahar = 'Samarqand' β€” hamma talabaning shahrini Samarqand qilib qo'yadi. Bu β€” xavfli xato. Doim WHERE bilan qaysi qatorni o'zgartirayotganingizni aniq belgilang.

O'chirish β€” DELETE

Qatorni o'chiradi:

DELETE FROM talabalar WHERE id = 3;
  • DELETE FROM talabalar β€” "talabalar jadvalidan o'chir".
  • WHERE id = 3 β€” "id'si 3 bo'lgan qatorni".

DELETEda ham WHERE shart! WHEREsiz DELETE FROM talabalar β€” butun jadvalni bo'shatadi! Ehtiyot bo'ling.

Mashqlar

Quyidagilarni phpMyAdmin'ning "SQL" bo'limida bajaring (avval talabalar jadvali to'ldirilgan bo'lsin).

Oson 1. SELECT * FROM talabalar bilan barcha talabalarni ko'ring. 2. Faqat ism ustunini tanlang. 3. INSERT bilan yangi talaba qo'shing. 4. UPDATE bilan bitta talabaning yoshini o'zgartiring (WHERE id = ... bilan). 5. DELETE bilan bitta talabani o'chiring.

O'rta 6. ism va yosh ustunlarini birga tanlang. 7. mahsulotlar jadvaliga 3 ta yangi mahsulot qo'shing (INSERT). 8. Bir mahsulotning narxini UPDATE bilan o'zgartiring. 9. Bir talabaning ham yoshini, ham shahrini bir UPDATE buyrug'ida o'zgartiring (SET yosh = ..., shahar = ...).

Qiyin 10. WHEREsiz UPDATE bajarsangiz nima bo'lishini (avval bitta sinov jadvalida) tushuntiring β€” nega bu xavfli? (Sinab ko'rmang, faqat tushuntiring yoki ehtiyot bo'lib alohida jadvalda sinang.) 11. kitoblar jadvalida: barcha 2020-yildan keyin chiqqan kitoblarni tanlash buyrug'ini yozing (WHERE yil > 2020). Bu β€” keyingi bo'lim (filtrlash) ga ko'prik.

Yechim β€” 9

UPDATE talabalar
SET yosh = 22, shahar = 'Buxoro'
WHERE id = 2;
Bir vaqtda bir nechta ustunni o'zgartirish uchun SET dan keyin ularni vergul bilan ajratamiz. WHERE id = 2 esa faqat 2-talabaga ta'sir qilishini kafolatlaydi.

Yechim β€” 10 (WHERE'siz UPDATE nega xavfli)

-- ❌ XAVFLI: WHERE yo'q β€” BARCHA qatorlar o'zgaradi!
UPDATE talabalar SET shahar = 'Toshkent';
-- Endi har bir talabaning shahri "Toshkent" bo'lib qoldi.

-- βœ… TO'G'RI: WHERE bilan aniq qator(lar)ni belgilash
UPDATE talabalar SET shahar = 'Toshkent' WHERE id = 1;
WHERE yozilmasa, UPDATE (va DELETE) butun jadvalga ta'sir qiladi β€” bu real loyihada falokat (masalan, hamma foydalanuvchining parolini bittaga aylantirib qo'yish). Shuning uchun UPDATE/DELETE yozganda birinchi navbatda WHERE haqida o'ylang. Sinab ko'rmoqchi bo'lsangiz β€” alohida sinov jadvalida qiling.

Yechim β€” 11 (2020-yildan keyingi kitoblar)

SELECT * FROM kitoblar WHERE yil > 2020;
WHERE yil > 2020 faqat yil ustuni 2020 dan katta bo'lgan qatorlarni qaytaradi. Bu β€” keyingi bo'limdagi filtrlashning oddiy ko'rinishi.