In MySQL können Sie die „CREATE VIEW“-Anweisung verwenden, um eine Ansicht zu erstellen. Das Syntaxformat ist „CREATE VIEW
AS
(Empfohlenes Tutorial: MySQL-Video-Tutorial)
Das Erstellen einer Ansicht bezieht sich auf das Einrichten einer Ansicht für eine vorhandene MySQL-Datenbanktabelle. Ansichten können in einer Tabelle oder in mehreren Tabellen erstellt werden.
Grundlegende Syntax
Sie können die CREATE VIEW-Anweisung verwenden, um eine Ansicht zu erstellen.
Das Syntaxformat lautet wie folgt:
CREATE VIEW <视图名> AS <SELECT语句>
Die Syntaxbeschreibung lautet wie folgt.
Es gibt die folgenden Einschränkungen für die Spezifikation von SELECT-Anweisungen in Ansichten erstellen:
Zusätzlich zu den CREATE VIEW-Berechtigungen verfügen Benutzer auch über relevante Berechtigungen für die zugrunde liegenden Tabellen und andere Ansichten, die an der Operation beteiligt sind.
Die SELECT-Anweisung kann nicht auf System- oder Benutzervariablen verweisen.
SELECT-Anweisung darf keine Unterabfragen in der FROM-Klausel enthalten.
SELECT-Anweisungen können nicht auf vorbereitete Anweisungsparameter verweisen.
Die Tabelle oder Ansicht, auf die in der Ansichtsdefinition verwiesen wird, muss vorhanden sein. Nachdem Sie die Ansicht erstellt haben, können Sie jedoch die Tabelle oder Ansicht löschen, auf die die Definition verweist. Mit der CHECK TABLE-Anweisung können Sie die Ansichtsdefinition auf solche Probleme überprüfen.
ORDER BY-Anweisungen sind in Ansichtsdefinitionen zulässig. Wenn Sie jedoch aus einer bestimmten Ansicht auswählen, die eine eigene ORDER BY-Anweisung verwendet, wird ORDER BY in der Ansichtsdefinition ignoriert.
Die TEMPORARY-Tabelle (temporäre Tabelle) kann in der Ansichtsdefinition nicht referenziert werden und die TEMPORARY-Ansicht kann nicht erstellt werden.
MIT CHECK-OPTION bedeutet, dass beim Ändern der Ansicht überprüft wird, ob die eingefügten Daten die von WHERE festgelegten Bedingungen erfüllen.
Ansichten basierend auf einer einzelnen Tabelle erstellen
MySQL kann Ansichten einer einzelnen Datentabelle erstellen.
Sehen Sie sich die Daten der Tabelle tb_students_info in der Datenbank test_db 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)
【Beispiel 1】Erstellen Sie eine Ansicht mit dem Namen view_students_info in der Tabelle tb_students_info. Die Eingabe-SQL-Anweisung und die Ausführungsergebnisse lauten wie folgt.
mysql> CREATE VIEW view_students_info -> AS SELECT * FROM tb_students_info; Query OK, 0 rows affected (0.00 sec) mysql> SELECT * FROM view_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.04 sec)
Standardmäßig verfügt die erstellte Ansicht über dieselben Felder wie die Basistabelle. Sie können eine Ansicht auch erstellen, indem Sie den Namen des Ansichtsfelds angeben.
【Beispiel 2】Erstellen Sie eine Ansicht mit dem Namen v_students_info in der Tabelle tb_students_info. Die Eingabe-SQL-Anweisung und die Ausführungsergebnisse lauten wie folgt.
mysql> CREATE VIEW v_students_info -> (s_id,s_name,d_id,s_age,s_sex,s_height,s_date) -> AS SELECT id,name,dept_id,age,sex,height,login_date -> FROM tb_students_info; Query OK, 0 rows affected (0.06 sec) mysql> SELECT * FROM v_students_info; +------+--------+------+-------+-------+----------+------------+ | s_id | s_name | d_id | s_age | s_sex | s_height | s_date | +------+--------+------+-------+-------+----------+------------+ | 1 | Dany | 1 | 24 | 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.01 sec)
Sie können sehen, dass die Feldnamen in den beiden Ansichten view_students_info und v_students_info unterschiedlich sind, die Daten jedoch gleich sind. Daher müssen Benutzer bei der Verwendung von Ansichten möglicherweise nicht die Struktur der Basistabelle verstehen, geschweige denn die Daten in der tatsächlichen Tabelle, wodurch die Sicherheit der Datenbank gewährleistet wird.
Erstellen Sie Ansichten basierend auf mehreren Tabellen
In MySQL können Sie mit der CREATE VIEW-Anweisung auch Ansichten in mehr als zwei Tabellen erstellen.
【Beispiel 3】Erstellen Sie die Ansicht v_students_info für die Tabelle tb_student_info und die Tabelle tb_departments. Die Eingabe-SQL-Anweisung und das Ausführungsergebnis lauten wie folgt.
mysql> CREATE VIEW v_students_info -> (s_id,s_name,d_id,s_age,s_sex,s_height,s_date) -> AS SELECT id,name,dept_id,age,sex,height,login_date -> FROM tb_students_info; Query OK, 0 rows affected (0.06 sec) mysql> SELECT * FROM v_students_info; +------+--------+------+-------+-------+----------+------------+ | s_id | s_name | d_id | s_age | s_sex | s_height | s_date | +------+--------+------+-------+-------+----------+------------+ | 1 | Dany | 1 | 24 | 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.01 sec)
Die Daten in der Basistabelle können durch diese Ansicht gut geschützt werden. Die Ansicht enthält s_id, s_name und dept_name, das Feld s_id entspricht dem Feld id in der Tabelle tb_students_info, das Feld s_name entspricht dem Feld name in der Tabelle tb_students_info und das Feld dept_name entspricht dem Feld dept_name in der Tabelle tb_departments.
Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Ansicht in MySQL? Was ist eine create-Anweisung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!