SQL - Verwenden von Ansichten

Eine Ansicht ist nichts anderes als eine SQL-Anweisung, die in der Datenbank mit einem zugeordneten Namen gespeichert ist. Eine Ansicht ist eigentlich eine Zusammensetzung einer Tabelle in Form einer vordefinierten SQL-Abfrage.

Eine Ansicht kann alle Zeilen einer Tabelle enthalten oder Zeilen aus einer Tabelle auswählen. Eine Ansicht kann aus einer oder mehreren Tabellen erstellt werden. Dies hängt von der geschriebenen SQL-Abfrage ab, um eine Ansicht zu erstellen.

Mit Ansichten, bei denen es sich um eine Art virtueller Tabellen handelt, können Benutzer Folgendes tun:

  • Strukturieren Sie Daten so, dass Benutzer oder Benutzerklassen sie natürlich oder intuitiv finden.

  • Beschränken Sie den Zugriff auf die Daten so, dass ein Benutzer genau das sehen und (manchmal) ändern kann, was er benötigt, und nicht mehr.

  • Fassen Sie Daten aus verschiedenen Tabellen zusammen, mit denen Berichte erstellt werden können.

Ansichten erstellen

Datenbankansichten werden mit dem erstellt CREATE VIEWErklärung. Ansichten können aus einer einzelnen Tabelle, mehreren Tabellen oder einer anderen Ansicht erstellt werden.

Um eine Ansicht zu erstellen, muss ein Benutzer über die entsprechenden Systemberechtigungen entsprechend der spezifischen Implementierung verfügen.

Das Grundlegende CREATE VIEW Die Syntax lautet wie folgt:

CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];

Sie können mehrere Tabellen in Ihre SELECT-Anweisung aufnehmen, ähnlich wie Sie sie in einer normalen SQL SELECT-Abfrage verwenden.

Beispiel

Betrachten Sie die Tabelle CUSTOMERS mit den folgenden Datensätzen:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Im Folgenden finden Sie ein Beispiel zum Erstellen einer Ansicht aus der Tabelle CUSTOMERS. Diese Ansicht wird verwendet, um den Namen und das Alter des Kunden aus der Tabelle CUSTOMERS zu erhalten.

SQL > CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS;

Jetzt können Sie CUSTOMERS_VIEW auf ähnliche Weise abfragen wie eine tatsächliche Tabelle. Das Folgende ist ein Beispiel dafür.

SQL > SELECT * FROM CUSTOMERS_VIEW;

Dies würde das folgende Ergebnis erzeugen.

+----------+-----+
| name     | age |
+----------+-----+
| Ramesh   |  32 |
| Khilan   |  25 |
| kaushik  |  23 |
| Chaitali |  25 |
| Hardik   |  27 |
| Komal    |  22 |
| Muffy    |  24 |
+----------+-----+

Die WITH CHECK-OPTION

Die WITH CHECK OPTION ist eine CREATE VIEW-Anweisungsoption. Mit der WITH CHECK-OPTION soll sichergestellt werden, dass alle UPDATE- und INSERTs die Bedingungen in der Ansichtsdefinition erfüllen.

Wenn sie die Bedingung (en) nicht erfüllen, gibt UPDATE oder INSERT einen Fehler zurück.

Der folgende Codeblock enthält ein Beispiel für das Erstellen derselben Ansicht CUSTOMERS_VIEW mit der WITH CHECK OPTION.

CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS
WHERE age IS NOT NULL
WITH CHECK OPTION;

Die WITH CHECK-OPTION sollte in diesem Fall die Eingabe von NULL-Werten in die AGE-Spalte der Ansicht verweigern, da die Ansicht durch Daten definiert wird, die keinen NULL-Wert in der AGE-Spalte haben.

Eine Ansicht aktualisieren

Eine Ansicht kann unter bestimmten Bedingungen aktualisiert werden, die unten angegeben sind -

  • Die SELECT-Klausel enthält möglicherweise nicht das Schlüsselwort DISTINCT.

  • Die SELECT-Klausel enthält möglicherweise keine Zusammenfassungsfunktionen.

  • Die SELECT-Klausel darf keine Set-Funktionen enthalten.

  • Die SELECT-Klausel darf keine Set-Operatoren enthalten.

  • Die SELECT-Klausel darf keine ORDER BY-Klausel enthalten.

  • Die FROM-Klausel darf nicht mehrere Tabellen enthalten.

  • Die WHERE-Klausel darf keine Unterabfragen enthalten.

  • Die Abfrage enthält möglicherweise nicht GROUP BY oder HAVING.

  • Berechnete Spalten werden möglicherweise nicht aktualisiert.

  • Alle NOT NULL-Spalten aus der Basistabelle müssen in der Ansicht enthalten sein, damit die INSERT-Abfrage funktioniert.

Wenn eine Ansicht alle oben genannten Regeln erfüllt, können Sie diese Ansicht aktualisieren. Der folgende Codeblock enthält ein Beispiel zum Aktualisieren des Alters von Ramesh.

SQL > UPDATE CUSTOMERS_VIEW
   SET AGE = 35
   WHERE name = 'Ramesh';

Dies würde letztendlich die Basistabelle CUSTOMERS aktualisieren und dasselbe würde sich in der Ansicht selbst widerspiegeln. Versuchen Sie nun, die Basistabelle abzufragen, und die SELECT-Anweisung würde das folgende Ergebnis liefern.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Einfügen von Zeilen in eine Ansicht

Datenzeilen können in eine Ansicht eingefügt werden. Die gleichen Regeln, die für den Befehl UPDATE gelten, gelten auch für den Befehl INSERT.

Hier können wir keine Zeilen in CUSTOMERS_VIEW einfügen, da wir nicht alle NOT NULL-Spalten in diese Ansicht aufgenommen haben. Andernfalls können Sie Zeilen in einer Ansicht auf ähnliche Weise einfügen, wie Sie sie in eine Tabelle einfügen.

Zeilen in einer Ansicht löschen

Datenzeilen können aus einer Ansicht gelöscht werden. Die gleichen Regeln, die für die Befehle UPDATE und INSERT gelten, gelten auch für den Befehl DELETE.

Es folgt ein Beispiel zum Löschen eines Datensatzes mit AGE = 22.

SQL > DELETE FROM CUSTOMERS_VIEW
   WHERE age = 22;

Dies würde letztendlich eine Zeile aus der Basistabelle CUSTOMERS löschen und dasselbe würde sich in der Ansicht selbst widerspiegeln. Versuchen Sie nun, die Basistabelle abzufragen, und die SELECT-Anweisung würde das folgende Ergebnis liefern.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Ansichten löschen

Wenn Sie eine Ansicht haben, müssen Sie die Ansicht natürlich löschen, wenn sie nicht mehr benötigt wird. Die Syntax ist sehr einfach und wird unten angegeben -

DROP VIEW view_name;

Im Folgenden finden Sie ein Beispiel zum Löschen von CUSTOMERS_VIEW aus der Tabelle CUSTOMERS.

DROP VIEW CUSTOMERS_VIEW;