మాడ్యూల్ పాఠాలు (4/4)
వీక్షణలు మరియు డేటా సంగ్రహణ
ప్రశ్నలు (ముఖ్యంగా సంక్లిష్టమైన JOINలు లేదా GROUP BY వంటి అగ్రిగేషన్లు) దీర్ఘకాలంగా మరియు నియమాలు మరియు గణనలతో నిండిపోవడం ప్రారంభించడాన్ని మా పాఠాల అంతటా మీరు గమనించవచ్చు.
పూర్తి చేసిన ప్రశ్నను మానసికంగా సేవ్ చేయడానికి మరియు వీక్షణ నుండి దాచడానికి ఒక మార్గం ఉంటే, అప్పటి నుండి అది DB యొక్క సాధారణ "టేబుల్" అని నటిస్తే ఏమి చేయాలి?
వీక్షణల ప్రపంచానికి స్వాగతం.
వీక్షణను సృష్టించండి
వీక్షణ అనేది తప్పనిసరిగా స్థిరమైన, పేరు పెట్టబడిన SQL ప్రశ్న, కానీ ఇది "వర్చువల్" పట్టిక వలె ప్రవర్తిస్తుంది!
CREATE VIEW user_spending AS
SELECT
c.id,
c.first_name,
SUM(o.amount) as total_spent
FROM customers c
JOIN orders o ON c.id = o.customer_id
GROUP BY c.id;పూర్తయింది! ఇప్పుడు, JOIN మరియు GROUP BYని ఎల్లప్పుడూ పునరావృతం చేయడానికి బదులుగా, మీరు పూర్తిగా సాధారణ ప్రశ్నలను వ్రాయాలి:
SELECT * FROM user_spending WHERE total_spent > 100;
-- Postgres dietro le quinte richiamerà automaticamente la grande formula.వీక్షణలు మరియు "నిజ సమయ డేటా"
చాలా సాధారణ అపోహ ఏమిటంటే Views డేటాను తీసుకుంటాయి, ధరలు లేదా ర్యాంకింగ్ల వంటి మొత్తాలను గణిస్తాయి మరియు ఫోటోగ్రాఫ్ వంటి కొన్ని విచారకరమైన స్నాప్షాట్ను ఉత్పత్తి చేస్తాయి. తప్పు (దాదాపు ఎల్లప్పుడూ)! డిఫాల్ట్గా, వీక్షణలు వర్చువల్: మీరు మీ ఎంపికలో వీక్షణ పేరును ఉంచిన ప్రతిసారీ, ఆ ఖచ్చితమైన మిల్లీసెకన్లో DB స్థితి ఆధారంగా నిజ-సమయ గణనను అమలు చేయడం ద్వారా తెర వెనుక పోస్ట్గ్రెస్ మీ అభ్యర్థనను విలీనం చేస్తుంది. కాబట్టి మీరు పాత డేటాను ఎప్పటికీ చదవలేరు.
అవి దేనికి?
- సరళత: వీక్షణలు బాహ్య యాప్లను మార్పుల నుండి రక్షిస్తాయి.
top_sellingవీక్షణ నుండి డేటాను చదవాలని ఫ్రంటెండ్ బృందానికి తెలిస్తే, టాప్ సెల్లర్లను బయటకు తీయడానికి మేము రేపు మూడు ఇంటర్మీడియట్ రిలేషన్షిప్లను జోడించడం ద్వారా డేటాబేస్ను సవరించినట్లయితే వారు చింతించాల్సిన అవసరం లేదు! - భద్రత మరియు విభజన: భారీ DBలలో, ఒక వీక్షణ బాహ్య డెవలపర్ల నుండి వినియోగదారు డేటాలో కొంత భాగాన్ని ముందే ఎంచుకుని దాచగలదు, అసలు పేర్లతో స్క్రబ్ చేయబడిన విశ్లేషణల ఉప వీక్షణకు మాత్రమే యాక్సెస్ను (ఉదాహరణకు) మంజూరు చేస్తుంది.
వీక్షణను వదలడం
పట్టికల వలె, ఇకపై అవసరం లేనప్పుడు మీరు DROP ఆదేశంతో కొనసాగండి:
DROP VIEW user_spending;దీనిని ప్రయత్నించండి
'high_value_products' అనే వీక్షణ (VIEW)ని సృష్టించండి. ఇది తప్పనిసరిగా 'ఉత్పత్తుల' పట్టిక నుండి మొత్తం 3 ముఖ్యమైన ఫీల్డ్లను (`id`, `పేరు`, `ధర`) ఎంచుకునే కంటైనర్గా ప్రవర్తించాలి, కానీ ఎల్లప్పుడూ 50.00 కంటే ఎక్కువ 'ధర' ఉన్న ఉత్పత్తులకు మాత్రమే.
సూచనను చూపించు
CREATE VIEW view_nameని ఎంపిక చేసినట్లు వ్రాయండి ... నుండి ... ఎక్కడ ...
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
వీక్షణను పిలుస్తోంది
ప్లాట్ఫారమ్లోని ప్రతి వ్యాయామం వివిక్త (మరియు శుభ్రమైన) వాతావరణంలో అమలు చేయబడుతుంది కాబట్టి, ఈ దశలో మునుపటి వీక్షణ ఉండదు. 'high_value_products' వీక్షణను పునఃసృష్టించండి (ఇప్పటికీ ఉత్పత్తుల ధర > 50తో ఉంది) ఆపై, వెంటనే క్రింది లైన్లో, అది పని చేస్తుందో లేదో ధృవీకరించడానికి ధర అవరోహణ (DESC) ద్వారా ఆర్డర్ చేయబడిన మొత్తం కంటెంట్ని SELECTని అమలు చేయండి.
సూచనను చూపించు
మర్చిపోవద్దు; SQL స్టేట్మెంట్ల మధ్య (మొదటి పంక్తి చివరిలో ఉంచండి)! ఇది పోస్ట్గ్రెస్ 2 టాస్క్లను సీక్వెన్స్లో అమలు చేయడానికి అనుమతిస్తుంది.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది