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:
SELECTβ "tanla/ol".*β "hamma ustunlar" degani (yulduzcha).FROM talabalarβ "talabalar jadvalidan".
Faqat kerakli ustunlarni olish ham mumkin:
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 (...)β "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'. idni 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β "talabalar jadvalini o'zgartir".SET shahar = 'Samarqand'β "shahar ustunini Samarqandga o'zgartir".WHERE id = 1β "faqat id'si 1 bo'lgan qatorda".
JUDA MUHIM:
UPDATEdaWHEREni unutmang! AgarWHEREyozmasangiz, barcha qatorlar o'zgaradi! Ya'niUPDATE talabalar SET shahar = 'Samarqand'β hamma talabaning shahrini Samarqand qilib qo'yadi. Bu β xavfli xato. DoimWHEREbilan qaysi qatorni o'zgartirayotganingizni aniq belgilang.
O'chirish β DELETE¶
Qatorni o'chiradi:
DELETE FROM talabalarβ "talabalar jadvalidan o'chir".WHERE id = 3β "id'si 3 bo'lgan qatorni".
DELETEda hamWHEREshart!WHEREsizDELETE FROM talabalarβ butun jadvalni bo'shatadi! Ehtiyot bo'ling.
Mashqlar¶
Quyidagilarni phpMyAdmin'ning "SQL" bo'limida bajaring (avval
talabalarjadvali 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
Bir vaqtda bir nechta ustunni o'zgartirish uchunSET 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.