Dieser Artikel beschreibt anhand eines Beispiels, wie eine aktualisierbare Ansicht in MySQL erstellt wird. Teilen Sie uns die Einzelheiten zu Ihrer Information mit: Wir wissen, dass Ansichten in MySQL nicht nur abfragbar, sondern auch aktualisierbar sind. Das bedeutet, dass wir INSERT- oder UPDATE-Anweisungen verwenden können, um Zeilen der Basistabelle über eine aktualisierbare Ansicht einzufügen oder zu aktualisieren. Darüber hinaus können wir die Delete-Anweisung auch verwenden, um die Zeilen der zugrunde liegenden Tabelle über die Ansicht zu löschen. Um jedoch eine aktualisierbare Ansicht zu erstellen, darf die Select-Anweisung, die die Ansicht definiert, keines der folgenden Elemente enthalten:
Wenn wir den Temptable-Algorithmus zum Erstellen einer Ansicht verwenden, können wir die Ansicht nicht aktualisieren. Manchmal können wir jedoch mithilfe innerer Verknüpfungen eine aktualisierbare Ansicht basierend auf mehreren Tabellen erstellen. Lassen Sie uns ohne weitere Umschweife einen Blick darauf werfen, wie eine aktualisierbare Ansicht erstellt wird. Versuchen wir zunächst, eine Ansicht namens „officeInfo“ basierend auf der Tabelle „offices“ zu erstellen, die auf drei Spalten in der Tabelle „offices“ verweist: „officeCode“, „phone“ und „city“: ERSTELLEN ANSICHT officeInfo ALS Wählen Sie Bürocode, Telefon, Stadt VON Büros; Verwenden Sie als Nächstes die folgende Anweisung, um Daten aus der OfficeInfo-Ansicht abzufragen: WÄHLEN * AUS BüroInfo; Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse: mysql> AUSWÄHLEN * VON officeInfo; +------------+------------------+---------------+ | Bürocode | Telefon | Stadt | +------------+------------------+---------------+ | 1 | +1 650 219 4782 | San Francisco | | 2 | +1 215 837 0825 | | 3 | +1 212 555 3000 | | 4 | +33 14 723 4404 | Paris | | 5 | +86 33 224 5000 | Peking | | 6 | +61 2 9264 2451 | | 7 | +44 20 7877 2041 | +------------+------------------+---------------+ 7 Reihen im Set Verwenden Sie dann die folgende Aktualisierungsanweisung über die Ansicht „officeInfo“, um den Wert „officeCode“ in 4, die Bürotelefonnummer, zu ändern: UPDATE BüroInfo SATZ Telefon = '+86 089866668888' WO BüroCode = 4; Überprüfen Sie abschließend die Änderungen, indem Sie die Daten in der OfficeInfo-Ansicht abfragen: mysql> AUSWÄHLEN * AUS BüroInfo WO BüroCode = 4; +------------+------------------+----------+ | Bürocode | Telefon | Stadt | +------------+------------------+----------+ | 4 | +86 089866668888 | Paris | +------------+------------------+----------+ 1 Reihe im Set Wir können überprüfen, ob die Ansichten in der Datenbank aktualisierbar sind, indem wir die Spalte is_updatable aus der Ansichtstabelle in der Datenbank information_schema abfragen. Lassen Sie uns beispielsweise die Datenbank luyaran abfragen, um alle Ansichten abzurufen und anzuzeigen, welche Ansichten aktualisierbar sind: WÄHLEN Tabellenname, ist aktualisierbar AUS information_schema.views WO table_schema = "Tabelle"; Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse: +------------------+--------------+ | Tabellenname | ist aktualisierbar | +------------------+--------------+ | überdurchschnittliche Produkte | JA | | Großverkaufsauftrag | JA | | Kundenbestellungen | NEIN | | Büroinfo | JA | | Verkaufprobestellung | NEIN | +------------------+--------------+ 5 Reihen im Set Versuchen wir, Zeilen über eine Ansicht zu löschen. Erstellen Sie zunächst eine Tabelle mit dem Namen „items“, fügen Sie einige Zeilen in die Tabelle „items“ ein und erstellen Sie eine Ansicht, die Artikel mit einem Preis über 700 abfragt: VERWENDEN Sie testdb; -- Erstellen Sie eine neue Tabelle mit dem Namen „items“ CREATE TABLE-Elemente ( ID INT AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(100) NOT NULL, Preis DECIMAL(11 , 2 ) NICHT NULL ); -- Daten in die Artikeltabelle einfügen INSERT INTO Artikel (Name, Preis) WERTE('Laptop',700,56),('Desktop',699,99),('iPad',700,50); -- Erstellen Sie eine Ansicht basierend auf der Artikeltabelle ERSTELLEN ANSICHT LuxuryItems AS WÄHLEN * AUS Artikel WO Preis > 700; -- Daten aus der LuxuryItems-Ansicht abfragen WÄHLEN * AUS Luxusartikel; Nach der Ausführung der obigen Abfrageanweisung werden die folgenden Ergebnisse erhalten: +----+--------+--------+ | ID | Name | Preis | +----+--------+--------+ | 1 | Laptop | 700,56 | | 3 | iPad | 700.5 | +----+--------+--------+ 2 Reihen im Set Verwenden Sie anschließend die DELETE-Anweisung, um die Zeile mit der ID 3 zu löschen: LÖSCHEN AUS LuxuryItems WO Ich würde = 3; mysql gibt eine Meldung zurück, die angibt, dass 1 Zeile betroffen war:
Lassen Sie uns die Daten noch einmal über die Ansicht überprüfen: mysql> SELECT * FROM Luxusartikel; +----+--------+--------+ | ID | Name | Preis | +----+--------+--------+ | 1 | Laptop | 700,56 | +----+--------+--------+ 1 Reihe im Set Wir können auch Daten aus den Basistabellenelementen abfragen, um zu überprüfen, ob die DELETE-Anweisung die Zeile tatsächlich gelöscht hat: mysql> AUSWÄHLEN * FROM Elemente; +----+---------+--------+ | ID | Name | Preis | +----+---------+--------+ | 1 | Laptop | 700,56 | | 2 | Desktop | 699,99 | +----+---------+--------+ 2 Reihen im Set Wir können sehen, dass die Zeile mit der ID 3 in der Basistabelle gelöscht wird. Okay, das ist alles zu diesem Eintrag. Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“, „Zusammenfassung der Kenntnisse zu MySQL-Datenbanksperren“ und „Zusammenfassung der allgemeinen MySQL-Funktionen“. Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist. Das könnte Sie auch interessieren:
|
<<: Implementierung der Graustufenversion mit Nginx und Lua
>>: Vue implementiert eine einfache Slider-Verifizierung
yum-Befehl Yum (vollständiger Name Yellow Dog Upd...
Während der Nutzung des Computers entsteht im Sys...
Dieser Artikel veranschaulicht anhand von Beispie...
Verwenden Sie CSS, um Bildlaufleisten zu ändern 1...
Die Verwendung von CSS-Layouts zum Erstellen von W...
Dieser Artikel stellt Nginx ausführlich vor, von ...
1. Beschreibung des Versprechens Promise ist ein ...
Inhaltsverzeichnis Vorwort Fall Optimierung Zusam...
Schauen Sie sich zuerst den Code und die Wirkung ...
Inhaltsverzeichnis Vorwort Quellcode Wo beginne i...
Diese Arbeit nutzt das Wissen der Front-End-Entwi...
MySQL unterstützt viele Datentypen und die Auswah...
In diesem Artikel wird der spezifische Code von v...
1. Was ist CSS Animations ist ein vorgeschlagenes...
CSS-Medienabfragen haben ein sehr praktisches Sei...