MySQL: Abfragen speichern und nutzen

Seit der 5er-Version des beliebten Datenbank-Servers MySQL können endlich Abfragen (Views) gespeichert werden, auf welche dann zugegriffen werden kann, als ob es sich um eine Tabelle handelt. Dadurch können aufwändige Abfragen einmal erstellt und abgelegt werden. Danach greift man auf die zu und kann sie bei Bedarf noch weiter eingrenzen.

Bei der im Ubuntu-Server aktuell eingebundenen Version von PHPMyAdmin (2.10.3deb1ubuntu0.1) können zwar Abfragen gespeichert werden, aber deren SQL-Anweisungen nachträglich nicht angezeigt werden. Stattdessen muss man so gespeicherte Abfragen neu erzeugen und wenn man Mut hat, überschreiben. Etwas komfortabler geht es mit dem Query Browser.

Eine Abfrage wird mit folgender SQL-Anweisung erzeugt:

CREATE VIEW `Datenbank`.`Name_der_Abfrage` AS
SELECT * FROM ``

In diesem Beispiel wird die Abfrage als Name_der_Abfrage gespeichert und steht danach – wie es bei Access als dem Hause Microsoft oder dem grossen Bruder, dem SQL-Server bekannt ist – als View zu Verfügung. Jene kann dann wieder per SELECT aufgerufen werden.

Abfragen ergeben am meisten Sinn, wenn verschiedenen Tabellen, welche eine Relation untereinander kennen, aufgerufen werden. Dazu wird ebenfalls die SELECT Anweisung benutzt, die Relation wird beispielsweise per INNER JOIN ON erstellt. Wer mehr über die SQL-Anweisungen wissen möchte, ist auf sql-tips.de gut bedient. Aber auch dieses Tutorial ist nicht zu verachten.

Hier ist ein Beispiel, wie zwei Haupttabellen und zwei weitere Hilfstabellen in einer Anfrage zusammengeführt werden:

select `adr_firmen`.`IDFirma` AS `IDFirma`,`adr_firmen`.`Firma` AS `Firma`,`adr_firmen`.`Zusatz` AS `Zusatz`,`adr_firmen`.`Strasse` AS `Strasse`,`adr_firmen`.`PLZ` AS `PLZ`,`adr_firmen`.`Ort` AS `Ort`,`adr_firmen`.`Land` AS `Land`,`adr_firmen_kontakt`.`IDKontakt` AS `IDKontakt`,`adr_firmen_kontakt`.`Anrede` AS `Anrede`,`adr_firmen_kontakt`.`Vorname` AS `Vorname`,`adr_firmen_kontakt`.`Name` AS `Name`,`adr_firmen_kontakt`.`Titel` AS `Titel`,`adr_firmen_kontakt`.`Funktion` AS `Funktion`,`adr_firmen_kontakt`.`EMail` AS `EMail`,`adr_firmen_kontakt`.`Telefon` AS `Telefon`,`adr_firmen_kontakt`.`Mobile` AS `Mobile`,`adr_firmen_kontakt`.`Fax` AS `Fax`,`adr_firmen_land`.`IDLand` AS `IDLand` from (`adr_firmen_kontakt_anrede` join (`adr_firmen_land` join (`adr_firmen` join `adr_firmen_kontakt` on((`adr_firmen`.`IDFirma` = `adr_firmen_kontakt`.`IDFirma`))) on((`adr_firmen_land`.`IDLand` = `adr_firmen`.`Land`))) on((`adr_firmen_kontakt_anrede`.`IDAnrede` = `adr_firmen_kontakt`.`Anrede`)));

Die Tabelle adr_firmen enthält Adressdaten von Firmen, diejenige mit Namen adr_firmen_kontakt enthält Kontaktinformationen. Beide Tabellen werden jeweils über das Feld IDFirma miteinander in Relation gebracht. Dann gibt es noch zwei kleine Hilfstabellen, welche bloss sicherstellen, dass immer dieselben Werte benutzt werden. adr_firmen_kontakt_anrede steht in Relation zur Tabelle adr_firmen_kontakt und setzt jeweils die Anrede richtig, die Tabelle adr_firmen_land enthält die Landesangaben, welche wiederum mit adr_firmen in Relation steht. Mit der obigen Abfrage werden sämtliche Werte so ausgegeben, dass sie für uns Menschen nutzbar werden.

Wer sich nicht so gerne mit dem pingeligen SQL-Syntax auseinandersetzen will, kann auch eine andere Lösung bevorzugen. Dazu braucht es allerdings Windows und Access. Damit kann man über ODBC eine Verbindung zum MySQL-Server herstellen und dann die Abfragen im Access-Fenster ganz bequem zusammenklicken und sich hernach den SQL-Code anzeigen lassen. Bei nicht allzu komplexen Abfragen funktioniert jene Version ganz gut. Ich werde dazu später mehr berichten.

Leider ist zur Zeit meine Lieblings-Virtualisierungssoftware für den Mac – die VirtualBox – noch nicht ready für OS X 10.5, weswegen ich auch noch keine virtuelle Windows-Kiste zur Verfügung habe, um darüber zu berichten.

Ähnliche Artikel

Schlagwörter: , , , ,

Hinterlasse einen Kommentar

blogoscoop Blogverzeichnis - Blog Verzeichnis bloggerei.de