Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So verwenden Sie Ansichten in einer MySQL-Datenbank

Eine Ansicht in MySQL ist eine benannte Abfrage, die ausgelöst werden kann, um Daten anzuzeigen, die in anderen Tabellen gespeichert sind. Mit anderen Worten, Views sind benutzerdefinierte virtuelle Tabellen. Ansichten können verwendet werden für:

  • Verbessern Sie die Datenbanksicherheit. Wenn Ihre Datenbank vertrauliche Informationen enthält, die gesichert werden müssen, hilft Ihnen die Verwendung einer Ansicht beim Isolieren der Daten. Eine Ansicht kann mit einem vordefinierten Ergebnissatz erstellt werden, und Sie können Benutzern nur Zugriff auf diese Ansicht gewähren, anstatt auf die Tabelle, die vertrauliche Informationen enthält.
  • Verschieben Sie komplexe Geschäftslogik auf den Datenbankserver. Anstatt häufig genutzte Softwarelogik in verschiedenen Clients zu codieren, kann ein Entwickler die Logik über eine View in die Datenbankebene verlagern. Beispielsweise kann eine Ansicht erstellt werden, um Kundenklassifikationen in Abhängigkeit von ihrem Gesamtumsatz anzuzeigen.
  • Datenablenkung reduzieren. Eine Ansicht kann Ergebnisse aus verschiedenen Tabellen kombinieren und nur die relevanten Spalten anzeigen, wenn sie aufgerufen wird.

In diesem Handbuch erfahren Sie:

  • Wie die Syntax einer MySQL-Ansicht aufgebaut ist.
  • So erstellen Sie eine MySQL-Ansicht.
  • So rufen Sie eine MySQL-Ansicht auf.
  • Wie man eine Ansicht in MySQL löscht.

Bevor Sie beginnen

Um dieser Anleitung zu folgen, stellen Sie sicher, dass Sie Folgendes haben:

  1. Ein Linode, auf dem Sie die MySQL-Software ausführen. Sie können dem Leitfaden Erste Schritte mit Linode folgen, um einen Linode bereitzustellen.

  2. Die MySQL-Serversoftware (oder MariaDB), die auf Ihrem Linode installiert ist. Bitte lesen Sie den MySQL-Abschnitt, der Anleitungen enthält, die beschreiben, wie MySQL auf mehreren Linux-Distributionen installiert wird.

Vorbereiten der Datenbank

Bevor Sie Ihre MySQL-Ansichten erstellen, erstellen Sie eine Beispieldatenbank, definieren Sie einige Tabellen und füllen Sie sie zuerst mit einigen Daten:

  1. SSH zu Ihrem Linode. Geben Sie dann diesen Befehl ein, um sich bei MySQL als Root-Benutzer anzumelden:

    mysql -u root -p
    

    Wenn Sie dazu aufgefordert werden, geben Sie das Root-Passwort Ihres MySQL-Servers ein und drücken Sie Enter um fortzufahren.

    Hinweis

    Wenn Ihr Passwort nicht akzeptiert wird, müssen Sie möglicherweise den vorherigen Befehl mit sudo ausführen :

    sudo mysql -u root -p
    
  2. Wenn Ihr Passwort akzeptiert wird, sollten Sie die MySQL-Eingabeaufforderung sehen:

    
    mysql >
    
    Hinweis

    Wenn Sie MariaDB verwenden, sehen Sie möglicherweise stattdessen eine Eingabeaufforderung wie die folgende:

    
    MariaDB [(none)]>
    
  3. Führen Sie als Nächstes diesen SQL-Befehl aus, um eine Beispieldatenbank mit dem Namen sample_database zu erstellen :

    CREATE DATABASE sample_database;
    

    Sie sollten diese Ausgabe sehen, die bestätigt, dass die Datenbank erfolgreich erstellt wurde:

    
    Query OK, 1 row affected (0.02 sec)
    
  4. Wählen Sie sample_database aus Datenbank:

    USE sample_database;
    

    Sie sollten diese Ausgabe sehen:

    
    Database changed
    
  5. Führen Sie diesen Befehl aus, um einen customers zu erstellen Tabelle:

     CREATE TABLE customers
     (
     customer_id BIGINT PRIMARY KEY AUTO_INCREMENT,
     customer_name VARCHAR(50)
     ) ENGINE = InnoDB;
    

    Sie sollten diese Ausgabe sehen:

    
    Query OK, 0 rows affected (0.07 sec)
    
  6. Füllen Sie als Nächstes die customers aus Tabelle mit drei Datensätzen. Führen Sie das folgende INSERT aus Befehle nacheinander:

    INSERT INTO customers (customer_name) VALUES ('Leslie');
    INSERT INTO customers (customer_name) VALUES ('Andy');
    INSERT INTO customers (customer_name) VALUES ('Ben');
    

    Die folgende Ausgabe wird nach dem Einfügen jedes Datensatzes angezeigt:

    
    Query OK, 1 row affected (0.08 sec)
    ...
    
  7. Stellen Sie sicher, dass die Beispieldatensätze in die Datenbank eingefügt wurden, indem Sie diesen SELECT ausführen Befehl:

    SELECT * FROM customers;
    

    Es erscheint diese Ausgabe, die bestätigt, dass die Daten im vorherigen Schritt erfolgreich eingefügt wurden:

    
    +-------------+---------------+
    | customer_id | customer_name |
    +-------------+---------------+
    |           1 | Leslie        |
    |           2 | Andy          |
    |           3 | Ben           |
    +-------------+---------------+
    3 rows in set (0.01 sec)
    
  8. Erstellen Sie als Nächstes einen sales Tisch. Führen Sie diesen Befehl aus:

     CREATE TABLE sales
     (
     customer_id BIGINT PRIMARY KEY AUTO_INCREMENT,
     monthly_sales DECIMAL(17,2)
     ) ENGINE = InnoDB;
    

    Diese Ausgabe erscheint:

    
    Query OK, 0 rows affected (0.07 sec)
    
  9. Fügen Sie dann einige Daten zu den sales hinzu Tisch. Führen Sie diese Befehle nacheinander aus:

    INSERT INTO sales (customer_id, monthly_sales) VALUES ('1','500.27');
    INSERT INTO sales (customer_id, monthly_sales) VALUES ('2','7600.32');
    INSERT INTO sales (customer_id, monthly_sales) VALUES ('3', '25879.63');
    

    Nach dem Einfügen jedes Verkaufsdatensatzes erscheint diese Ausgabe:

    
    Query OK, 1 row affected (0.01 sec)
    ...
    
  10. Führen Sie als Nächstes ein SELECT aus Abfrage, um zu überprüfen, ob die Verkaufsdaten in die Tabelle eingefügt wurden:

    SELECT * FROM sales;
    

    Diese Ausgabe erscheint, die bestätigt, dass die Verkaufsdaten im vorherigen Schritt erfolgreich eingefügt wurden:

    
    
    
    
    +-------------+---------------+
    | customer_id | monthly_sales |
    +-------------+---------------+
    |           1 |        500.27 |
    |           2 |       7600.32 |
    |           3 |      25879.63 |
    +-------------+---------------+
    3 rows in set (0.00 sec)
    

Sie haben die Datenbank und die zu bearbeitenden Tabellen definiert. Der nächste Abschnitt beschreibt die Syntax einer MySQL-Ansicht.

Die MySQL-Ansichtssyntax

Dies ist eine vereinfachte Version der MySQL-Ansichtssyntax:

    CREATE
    VIEW view_name
    AS select_statement
  • view_name :Hier muss der Name der MySQL-Ansicht definiert werden. Es empfiehlt sich, einen aussagekräftigen Namen zu verwenden, damit Sie sich später an die Funktion der Ansicht erinnern können.

  • select_statement :Dies ist die SQL-Abfrage, die mit der definierten Ansicht gekoppelt ist. Wenn die Ansicht aufgerufen wird, führt MySQL diese Abfrage aus, um ein Recordset zurückzugeben.

Erstellen einer MySQL-Ansicht

Dieser Abschnitt stellt ein Beispiel für eine MySQL-Ansicht vor. Diese Ansicht wird verwendet, um Kunden aus Ihrer Beispieldatenbank nach der Anzahl ihrer monatlichen Verkäufe zu klassifizieren.

Stellen Sie sicher, dass Sie bei Ihrem MySQL-Server angemeldet sind. Führen Sie dann den folgenden Befehl aus, um eine customers_membership zu erstellen Ansicht:

CREATE
VIEW customers_membership
AS SELECT sales.customer_id,
customer_name,
(IF(sales.monthly_sales >= 5000, 'PREMIUM', 'BASIC')) as membership
FROM sales
LEFT JOIN customers
ON sales.customer_id = customers.customer_id;

Wenn die Ansicht erfolgreich erstellt wurde, sollten Sie die unten gezeigte Ausgabe sehen:


Query OK, 0 rows affected (0.01 sec)

Der obige MySQL-Befehl erstellt eine Ansicht mit dem Namen customers_membership das sich den customers anschließt und sales Tabelle mit dem PRIMARY KEY customer_id . Der logische IF(expression, value_if_true, value_if_false) Kontoauszugslogik wird verwendet, um die Mitgliedschaft des Kunden aus seinen monatlichen Verkäufen zu bestimmen:

  • Wenn der Umsatz eines Kunden 5.000 oder mehr beträgt, klassifiziert die Ansicht den Kunden als PREMIUM Mitglied.

  • Andernfalls (wenn die Verkäufe unter 5,000 liegen ) wird der Kunde als BASIC eingestuft Mitglied.

Die customers_membership Die Ansicht ist jetzt in der Datenbank gespeichert. Der nächste Abschnitt zeigt, wie man eine MySQL-Ansicht aufruft und ein Recordset anzeigt, ohne die Basistabellen direkt abzufragen.

Aufrufen einer MySQL-Ansicht

Dieser Abschnitt zeigt, wie Sie die oben erstellte MySQL-Ansicht aufrufen und bestätigen, dass sie wie erwartet funktioniert. Sobald eine Ansicht erstellt wurde, ist sie als Datenbankobjekt sichtbar und kann mit SELECT aufgerufen werden Aussage.

  1. Zum Aufrufen der customers_membership ansehen, ausführen:

    SELECT * FROM customers_membership;
    

    Wenn die Ansicht wie erwartet funktioniert, sollten Sie jetzt eine Liste der Kunden mit ihrer generierten membership sehen Werte basierend auf ihren Verkäufen. Seit Leslie der Umsatz von unter 5000 (500,27) lag, gibt die Ansicht die Mitgliedschaft des Kunden als BASIC aus . Andy und Ben Die Verkäufe von lagen bei 7600,32 bzw. 25879,63 und das macht sie zu PREMIUM Mitglieder:

    
    +-------------+---------------+------------+
    | customer_id | customer_name | membership |
    +-------------+---------------+------------+
    |           1 | Leslie        | BASIC      |
    |           2 | Andy          | PREMIUM    |
    |           3 | Ben           | PREMIUM    |
    +-------------+---------------+------------+
    3 rows in set (0.00 sec)
    
  2. Sobald die Daten einer Basistabelle aktualisiert wurden und Sie erneut eine MySQL-Ansicht aufrufen, sollten Sie die neuesten Informationen sehen. Ansichten ziehen Informationen aus ihren Basistabellen und speichern die Daten nicht. Um zu demonstrieren, wie eine Ansicht aktualisierte Informationen aus den Basistabellen abruft, fügen Sie einen weiteren Kunden namens Rajie hinzu an die customers Tabelle:

    INSERT INTO customers (customer_name) VALUES ('Rajie');
    

    Diese Ausgabe erscheint:

    
    Query OK, 1 row affected (0.01 sec)
    
  3. Fügen Sie dann die monatlichen Verkaufsinformationen des Kunden zur Verkaufstabelle hinzu:

    INSERT INTO sales (customer_id, monthly_sales) VALUES ('4', '147.41');
    

    Diese Ausgabe erscheint:

    
    Query OK, 1 row affected (0.01 sec)
    
  4. Rufen Sie als Nächstes customers_membership auf erneut ansehen:

    SELECT * FROM customers_membership;
    

    Die folgende Ausgabe wird angezeigt, die bestätigt, dass die Ansicht Änderungen erfassen und die Informationen der neuen Kunden wie erwartet abrufen kann:

    
    +-------------+---------------+------------+
    | customer_id | customer_name | membership |
    +-------------+---------------+------------+
    |           1 | Leslie        | BASIC      |
    |           2 | Andy          | PREMIUM    |
    |           3 | Ben           | PREMIUM    |
    |           4 | Rajie         | BASIC      |
    +-------------+---------------+------------+
    4 rows in set (0.00 sec)
    

    Wie Sie im Ansichtsdatensatz oben sehen können, haben Sie jetzt einen neuen Kunden namens Rajie mit einem BASIC Mitgliedschaft.

Löschen einer MySQL-Ansicht

Genau wie andere Datenbankobjekte können Sie Ansichten löschen, wenn Sie sie nicht mehr benötigen. Dies ist die grundlegende Syntax zum Löschen einer MySQL-Ansicht:

    DROP VIEW IF EXISTS view_name;
  1. Bevor Sie eine MySQL-Ansicht löschen, identifizieren Sie zuerst ihren Namen, indem Sie den folgenden Befehl ausführen:

    SHOW FULL TABLES WHERE TABLE_TYPE LIKE 'VIEW';
    

    Eine Liste aller Ansichten in der aktuell ausgewählten Datenbank wird angezeigt:

    
    +---------------------------+------------+
    | Tables_in_sample_database | Table_type |
    +---------------------------+------------+
    | customers_membership      | VIEW       |
    +---------------------------+------------+
    1 row in set (0.01 sec)
    
  2. In diesem Fall lautet der Name der Ansicht, die Sie löschen möchten, customers_membership . Um es also zu löschen, führen Sie Folgendes aus:

    DROP VIEW IF EXISTS customers_membership;
    

    Stellen Sie sicher, dass die folgende Ausgabe angezeigt wird, nachdem die Ansicht aus der Datenbank gelöscht wurde:

    
    Query OK, 0 rows affected (0.01 sec)
    
    Hinweis Bitte beachten Sie, wenn Sie versuchen, eine MySQL-Ansicht zu löschen, die nicht existiert, ohne den IF EXISTS zu verwenden Schlüsselwort gibt MySQL einen Fehler aus.
  3. Wenn der Befehl aus Schritt 1 erneut ausgeführt wird, sollte es jetzt keine Ergebnisse geben:

    SHOW FULL TABLES WHERE TABLE_TYPE LIKE 'VIEW';
    
    
    Empty set (0.000 sec)
    

Weitere Informationen

Weitere Informationen zu diesem Thema finden Sie in den folgenden Ressourcen. Obwohl diese in der Hoffnung bereitgestellt werden, dass sie nützlich sind, beachten Sie bitte, dass wir nicht für die Genauigkeit oder Aktualität extern gehosteter Materialien garantieren können.

  • MySQL - Verwenden von Ansichten