logo

SQL-Ansichten

Eine Ansicht in SQL ist eine gespeicherte SQL-Abfrage, die als virtuelle Tabelle fungiert. Im Gegensatz zu regulären Tabellen speichern Ansichten selbst keine Daten. Stattdessen generieren sie Daten dynamisch, indem sie bei jedem Zugriff die in der Ansicht definierte SQL-Abfrage ausführen.

Es kann Daten aus einer oder mehreren Tabellen abrufen und in einem benutzerdefinierten Format darstellen, sodass Entwickler:

  • Komplexe Abfragen vereinfachen: Kapseln Sie komplexe Verknüpfungen und Bedingungen in einem einzigen Objekt.
  • Erhöhen Sie die Sicherheit: Beschränken Sie den Zugriff auf bestimmte Spalten oder Zeilen.
  • Daten flexibel präsentieren: Stellen Sie maßgeschneiderte Datenansichten für verschiedene Benutzer bereit.

Wir werden diese beiden SQL-Tabellen als Beispiele verwenden.



Studentendetails:

-- Create StudentDetails table  
CREATE TABLE StudentDetails (
S_ID INT PRIMARY KEY
NAME VARCHAR(255)
ADDRESS VARCHAR(255)
);

INSERT INTO StudentDetails (S_ID NAME ADDRESS)
VALUES
(1 'Harsh' 'Kolkata')
(2 'Ashish' 'Durgapur')
(3 'Pratik' 'Delhi')
(4 'Dhanraj' 'Bihar')
(5 'Ram' 'Rajasthan');

Ausgabe:

S_ID

Name

Adresse

1

Harsch

Kalkutta

2

Aschisch

Durgapur

3

Üben

Delhi

4

Dhanraj

Bihar

5

RAM

Rajasthan

Studentennoten:

-- Create StudentMarks table  
CREATE TABLE StudentMarks (
ID INT PRIMARY KEY
NAME VARCHAR(255)
Marks INT
Age INT
);

INSERT INTO StudentMarks (ID NAME Marks Age)
VALUES
(1 'Harsh' 90 19)
(2 'Suresh' 50 20)
(3 'Pratik' 80 19)
(4 'Dhanraj' 95 21)
(5 'Ram' 85 18);

Ausgabe:

AUSWEIS

Name

Markierungen

Alter

1

Harsch

90

19

2

Suresh

50

20

3

Üben

80

19

4

Dhanraj

95

21

5

RAM

85

18

ANSICHTEN in SQL ERSTELLEN

Wir können eine Ansicht mit der CREATE VIEW-Anweisung erstellen. Eine Ansicht kann aus einer einzelnen Tabelle oder mehreren Tabellen erstellt werden.

Syntax:

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

Schlüsselbegriffe:

  • Ansichtsname : Name für die Ansicht
  • Tabellenname : Name der Tabelle
  • Zustand : Bedingung zum Auswählen von Zeilen

Beispiel 1: Erstellen einer einfachen Ansicht aus einer einzelnen Tabelle

Beispiel 1.1: In diesem Beispiel erstellen wir eine Ansicht mit dem Namen DetailsView aus der Tabelle StudentDetails.

Abfrage:

CREATE VIEW DetailsView AS  
SELECT NAME ADDRESS
FROM StudentDetails
WHERE S_ID < 5;

Verwenden Sie die folgende Abfrage, um die Daten aus dieser Ansicht abzurufen

SELECT * FROM DetailsView;

Ausgabe: 

Name

Adresse

Harsch

Kalkutta

Aschisch

Durgapur

Üben

Delhi

Dhanraj

Bihar

Beispiel 1.2: Hier erstellen wir eine Ansicht namens StudentNames aus der Tabelle StudentDetails.

Abfrage:

CREATE VIEW StudentNames AS  
SELECT S_ID NAME
FROM StudentDetails
ORDER BY NAME;

Wenn wir nun die Ansicht abfragen als

    SELECT    *     FROM    StudentNames;

Ausgabe: 

S_ID

Name

2

Aschisch

4

Dhanraj

1

Harsch

3

Üben

5

RAM

Wie viele MB sind in einem GB?

Beispiel 2: Erstellen einer Ansicht aus mehreren Tabellen

In diesem Beispiel erstellen wir eine View MarksView, die Daten aus den beiden Tabellen StudentDetails und StudentMarks kombiniert. Um eine Ansicht aus mehreren Tabellen zu erstellen, können wir einfach mehrere Tabellen in die einschließen WÄHLEN Stellungnahme.

Abfrage:

CREATE VIEW MarksView AS  
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;

So zeigen Sie Daten von View MarksView an:

SELECT * FROM MarksView;

Ausgabe:

Name

Adresse

Markierungen

Harsch

Kalkutta

90

Üben

Delhi

80

Dhanraj

Bihar

95

RAM

Rajasthan

85

Verwalten von Ansichten: Aktualisieren und Löschen von Listen

1. Auflisten aller Ansichten in einer Datenbank

Wir können alle Ansichten in einer Datenbank mit der SHOW FULL TABLES-Anweisung oder durch Abfragen der information_schema-Tabellen auflisten.

USE 'database_name';  
SHOW FULL TABLES WHERE table_type LIKE '%VIEW';

Verwendung von information_schema

SELECT table_name  
FROM information_schema.views
WHERE table_schema = 'database_name';

OR

SELECT table_schema table_name view_definition
FROM information_schema.views
WHERE table_schema = 'database_name';

2. Eine Ansicht löschen

Mit SQL können wir eine vorhandene Ansicht löschen. Wir können löschen oder löschen Sie View mit der DROP-Anweisung.

Syntax:

DROP VIEW view_name;

Beispiel: In diesem Beispiel löschen wir die View MarksView.

DROP VIEW MarksView;

3. Aktualisieren einer Ansichtsdefinition

Wenn wir die vorhandenen Daten innerhalb der Ansicht aktualisieren möchten, verwenden Sie die  AKTUALISIEREN  Stellungnahme.

UPDATE view_name  
SET column1 = value1 column2 = value2.... columnN = valueN
WHERE [condition];

Wenn Sie die Ansichtsdefinition aktualisieren möchten, ohne die Daten zu beeinträchtigen, verwenden Sie die Anweisung CREATE OR REPLACE VIEW. Fügen wir zum Beispiel das hinzuAgeSpalte zurMarksView:

CREATE OR REPLACE VIEW view_name AS  
SELECT column1 column2 ...
FROM table_name
WHERE condition;

Notiz: Nicht alle Ansichten können mit der UPDATE-Anweisung aktualisiert werden.

Regeln zum Aktualisieren von Ansichten in SQL:

Um eine Ansicht zu aktualisieren, müssen bestimmte Bedingungen erfüllt sein. Wenn eine dieser Bedingungen zutrifft nicht erfüllt, die Ansicht kann nicht aktualisiert werden.

  1. Die SELECT-Anweisung, die zum Erstellen der Ansicht verwendet wird, sollte keine GROUP BY-Klausel oder enthalten BESTELLEN NACH Klausel.
  2. Die SELECT-Anweisung sollte das nicht haben UNTERSCHEIDBAR Stichwort.
  3. Die Ansicht sollte alle NOT NULL-Werte haben.
  4. Die Ansicht sollte nicht mit verschachtelten oder komplexen Abfragen erstellt werden.
  5. Die Ansicht sollte aus einer einzelnen Tabelle erstellt werden. Wenn die Ansicht mit mehreren Tabellen erstellt wird, dürfen wir die Ansicht nicht aktualisieren.

Fortgeschrittene Techniken mit Ansichten

1. Aktualisieren von Daten über Ansichten

Wir können die CREATE OR REPLACE VIEW-Anweisung verwenden, um Felder aus einer Ansicht hinzuzufügen oder zu ersetzen. Wenn wir die MarksView der Ansicht aktualisieren und das Feld AGE zu dieser Ansicht aus der StudentMarks-Tabelle hinzufügen möchten, können wir dies folgendermaßen tun:

Beispiel:

CREATE OR REPLACE VIEW MarksView AS  
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS StudentMarks.AGE
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;

Wenn wir jetzt alle Daten von MarksView abrufen als:

SELECT * FROM MarksView;

Ausgabe:

Name

Adresse

Römische Zahlen 1 bis 100

Markierungen

Alter

Harsch

Kalkutta

90

19

Üben

Delhi

80

19

Dhanraj

Bihar

95

21

RAM

Rajasthan

85

18

Wir können eine Zeile in eine Ansicht auf die gleiche Weise einfügen wie in eine Tabelle. Wir können das nutzen EINFÜGEN IN Anweisung von SQL zum Einfügen einer Zeile in eine Ansicht. Im folgenden Beispiel fügen wir eine neue Zeile in die View DetailsView ein, die wir oben im Beispiel „Erstellen von Ansichten aus einer einzelnen Tabelle“ erstellt haben.

Beispiel:

INSERT INTO DetailsView(NAME ADDRESS)  
VALUES('Suresh''Gurgaon');

Wenn wir jetzt alle Daten aus DetailsView abrufen als

SELECT * FROM DetailsView;

Ausgabe:

Name

Adresse

Harsch

Kalkutta

Aschisch

Durgapur

Üben

Delhi

Dhanraj

Bihar

Suresh

Gurgaon

3. Eine Zeile aus einer Ansicht löschen

Das Löschen von Zeilen aus einer Ansicht ist ebenso einfach wie das Löschen von Zeilen aus einer Tabelle. Wir können die DELETE-Anweisung von SQL verwenden, um Zeilen aus einer Ansicht zu löschen. Auch das Löschen einer Zeile aus einer Ansicht löscht zunächst die Zeile aus der tatsächlichen Tabelle und die Änderung wird dann in der Ansicht widergespiegelt. In diesem Beispiel löschen wir die letzte Zeile aus der Ansicht DetailsView, die wir gerade im obigen Beispiel zum Einfügen von Zeilen hinzugefügt haben.

Beispiel:

DELETE FROM DetailsView  
WHERE NAME='Suresh';

Wenn wir jetzt alle Daten aus DetailsView abrufen als

SELECT * FROM DetailsView;

Ausgabe: 

Name

Adresse

Harsch

Kalkutta

Aschisch

Durgapur

Üben

Delhi

Dhanraj

Bihar

4. WITH CHECK OPTION-Klausel

Die WITH CHECK OPTION-Klausel in SQL ist eine sehr nützliche Klausel für Ansichten. Es gilt für eine aktualisierbare Ansicht. Es wird verwendet, um Datenänderungen (mit INSERT oder UPDATE) zu verhindern, wenn die Bedingung in der WHERE-Klausel in der CREATE VIEW-Anweisung nicht erfüllt ist.

Wenn wir die WITH CHECK OPTION-Klausel in der CREATE VIEW-Anweisung verwendet haben und die UPDATE- oder INSERT-Klausel die Bedingungen nicht erfüllt, wird ein Fehler zurückgegeben. Im folgenden Beispiel erstellen wir eine View SampleView aus der StudentDetails-Tabelle mit einer WITH CHECK OPTION-Klausel.

Beispiel:

CREATE VIEW SampleView AS  
SELECT S_ID NAME
FROM StudentDetails
WHERE NAME IS NOT NULL
WITH CHECK OPTION;

Wenn wir in dieser Ansicht nun versuchen, eine neue Zeile mit einem Nullwert in die Spalte „NAME“ einzufügen, wird ein Fehler ausgegeben, da die Ansicht mit der Bedingung für die Spalte „NAME“ als NICHT NULL erstellt wird. Obwohl die Ansicht beispielsweise aktualisierbar ist, ist auch die folgende Abfrage für diese Ansicht nicht gültig:

INSERT INTO SampleView(S_ID)  
VALUES(6);
Quiz erstellen