In MySQL ist eine Ansicht eine virtuelle Tabelle, und die tatsächlichen Daten stammen aus der Basistabelle. Wenn Sie also die Dateninformationen in der Ansicht durch Einfüge-, Änderungs- und Löschvorgänge aktualisieren, werden im Wesentlichen die Dateninformationen der Basistabelle aktualisiert, auf die verwiesen wird die Ansicht; Das Syntaxformat ist „ALTER VIEW
AS “. 语句>
(Empfohlenes Tutorial: MySQL-Video-Tutorial)
Ändern Sie den Ansichtsinhalt
Die Ansicht ist eine virtuelle Tabelle, die tatsächlichen Daten stammen aus der Basistabelle, also durch Einfügen , Ändern und Der Löschvorgang aktualisiert die Daten in der Ansicht, wodurch im Wesentlichen die Daten in der Basistabelle aktualisiert werden, auf die die Ansicht verweist.
Hinweis: Die Änderung der Ansicht ist eine Änderung der Basistabelle. Bei der Änderung muss daher die Datendefinition der Basistabelle erfüllt sein.
Grundlegende Syntax
Mit der ALTER VIEW-Anweisung können Sie eine vorhandene Ansicht ändern.
Das Syntaxformat lautet wie folgt:
ALTER VIEW <视图名> AS <SELECT语句>
Die Syntaxbeschreibung lautet wie folgt:
Es ist zu beachten, dass die Verwendung der ALTER VIEW-Anweisung erfordert, dass der Benutzer über CREATE VIEW- und DROP-Berechtigungen für die Ansicht sowie bestimmte Berechtigungen für jede durch die SELECT-Anweisung ausgewählte Spalte verfügt.
Zusätzlich zum Ändern der Definition einer Ansicht über ALTER VIEW können Sie auch die DROP VIEW-Anweisung verwenden, um zuerst die Ansicht zu löschen, und dann die CREATE VIEW-Anweisung verwenden.
Einige Ansichten sind aktualisierbar. Das heißt, Sie können den Inhalt der Basistabelle mithilfe von Anweisungen wie UPDATE, DELETE oder INSERT aktualisieren. Für eine aktualisierbare Ansicht muss eine Eins-zu-eins-Beziehung zwischen den Zeilen in der Ansicht und den Zeilen der zugrunde liegenden Tabelle bestehen.
Es gibt auch einige spezifische andere Strukturen, die die Ansicht nicht aktualisierbar machen. Genauer gesagt ist eine Ansicht nicht aktualisierbar, wenn sie eine der folgenden Strukturen enthält:
Aggregationsfunktionen SUM(), MIN(), MAX(), COUNT() usw.
DISTINCT-Schlüsselwort.
GROUP BY-Klausel.
HAVING-Klausel.
UNION- oder UNION ALL-Operator.
Die Unterabfrage in der Auswahlliste.
Eine nicht aktualisierbare Ansicht in der FROM-Klausel oder mit mehreren Tabellen.
Eine Unterabfrage in der WHERE-Klausel, die auf die Tabelle in der FROM-Klausel verweist. Die Option
ALGORITHMUS ist TEMPTABLE (die Verwendung temporärer Tabellen führt dazu, dass die Ansicht immer nicht aktualisierbar ist).
【Beispiel 1】Verwenden Sie die ALTER-Anweisung, um die Ansicht view_students_info zu ändern. Die Eingabe-SQL-Anweisung und die Ausführungsergebnisse sind wie folgt.
mysql> ALTER VIEW view_students_info -> AS SELECT id,name,age -> FROM tb_students_info; Query OK, 0 rows affected (0.07 sec) mysql> DESC view_students_info; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | | 0 | | | name | varchar(45) | YES | | NULL | | | age | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.03 sec)
Benutzer können über Ansichten Daten in die Tabelle einfügen, aktualisieren und löschen, da es sich bei der Ansicht um eine virtuelle Tabelle ohne Daten handelt. Beim Aktualisieren über eine Ansicht wird die Basistabelle zur Aktualisierung aufgerufen. Wenn Datensätze zur Ansicht hinzugefügt oder gelöscht werden, werden Datensätze tatsächlich zur Basistabelle hinzugefügt oder gelöscht.
Sehen Sie sich den Dateninhalt der Ansicht view_students_info wie unten gezeigt an.
mysql> SELECT * FROM view_students_info; +----+--------+------+ | id | name | age | +----+--------+------+ | 1 | Dany | 24 | | 2 | Green | 23 | | 3 | Henry | 23 | | 4 | Jane | 22 | | 5 | Jim | 24 | | 6 | John | 21 | | 7 | Lily | 22 | | 8 | Susan | 23 | | 9 | Thomas | 22 | | 10 | Tom | 23 | +----+--------+------+ 10 rows in set (0.00 sec)
[Beispiel 2] Verwenden Sie die UPDATE-Anweisung, um die Ansicht view_students_info zu aktualisieren. Die Eingabe-SQL-Anweisung und die Ausführungsergebnisse lauten wie folgt.
mysql> UPDATE view_students_info -> SET age=25 WHERE id=1; Query OK, 0 rows affected (0.24 sec) Rows matched: 1 Changed: 0 Warnings: 0 mysql> SELECT * FROM view_students_info; +----+--------+------+ | id | name | age | +----+--------+------+ | 1 | Dany | 25 | | 2 | Green | 23 | | 3 | Henry | 23 | | 4 | Jane | 22 | | 5 | Jim | 24 | | 6 | John | 21 | | 7 | Lily | 22 | | 8 | Susan | 23 | | 9 | Thomas | 22 | | 10 | Tom | 23 | +----+--------+------+ 10 rows in set (0.00 sec)
Sehen Sie sich den Inhalt der Basistabelle tb_students_info an und sehen Sie sich v_students_info an, wie unten gezeigt.
mysql> SELECT * FROM tb_students_info; +----+--------+---------+------+------+--------+------------+ | id | name | dept_id | age | sex | height | login_date | +----+--------+---------+------+------+--------+------------+ | 1 | Dany | 1 | 25 | F | 160 | 2015-09-10 | | 2 | Green | 3 | 23 | F | 158 | 2016-10-22 | | 3 | Henry | 2 | 23 | M | 185 | 2015-05-31 | | 4 | Jane | 1 | 22 | F | 162 | 2016-12-20 | | 5 | Jim | 1 | 24 | M | 175 | 2016-01-15 | | 6 | John | 2 | 21 | M | 172 | 2015-11-11 | | 7 | Lily | 6 | 22 | F | 165 | 2016-02-26 | | 8 | Susan | 4 | 23 | F | 170 | 2015-10-01 | | 9 | Thomas | 3 | 22 | M | 178 | 2016-06-07 | | 10 | Tom | 4 | 23 | M | 165 | 2016-08-05 | +----+--------+---------+------+------+--------+------------+ 10 rows in set (0.00 sec) mysql> SELECT * FROM v_students_info; +------+--------+------+-------+-------+----------+------------+ | s_id | s_name | d_id | s_age | s_sex | s_height | s_date | +------+--------+------+-------+-------+----------+------------+ | 1 | Dany | 1 | 25 | F | 160 | 2015-09-10 | | 2 | Green | 3 | 23 | F | 158 | 2016-10-22 | | 3 | Henry | 2 | 23 | M | 185 | 2015-05-31 | | 4 | Jane | 1 | 22 | F | 162 | 2016-12-20 | | 5 | Jim | 1 | 24 | M | 175 | 2016-01-15 | | 6 | John | 2 | 21 | M | 172 | 2015-11-11 | | 7 | Lily | 6 | 22 | F | 165 | 2016-02-26 | | 8 | Susan | 4 | 23 | F | 170 | 2015-10-01 | | 9 | Thomas | 3 | 22 | M | 178 | 2016-06-07 | | 10 | Tom | 4 | 23 | M | 165 | 2016-08-05 | +------+--------+------+-------+-------+----------+------------+ 10 rows in set (0.00 sec)
Das obige ist der detaillierte Inhalt vonSo ändern Sie die Informationen in der Tabelle in der MySQL-Ansicht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!