SQL VIEW — virtual jadval
Ba’zi so’rovlar uzun va murakkab bo’ladi — masalan uch jadvalni
JOIN qiluvchi hisobot. Uni har safar qayta yozish zerikarli va
xatoga moyil. VIEW shu muammoni yechadi: bir marta yozilgan so’rovga
nom beriladi, keyin uni oddiy jadval kabi ishlatasiz.
Muammo: takrorlanadigan uzun so’rov
Buyurtmalarni to’liq ism bilan ko’rish uchun har safar shu so’rovni yozamiz:
SELECT m.ism, p.nom, b.soni, b.sana
FROM buyurtmalar AS b
JOIN mijozlar AS m ON b.mijoz_id = m.id
JOIN mahsulotlar AS p ON b.mahsulot_id = p.id;
O’zingiz ishga tushirib ko’ring — so’rovni tahrirlashingiz ham mumkin:
Bu hisobot kunda o’nlab marta kerak bo’lsa — har safar to’rt qatorni qayta terish noqulay.
Yechim: CREATE VIEW
So’rovga CREATE VIEW bilan nom beramiz:
CREATE VIEW buyurtma_hisoboti AS
SELECT m.ism, p.nom, b.soni, b.sana
FROM buyurtmalar AS b
JOIN mijozlar AS m ON b.mijoz_id = m.id
JOIN mahsulotlar AS p ON b.mahsulot_id = p.id;
Endi buyurtma_hisoboti — go’yo jadval. Uni oddiygina so’raymiz:
SELECT * FROM buyurtma_hisoboti;
Natija:
| ism | nom | soni | sana |
|---|---|---|---|
| Aziz | Non | 3 | 2026-07-01 |
| Aziz | Choy | 1 | 2026-07-02 |
| Dilnoza | Olma | 10 | 2026-07-02 |
| Bobur | Sut | 2 | 2026-07-05 |
| Dilnoza | Guruch | 5 | 2026-07-06 |
| Aziz | Suv | 4 | 2026-07-08 |
View ustidan yana so’rov
View — oddiy jadval kabi, shuning uchun uni WHERE yoki
boshqa shart bilan cheklash mumkin:
SELECT * FROM buyurtma_hisoboti WHERE ism = 'Aziz';
Bu faqat Azizning buyurtmalarini beradi — asl uzun so’rovni umuman ko’rmaymiz ham.
Amaliy mashq
Ko’rinish yarating:
- Arzon mahsulotlar uchun
CREATE VIEWyozing; - undan
SELECTqiling; - view’ga
WHEREqo’shib so’rov yozing; DROP VIEWbilan o’chiring;- JOIN natijasidan view yarating: mijoz, mahsulot, soni.
View haqiqiy jadvalmi yoki saqlangan so’rovmi? 3-qadam javob beradi.
Qisqacha xulosa
- VIEW — nom berilgan, saqlangan
SELECT; virtual jadval kabi ishlaydi. CREATE VIEW nom AS SELECT ...bilan yaratiladi.- Unga oddiy jadval kabi murojaat qilinadi (
SELECT,WHEREbilan). - Ma’lumotni o’zida saqlamaydi — har safar asl jadvallardan oladi.
- Foydasi: uzun so’rovni soddalashtirish va mantiqni takrorlamaslik.
Keyingi darsda tranzaksiya — bir nechta amalni “hammasi yoki hech nima” tarzida bajarishni ko’ramiz.