Näkymät
Edellisessä luvussa mainitsimme objektin nimeltä näkymä keskustellessamme käyttäjäoikeuksista. Tarkastellaan nyt tätä objektia tarkemmin.
Näkymä SQL:ssä on virtuaalinen taulu, joka perustuu SQL-kyselyn tulosjoukkoon. Se sisältää rivejä ja sarakkeita aivan kuten oikea taulu, ja näkymän kentät ovat peräisin yhdestä tai useammasta tietokannan oikeasta taulusta.
Näkymiä käytetään useista syistä, kuten monimutkaisten kyselyiden yksinkertaistamiseen, tietoturvan parantamiseen rajoittamalla pääsyä tiettyihin tietoihin sekä tietojen esittämiseen tietyssä muodossa.
Näkymien keskeiset ominaisuudet
- Virtuaalinen taulu: näkymä ei tallenna tietoja fyysisesti. Se hakee tietonsa tauluista, joihin se perustuu (ns. perustaulut);
- Monimutkaisten kyselyiden yksinkertaistaminen: näkymät voivat yksinkertaistaa monimutkaisia SQL-kyselyitä kapseloimalla ne yhteen näkymään. Tämä helpottaa monimutkaisten liitosten ja aggregaatioiden käsittelyä;
- Tietoturva: näkymät voivat rajoittaa pääsyä tiettyihin riveihin tai sarakkeisiin, mikä parantaa tietoturvaa. Käyttäjille voidaan myöntää oikeus näkymään ilman oikeuksia perustauluihin;
- Yhtenäisyys: näkymät voivat tarjota yhtenäisen, muuttumattoman rajapinnan, vaikka taustalla oleva tietokantarakenne muuttuisi.
Toteutus
Luomme näkymän nimeltä account_activity_view perustuen tauluihin BankAccounts ja UserLogs, joka näyttää tilinumeron, tilinhaltijan nimen, saldon ja viimeisimmän tilillä tehdyn toimenpiteen.
1234567891011121314151617181920212223242526-- Create a view that shows account details along with their latest action CREATE OR REPLACE VIEW account_activity_view AS SELECT ba.account_number, -- Select the account number from the bankaccounts table ba.account_holder, -- Select the account holder's name from the bankaccounts table ba.balance, -- Select the balance from the bankaccounts table ul.action AS latest_action, -- Select the latest action from the userlogs table (alias as latest_action) ul.timestamp AS latest_action_time -- Select the timestamp of the latest action (alias as latest_action_time) FROM BankAccounts ba -- Main table: bankaccounts LEFT JOIN ( -- Subquery to get the most recent action for each account SELECT DISTINCT ON (account_number) account_number, -- Select the account number action, -- Select the action timestamp -- Select the timestamp FROM UserLogs ORDER BY account_number, -- Order by account number timestamp DESC -- Order by timestamp in descending order to get the latest action ) ul ON ba.account_number = ul.account_number; -- Join the subquery result with bankaccounts on account number -- Get data from the view SELECT * FROM account_activity_view;
Nyt voit hyödyntää tätä näkymää muissa kyselyissä ilman, että sinun tarvitsee luoda monimutkaista kyselyä liitoksineen uudelleen – käytä vain luotua näkymää tavallisen taulun tapaan.
Vaikka näkymää voidaan käyttää kuten tavallista taulua, se ei kuitenkaan ole fyysinen taulu! Näkymän tietoja ei tallenneta levylle. Sen sijaan aina, kun näkymää käytetään, sen kysely suoritetaan ja tuloksena saatua dataa käytetään pääkyselyssä.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you explain how to update or modify a view?
What happens if the underlying tables change after creating the view?
Can you show an example of querying this view for specific account holders?
Mahtavaa!
Completion arvosana parantunut arvoon 4.55
Näkymät
Pyyhkäise näyttääksesi valikon
Edellisessä luvussa mainitsimme objektin nimeltä näkymä keskustellessamme käyttäjäoikeuksista. Tarkastellaan nyt tätä objektia tarkemmin.
Näkymä SQL:ssä on virtuaalinen taulu, joka perustuu SQL-kyselyn tulosjoukkoon. Se sisältää rivejä ja sarakkeita aivan kuten oikea taulu, ja näkymän kentät ovat peräisin yhdestä tai useammasta tietokannan oikeasta taulusta.
Näkymiä käytetään useista syistä, kuten monimutkaisten kyselyiden yksinkertaistamiseen, tietoturvan parantamiseen rajoittamalla pääsyä tiettyihin tietoihin sekä tietojen esittämiseen tietyssä muodossa.
Näkymien keskeiset ominaisuudet
- Virtuaalinen taulu: näkymä ei tallenna tietoja fyysisesti. Se hakee tietonsa tauluista, joihin se perustuu (ns. perustaulut);
- Monimutkaisten kyselyiden yksinkertaistaminen: näkymät voivat yksinkertaistaa monimutkaisia SQL-kyselyitä kapseloimalla ne yhteen näkymään. Tämä helpottaa monimutkaisten liitosten ja aggregaatioiden käsittelyä;
- Tietoturva: näkymät voivat rajoittaa pääsyä tiettyihin riveihin tai sarakkeisiin, mikä parantaa tietoturvaa. Käyttäjille voidaan myöntää oikeus näkymään ilman oikeuksia perustauluihin;
- Yhtenäisyys: näkymät voivat tarjota yhtenäisen, muuttumattoman rajapinnan, vaikka taustalla oleva tietokantarakenne muuttuisi.
Toteutus
Luomme näkymän nimeltä account_activity_view perustuen tauluihin BankAccounts ja UserLogs, joka näyttää tilinumeron, tilinhaltijan nimen, saldon ja viimeisimmän tilillä tehdyn toimenpiteen.
1234567891011121314151617181920212223242526-- Create a view that shows account details along with their latest action CREATE OR REPLACE VIEW account_activity_view AS SELECT ba.account_number, -- Select the account number from the bankaccounts table ba.account_holder, -- Select the account holder's name from the bankaccounts table ba.balance, -- Select the balance from the bankaccounts table ul.action AS latest_action, -- Select the latest action from the userlogs table (alias as latest_action) ul.timestamp AS latest_action_time -- Select the timestamp of the latest action (alias as latest_action_time) FROM BankAccounts ba -- Main table: bankaccounts LEFT JOIN ( -- Subquery to get the most recent action for each account SELECT DISTINCT ON (account_number) account_number, -- Select the account number action, -- Select the action timestamp -- Select the timestamp FROM UserLogs ORDER BY account_number, -- Order by account number timestamp DESC -- Order by timestamp in descending order to get the latest action ) ul ON ba.account_number = ul.account_number; -- Join the subquery result with bankaccounts on account number -- Get data from the view SELECT * FROM account_activity_view;
Nyt voit hyödyntää tätä näkymää muissa kyselyissä ilman, että sinun tarvitsee luoda monimutkaista kyselyä liitoksineen uudelleen – käytä vain luotua näkymää tavallisen taulun tapaan.
Vaikka näkymää voidaan käyttää kuten tavallista taulua, se ei kuitenkaan ole fyysinen taulu! Näkymän tietoja ei tallenneta levylle. Sen sijaan aina, kun näkymää käytetään, sen kysely suoritetaan ja tuloksena saatua dataa käytetään pääkyselyssä.
Kiitos palautteestasi!