Ko'rinishlar - Virtual jadvallar
Kirish: Ushbu qo'llanmada siz PostgreSQL ko'rinishlari (VIEW) bilan tanishasiz va murakkab so'rovlarni soddalashtirish hamda qayta ishlatish uchun ulardan qanday foydalanishni o'rganasiz.
Ko'rinish (VIEW) — bu ma'lumotlar bazasi serverida saqlanadigan nomlangan so'rovdir. Ko'rinishga oddiy jadval kabi so'rov yuborish mumkin, biroq u ma'lumotlarni jismonan diskda saqlamaydi. Shu sababli ko'rinish virtual jadval deb ataladi.
Eslatma: PostgreSQLda ma'lumotlarni jismoniy saqlovchi maxsus ko'rinishlar ham mavjud bo'lib, ular materiallashtirilgan ko'rinishlar (
Materialized Views) deyiladi.
Ko'rinish yaratish uchun CREATE VIEW buyrug'idan foydalaniladi:
CREATE VIEW view_name
AS
query;
Ushbu sintaksisda:
view_name — yaratilayotgan ko'rinish nomi.query — ko'rinishni ifodalovchi asosiy so'rov (defining query). Ushbu so'rov murojaat qiladigan jadvallar baza jadvallari (base tables) deb ataladi.Masalan, products va categories jadvallarini birlashtiruvchi product_view nomli ko'rinish yaratamiz:
CREATE VIEW product_view
AS
SELECT
product_id,
product_name,
price,
category_name
FROM
products
JOIN categories USING (category_id);
Ko'rinish yaratilgandan so'ng, unga xuddi oddiy jadvalga murojaat qilgandek SELECT so'rovi yuborish mumkin:
SELECT
product_name,
category_name,
price
FROM
product_view;
PostgreSQL ushbu so'rovni qabul qilganda, orqa fonda ko'rinishning asl ta'rif so'rovini ishga tushiradi.
Ko'rinishlar orqali murakkab JOIN so'rovlarini bir marta yozib, keyin ulardan juda oson va takroriy foydalanish mumkin:
SELECT
category_name,
MAX(price) AS price
FROM
product_view
GROUP BY
category_name
ORDER BY
price;
Bu so'rov har safar jadvallarni qaytadan qo'lda birlashtirishdan ko'ra ancha tushunarli va qisqadir.
Mavjud ko'rinishni o'zgartirish uchun CREATE OR REPLACE VIEW dan foydalanish mumkin:
CREATE OR REPLACE VIEW view_name
AS
query;
Masalan, product_view ga brend nomini ham qo'shamiz:
CREATE OR REPLACE VIEW product_view AS
SELECT
product_id,
product_name,
price,
category_name,
brand_name
FROM
products
JOIN categories USING (category_id)
JOIN brands USING (brand_id);
PostgreSQL mavjud ko'rinish ustiga yana boshqa bir ko'rinish qurish imkonini beradi. Masalan, faqat smartfonlarni ajratib oluvchi smartphone_view ni yaratish:
CREATE OR REPLACE VIEW smartphone_view AS
SELECT
product_id,
product_name,
price,
brand_name
FROM
product_view
WHERE
category_name = 'Smartphones';
Ko'rinishni o'chirib tashlash uchun DROP VIEW buyrug'i ishlatiladi:
DROP VIEW IF EXISTS view_name;
Agar ko'rinishga boshqa ko'rinishlar bog'langan (qaram) bo'lsa, PostgreSQL xatolik beradi. Barcha bog'liq ko'rinishlar bilan birgalikda o'chirish uchun CASCADE kalit so'zidan foydalaniladi:
DROP VIEW IF EXISTS product_view CASCADE;
VIEW) — ma'lumotlar bazasida saqlanuvchi virtual jadval bo'lib, murakkab so'rovlarni ixchamlashtirish va qayta ishlatish uchun xizmat qiladi.CREATE OR REPLACE VIEW, o'chirish uchun esa DROP VIEW buyrug'i ishlatiladi.