Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich eine Ansicht in MySQL? Was ist eine create-Anweisung?

Wie erstelle ich eine Ansicht in MySQL? Was ist eine create-Anweisung?

青灯夜游
青灯夜游Original
2020-10-13 16:11:5219576Durchsuche

In MySQL können Sie die „CREATE VIEW“-Anweisung verwenden, um eine Ansicht zu erstellen. Das Syntaxformat ist „CREATE VIEW 7198ecf44dc41e733bea71bd84066837 AS 880d27e99f811da8c5e8e0b223e6d2b1“; Unterabfragen in Klauseln können nicht auf vorbereitete Anweisungsparameter verweisen. 语句>语句>

Wie erstelle ich eine Ansicht in MySQL? Was ist eine create-Anweisung?

(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.

  • a298568fea0eab1d5b0fd78e193ddf6e: Geben Sie den Namen der Ansicht an. Der Name muss in der Datenbank eindeutig sein und darf nicht denselben Namen wie eine andere Tabelle oder Ansicht haben.

  • 6ff676c17b5f34eb0e4cf1099e5a0452: Geben Sie die SELECT-Anweisung an, um eine Ansicht zu erstellen, die zum Abfragen mehrerer Basistabellen oder Quellansichten verwendet werden kann.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn