VIEW: saqlangan so‘rovlar
246 daq
Bir murakkab so‘rovni har safar qayta yozish noqulay. VIEW (ko‘rinish) — saqlab qo‘yilgan so‘rov: unga jadval kabi murojaat qilinadi, lekin o‘zida ma’lumot saqlamaydi.
Yaratish
CREATE VIEW student_cards AS
SELECT s.id, s.first_name, s.last_name, g.name AS group_name, f.name AS faculty
FROM students s
JOIN study_groups g ON g.id = s.group_id
JOIN faculties f ON f.id = g.faculty_id;Endi xuddi jadvaldek:
SELECT * FROM student_cards WHERE faculty = 'Kiberxavfsizlik';Har safar murojaat qilinganda ichidagi so‘rov qaytadan bajariladi — shuning uchun natija doim yangi.
Nima uchun kerak
- soddalik — murakkab JOIN’lar bir marta yoziladi;
- xavfsizlik — foydalanuvchiga butun jadval emas, faqat VIEW ochiladi (masalan, maosh ustunisiz);
- barqarorlik — jadvallar tuzilishi o‘zgarsa ham, VIEW ni moslab qo‘ysangiz, dasturlar avvalgidek ishlayveradi.
O‘zgartirish va o‘chirish
CREATE OR REPLACE VIEW student_cards AS SELECT …;
DROP VIEW student_cards;Ko‘rinish orqali ma’lumot o‘zgartirish
Oddiy VIEW (bitta jadval, guruhlash yo‘q) orqali UPDATE ham qilsa bo‘ladi — o‘zgarish asl jadvalga yoziladi. JOIN, GROUP BY, DISTINCT bor VIEW’lar odatda faqat o‘qish uchun.
Materiallashgan ko‘rinish
PostgreSQL’da MATERIALIZED VIEW natijani saqlab qo‘yadi — juda og‘ir hisobotlar uchun:
CREATE MATERIALIZED VIEW monthly_revenue AS
SELECT date_trunc('month', ordered_at) AS month, count(*) FROM orders GROUP BY 1;
REFRESH MATERIALIZED VIEW monthly_revenue; -- yangilashO‘qish tez, lekin natija REFRESH qilinmaguncha eskiligicha qoladi.
Mashq
Erkin rejimda tayyor dorixona bazasini yuklang va «har bir sotuv: mijoz ismi, dori nomi, summa» ko‘rinishini yarating, keyin undan SELECT qiling.
Esda qoldiring
- VIEW — nomlangan saqlangan so‘rov, ma’lumot saqlamaydi.
- Murakkab so‘rovlarni soddalashtiradi va keraksiz ustunlarni yashiradi.
- Materiallashgan VIEW (PostgreSQL) — natijani saqlaydi,
REFRESHbilan yangilanadi.