Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Sichten | Einige Zusätzliche Themen
Fortgeschrittene Techniken in SQL

bookSichten

Im vorherigen Kapitel haben wir ein Objekt namens View erwähnt, als wir über Benutzerrechte gesprochen haben. Nun betrachten wir dieses Objekt genauer.

Eine View in SQL ist eine virtuelle Tabelle, die auf dem Ergebnis einer SQL-Abfrage basiert. Sie enthält Zeilen und Spalten wie eine echte Tabelle, und die Felder in einer View stammen aus einer oder mehreren echten Tabellen in der Datenbank.
Views werden aus verschiedenen Gründen verwendet, unter anderem zur Vereinfachung komplexer Abfragen, zur Erhöhung der Sicherheit durch Einschränkung des Zugriffs auf bestimmte Daten und zur Darstellung von Daten in einem bestimmten Format.

Hauptmerkmale von Views

  • Virtuelle Tabelle: Eine View speichert keine Daten physisch. Sie bezieht ihre Daten aus den Tabellen, auf denen sie basiert (sogenannte Basistabellen);
  • Vereinfachung komplexer Abfragen: Views können komplexe SQL-Abfragen vereinfachen, indem sie diese in einer einzigen View kapseln. Dies erleichtert die Arbeit mit komplexen Joins und Aggregationen;
  • Sicherheit: Views können den Zugriff auf bestimmte Zeilen oder Spalten von Daten einschränken und so die Sicherheit erhöhen. Benutzern kann Zugriff auf die View gewährt werden, ohne ihnen Zugriff auf die zugrunde liegenden Basistabellen zu geben;
  • Konsistenz: Views können eine konsistente, unveränderte Schnittstelle bereitstellen, selbst wenn sich das zugrunde liegende Datenbankschema ändert.

Implementierung

Wir erstellen eine View namens account_activity_view auf Basis unserer Tabellen BankAccounts und UserLogs, die die Kontonummer, den Namen des Kontoinhabers, den Kontostand und die zuletzt durchgeführte Aktion am Konto anzeigt.

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

Nun kann diese View in anderen Abfragen verwendet werden, ohne die komplexe Abfrage mit Joins erneut erstellen zu müssen. Die erstellte View kann einfach wie eine gewöhnliche Tabelle genutzt werden.

Hinweis

Obwohl wir die View wie eine reguläre Tabelle verwenden können, ist sie tatsächlich keine physische Tabelle! Die Daten in der View werden nicht auf der Festplatte gespeichert. Stattdessen wird bei jeder Verwendung der View deren Abfrage ausgeführt und die resultierenden Daten werden in der Hauptabfrage verwendet.

question mark

Welche der folgenden Aussagen beschreibt den Sicherheitsaspekt von Views am besten?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 7

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

What are some practical use cases for views in real-world applications?

Can you explain the difference between a view and a table in more detail?

How can I update or modify an existing view?

Awesome!

Completion rate improved to 4.35

bookSichten

Swipe um das Menü anzuzeigen

Im vorherigen Kapitel haben wir ein Objekt namens View erwähnt, als wir über Benutzerrechte gesprochen haben. Nun betrachten wir dieses Objekt genauer.

Eine View in SQL ist eine virtuelle Tabelle, die auf dem Ergebnis einer SQL-Abfrage basiert. Sie enthält Zeilen und Spalten wie eine echte Tabelle, und die Felder in einer View stammen aus einer oder mehreren echten Tabellen in der Datenbank.
Views werden aus verschiedenen Gründen verwendet, unter anderem zur Vereinfachung komplexer Abfragen, zur Erhöhung der Sicherheit durch Einschränkung des Zugriffs auf bestimmte Daten und zur Darstellung von Daten in einem bestimmten Format.

Hauptmerkmale von Views

  • Virtuelle Tabelle: Eine View speichert keine Daten physisch. Sie bezieht ihre Daten aus den Tabellen, auf denen sie basiert (sogenannte Basistabellen);
  • Vereinfachung komplexer Abfragen: Views können komplexe SQL-Abfragen vereinfachen, indem sie diese in einer einzigen View kapseln. Dies erleichtert die Arbeit mit komplexen Joins und Aggregationen;
  • Sicherheit: Views können den Zugriff auf bestimmte Zeilen oder Spalten von Daten einschränken und so die Sicherheit erhöhen. Benutzern kann Zugriff auf die View gewährt werden, ohne ihnen Zugriff auf die zugrunde liegenden Basistabellen zu geben;
  • Konsistenz: Views können eine konsistente, unveränderte Schnittstelle bereitstellen, selbst wenn sich das zugrunde liegende Datenbankschema ändert.

Implementierung

Wir erstellen eine View namens account_activity_view auf Basis unserer Tabellen BankAccounts und UserLogs, die die Kontonummer, den Namen des Kontoinhabers, den Kontostand und die zuletzt durchgeführte Aktion am Konto anzeigt.

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

Nun kann diese View in anderen Abfragen verwendet werden, ohne die komplexe Abfrage mit Joins erneut erstellen zu müssen. Die erstellte View kann einfach wie eine gewöhnliche Tabelle genutzt werden.

Hinweis

Obwohl wir die View wie eine reguläre Tabelle verwenden können, ist sie tatsächlich keine physische Tabelle! Die Daten in der View werden nicht auf der Festplatte gespeichert. Stattdessen wird bei jeder Verwendung der View deren Abfrage ausgeführt und die resultierenden Daten werden in der Hauptabfrage verwendet.

question mark

Welche der folgenden Aussagen beschreibt den Sicherheitsaspekt von Views am besten?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 7
some-alt