Heim > Datenbank > MySQL-Tutorial > Was soll ich tun, wenn MySQL keine Ansicht erstellen kann?

Was soll ich tun, wenn MySQL keine Ansicht erstellen kann?

coldplay.xixi
Freigeben: 2020-10-13 16:51:17
Original
3300 Leute haben es durchsucht

Lösung für das Problem, dass MySQL keine Ansicht erstellen kann: Verwenden Sie die CREATE VIEW-Anweisung, um eine Ansicht zu erstellen. Der Code lautet [CREATE VIEW ], wobei [] der Name ist die angegebene Ansicht. 语句>

Was soll ich tun, wenn MySQL keine Ansicht erstellen kann?

Weitere verwandte kostenlose Lernempfehlungen: MySQL-Tutorial(Video)

MySQL kann keine Ansichtslösung erstellen:

Grundlegende Grammatik

Ansichten können mit der CREATE VIEW-Anweisung erstellt werden.

Das Syntaxformat lautet wie folgt:

CREATE VIEW <视图名> AS <SELECT语句>
Nach dem Login kopieren

Die Syntaxbeschreibung lautet wie folgt.

  • : 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.

  • : Geben Sie die SELECT-Anweisung an, um eine Ansicht zu erstellen, die zum Abfragen mehrerer Basistabellen oder Quellansichten verwendet werden kann. Für die Angabe der SELECT-Anweisung in der erstellten Ansicht gelten folgende Einschränkungen: Zusätzlich zur CREATE VIEW-Berechtigung verfügt der Benutzer auch über entsprechende Berechtigungen für die zugrunde liegenden Tabellen und andere an der Operation beteiligte Ansichten.

  • SELECT-Anweisungen können 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)
Nach dem Login kopieren

【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 sind 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)
Nach dem Login kopieren

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 sind 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)
Nach dem Login kopieren
Nach dem Login kopieren

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 mithilfe 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)
Nach dem Login kopieren
Nach dem Login kopieren

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.

Abfrageansicht

Sobald die Ansicht definiert ist, können Sie die SELECT-Anweisung verwenden, um die Daten in der Ansicht abzufragen, genau wie beim Abfragen der Datentabelle. Die Syntax ist dieselbe wie beim Abfragen der Daten in der Basistabelle.

Ansichten werden hauptsächlich für Abfragen in den folgenden Aspekten verwendet:

Verwenden Sie Ansichten, um die abgerufenen Daten neu zu formatieren.

  • Verwenden Sie Ansichten, um komplexe Tabellenverknüpfungen zu vereinfachen.

  • Verwenden Sie Ansichten, um Daten zu filtern.

  • DESCRIBE kann zum Anzeigen der Ansicht verwendet werden. Die Syntax lautet wie folgt:

    [Beispiel 4]
Zeigen Sie die Definition der Ansicht v_students_info über die Eingabe-SQL-Anweisung an Die Ausführungsergebnisse sind wie folgt.

mysql> DESCRIBE v_students_info;
+----------+---------------+------+-----+------------+-------+
| Field  | Type     | Null | Key | Default  | Extra |
+----------+---------------+------+-----+------------+-------+
| s_id   | int(11)    | NO  |   | 0     |    |
| s_name  | varchar(45)  | YES |   | NULL    |    |
| d_id   | int(11)    | YES |   | NULL    |    |
| s_age  | int(11)    | YES |   | NULL    |    |
| s_sex  | enum(&#39;M&#39;,&#39;F&#39;) | YES |   | NULL    |    |
| s_height | int(11)    | YES |   | NULL    |    |
| s_date  | date     | YES |   | 2016-10-22 |    |
+----------+---------------+------+-----+------------+-------+
7 rows in set (0.04 sec)
Nach dem Login kopieren

Hinweis: DESCRIBE kann im Allgemeinen als DESC abgekürzt werden. Das Ausführungsergebnis der Eingabe dieses Befehls ist das gleiche wie die Eingabe von DESCRIBE.

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn MySQL keine Ansicht erstellen kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage