Page Title

Der Wiki wird derzeit überarbeitet: neue URL, neues Design, neue Inhalte!

Benutzer-Werkzeuge

Webseiten-Werkzeuge


You are not allowed to perform this action
mikeurban:menue:werkzeuge_allgemeinesqlbefehle

Allgemeine SQL-Befehle

Menüpunkt: Werkzeuge > Allgemeine SQL-Befehle
Handbuch: MIKE URBAN Model Manager, section 2.11.3: General SQL Command
Letzte Änderung mit MIKE URBAN Version 2014 SP3

Einleitung

Mit allgemeinen SQL-Befehlen können Sie Modelldaten in beliebiger Art bearbeiten, beispielsweise um den Rohrdurchmesser vom Nenndurchmesser auf den tatsächlichen Innendurchmesser zu ändern, oder um die Rohrrauhigkeit in Abhängigkeit vom Rohrmaterial festzulegen.

Sie können mehrere Befehle hintereinander ausführen, und die Befehlssequenz für eine neuerliche Verwendung speichern.

Dialogfeld

Klicken zum Vergrößern

Feld Erklärung
Ausführen führt die SQL-Befehle aus
Laden öffnet eine Textdatei mit SQL-Befehlen
Speichern speichert die angezeigten SQL-Befehle zur späteren Verwendung in eine Textdatei
Schließen schließt den Editor ohne Ausführung der Befehle

Grundlegende Beispiele

Die folgenden Beispiele gelten, wenn die Datenbank im *.mdb-Format (Personal Geodatabase) vorliegt.

(a) Alle Zeilen der Tabelle Rohre (mw_pipe) werden aktualisiert, indem die Rauigkeit (rcoeff) mit 1,15 multipliziert wird:

UPDATE mw_pipe SET rcoeff = rcoeff * 1.15;

(b) In den Zeilen der Tabelle Schächte (msm_node), in denen der Durchmesser (diameter) 0,99 beträgt, wird der Durchmesser auf 1 gesetzt:

UPDATE msm_node SET diameter = 1.0 WHERE diameter = 0.99;

(c) Die Leitung „Schieber1“ wird geschlossen und die Leitung „Schieber2“ wird geöffnet:

UPDATE mw_Pipe SET StatusNo = 1 WHERE MUID = 'Schieber1';
UPDATE mw_Pipe SET StatusNo = 0 WHERE MUID = 'Schieber2';

(d) In der Tabelle „msm_CatchCon“ wird eine neue Zeile angelegt und mit Werten befüllt: die MUID muss dabei eine Ganzzahl (Typ „Long“) sein, „TypeNo“=1 bedeutet Zuordnung zu 1 Knoten (Single Node).

INSERT INTO msm_CatchCon (MUID,CatchID,TypeNo,NodeID) VALUES (12,'Ezfl_01',1,'Node_01') 

(e) Die einfache Tabellenverknüpfung bezieht eine zusätzliche Tabellen mit ein. Im folgenden Beispiel wird das Feld Beschreibung (Description) der Schacht-Tabelle (msm_Node) mit der ID (MUID) des jeweils verknüpften Einzugsgebiets (msm_CatchCon.CatchID) gefüllt.

UPDATE msm_Node, msm_CatchCon 
    SET msm_Node.Description = msm_CatchCon.CatchID 
    WHERE msm_CatchCon.NodeID = msm_Node.MUID;

Technische Details

Allgemeine SQL-Befehle können auf alle Tabellen und Featureklassen in der MIKE URBAN-Datenbank zugreifen.

Sie können den SQL-Befehl UPDATE zum Verändern der Feldinhalte verwenden.

Eine reine Auswahl mit dem SQL-Befehl SELECT ist nicht möglich. Behelfslösung: Feld „Markierung“ mit UPDATE bearbeiten.

Zwar funktioniert auch der SQL-Befehl ALTER (zum Hinzufügen und Löschen von Spalten), DHI rät aber von der Verwendung ab und empfiehlt, Veränderungen an der Datenstruktur ausschließlich über ArcMap oder ArcCatalog durchzuführen.

Leere Einträge, beispielsweise im Feld ms_Catchment.Area, werden mit WHERE ms_Catchment.Area IS NULL oder WHERE ms_Catchment.Area IS NOT NULL abgefragt.

Das Wurzelziehen mit SQRT(x) funktioniert nicht, dafür funktioniert x^0.5.

Da es sich bei SQL um eine Art Programmiersprache handelt, müssen Sie bei Dezimalzahlen immer den DezimalPUNKT verwenden.

Mehrere SQL-Befehle hintereinander müssen durch Strichpunkte ; getrennt sein. Die Ergebnisse eines Befehls werden sofort gespeichert, das heißt ein zweiter Befehl kann bereits auf die Ergebnisse des ersten Befehls zugreifen.

Zeilenumbrüche, mehrere aufeinander folgende Leerzeichen oder die Unterscheidung zwischen Klein- und Großschreibung haben keine Auswirkung auf SQL-Befehle, sie dienen lediglich der besseren Lesbarkeit.

Wikibooks: Einführung in SQL

Die offizielle Dokumentation der „Allgemeinen SQL-Befehle“ finden Sie im Handbuch „MIKE URBAN Model Manager“ im Kapitel 2.11.3 „General SQL Command“.

Weitere Beispiele

Folgender Ausdruck überträgt den undurchlässigen Anteil aus MOUSE Modell A auf den undurchlässigen Anteil in SWMM.1)

UPDATE mss_CatchModel, msm_HModA
    SET mss_CatchModel.Impervious = msm_HModA.ImpArea
    WHERE mss_CatchModel.CatchID = msm_HModA.CatchID;

Folgender Ausdruck berechnet die Fließlänge [m] im Modell B als Wurzel der Fläche des Einzugsgebiets [ha], inklusive Umrechnung der Einheiten.

UPDATE msm_HModB, ms_Catchment
    SET msm_HModB.Length = (ms_Catchment.Area_C * 10000) ^ 0.5
    WHERE msm_HModB.CatchID = ms_Catchment.MUID;

Offene Punkte

  • Berücksichtigt der SQL eine eventuelle Auswahl? Vermutlich nicht. Entsprechend dokumentieren!
  • ein Beispiel für Unterabfragen
  • SQL-Abfragen aus der MOUSE-Zeit ausgraben
  • Was ist, wenn die Datenbank nicht als Personal Geodatabase vorliegt?
  • Operatoren und Funktionen dokumentieren!
1)
Nützlich, wenn man ein MOUSE-Modell mit „Senden“ auf ein SWMM-Modell überträgt; dabei werden die hydrologischen Eigenschaften nämlich nicht übertragen.
mikeurban/menue/werkzeuge_allgemeinesqlbefehle.txt · Zuletzt geändert: 2019/01/21 19:30 von thomas