Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Näkymät | Joitakin Lisäaiheita
Edistyneet SQL-Tekniikat

bookNäkymät

Edellisessä luvussa mainittiin näkymä-niminen objekti käyttäjäoikeuksista puhuttaessa. Tarkastellaan nyt tätä objektia tarkemmin.

Näkymä SQL:ssä on virtuaalinen taulu, joka perustuu SQL-kyselyn tulosjoukkoon. Se sisältää rivejä ja sarakkeita 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 saa 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 yhdistelyiden ja aggregointien käsittelyä;
  • Tietoturva: Näkymät voivat rajoittaa pääsyä tiettyihin riveihin tai sarakkeisiin, mikä parantaa tietoturvaa. Käyttäjille voidaan antaa oikeudet 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, tilinomistajan nimen, saldon sekä 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;
copy

Nyt voit hyödyntää tätä näkymää muissa kyselyissä ilman, että sinun tarvitsee luoda monimutkaista kyselyä liitoksineen uudelleen, vaan voit käyttää luotua näkymää kuten tavallista taulua.

Huomio

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ä.

question mark

Mikä seuraavista väittämistä kuvaa parhaiten näkymien tietoturvaominaisuutta?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 7

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 4.35

bookNäkymät

Pyyhkäise näyttääksesi valikon

Edellisessä luvussa mainittiin näkymä-niminen objekti käyttäjäoikeuksista puhuttaessa. Tarkastellaan nyt tätä objektia tarkemmin.

Näkymä SQL:ssä on virtuaalinen taulu, joka perustuu SQL-kyselyn tulosjoukkoon. Se sisältää rivejä ja sarakkeita 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 saa 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 yhdistelyiden ja aggregointien käsittelyä;
  • Tietoturva: Näkymät voivat rajoittaa pääsyä tiettyihin riveihin tai sarakkeisiin, mikä parantaa tietoturvaa. Käyttäjille voidaan antaa oikeudet 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, tilinomistajan nimen, saldon sekä 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;
copy

Nyt voit hyödyntää tätä näkymää muissa kyselyissä ilman, että sinun tarvitsee luoda monimutkaista kyselyä liitoksineen uudelleen, vaan voit käyttää luotua näkymää kuten tavallista taulua.

Huomio

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ä.

question mark

Mikä seuraavista väittämistä kuvaa parhaiten näkymien tietoturvaominaisuutta?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 7
some-alt