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.
- Die SELECT-Anweisung, die zum Erstellen der Ansicht verwendet wird, sollte keine GROUP BY-Klausel oder enthalten BESTELLEN NACH Klausel.
- Die SELECT-Anweisung sollte das nicht haben UNTERSCHEIDBAR Stichwort.
- Die Ansicht sollte alle NOT NULL-Werte haben.
- Die Ansicht sollte nicht mit verschachtelten oder komplexen Abfragen erstellt werden.
- 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)Quiz erstellen
VALUES(6);