Diese Seite beschreibt Calíope 1.5, die Version, die wir gerade bauen. Die 1.4 ist fertig und in der App-Review, und der Store liefert heute 1.3 auf dem Mac und 1.2 auf dem iPad. Das Changelog sagt, in welcher Version jede Funktion kam.
Fügt jedem Thema einen Button „In Calíope öffnen“ hinzu. Funktioniert nur mit installierter App.
Schreib SQL und führ es gegen den verbundenen Server aus.
Wo es zu finden ist: SQL-Editor › Ausführen (⌘↩)
Schreib dein SQL-Statement in den Editor. Klick auf Ausführen (Play-Symbol) oder nutz das Tastenkürzel ⌘↩, um es auszuführen. Ist Text ausgewählt, wird nur die Auswahl ausgeführt.
Die Ergebnisse erscheinen in der Tabelle darunter mit Zeilen und Spalten. Ausführungszeit und Zeilenanzahl werden in der Statusleiste angezeigt.
Bricht die zu lange laufende Anweisung mit KILL QUERY ab, ohne die Verbindung zu schließen.
Wo es zu finden ist: SQL-Editor › Anhalten
Die Schaltfläche Anhalten erscheint in der Leiste des SQL-Editors, solange eine Ausführung läuft, neben Ausführen. Unter macOS reagiert sie zusätzlich auf ⌘. (Befehl + Punkt).
Was dabei genau passiert. MySQL und MariaDB können eine Abfrage nicht über dieselbe Verbindung abbrechen, die auf sie wartet. Calíope öffnet deshalb eine zweite und schickt KILL QUERY <id> an die Sitzung, die sie ausführt. Es ist derselbe Vorgang, den das Werkzeug Prozesse anbietet, nur automatisch auf die eigene Abfrage gerichtet.
- Verwendet wird KILL QUERY und nicht KILL CONNECTION: die Anweisung bricht ab und die Verbindung bleibt bestehen, es ist also kein neuer Verbindungsaufbau nötig, die offene Transaktion geht nicht verloren und die temporären Tabellen der Sitzung verschwinden nicht.
- In einem Skript mit mehreren Anweisungen wird die laufende angehalten und die restlichen werden nicht gesendet.
- Es sind keine besonderen Rechte erforderlich: jeder Benutzer darf seine eigenen Abfragen anhalten.
- Danach zeigt die Statusleiste Abfrage angehalten. Der vom Server gemeldete Fehler Query execution was interrupted wird nicht als Fehlschlag dargestellt: er ist die erwartete Antwort.
Grenzen. Wann der Server die Anforderung berücksichtigen kann, entscheidet er selbst: ein langes SELECT bricht fast sofort ab, doch eine Operation, die schon in der Speicher-Engine steckt —ein ALTER TABLE, das die Tabelle umkopiert, ein laufendes Rollback— kann lange brauchen oder gar nicht abbrechen. Dann lebt die Anweisung auf dem Server weiter, auch wenn die App nicht mehr auf sie wartet: das Werkzeug Prozesse zeigt es.
Löscht den Inhalt des Editors und die Ergebnistabelle.
Wo es zu finden ist: SQL-Editor › Leeren
Klick auf den Button Leeren in der Toolbar des SQL-Editors, um sowohl den Text des Editors als auch die angezeigten Ergebnisse zu löschen. Der Query-Verlauf bleibt davon unberührt.
Wendet Einrückung und ein lesbares Format auf das SQL im Editor an.
Wo es zu finden ist: SQL-Editor › Beautify (⌘L)
Der Button Beautify (oder das Tastenkürzel ⌘L) formatiert das SQL im Editor neu: Schlüsselwörter in Großbuchstaben, korrekte Einrückung und Zeilenumbrüche bei Klauseln. Praktisch, um kompakte oder automatisch generierte Skripte zu lesen.
Stichwörter: format, formatieren, beautify, pretty print, einrücken
Typografische Anführungszeichen, die eine Abfrage zerstören
Warum der Hinweis „Korrigieren“ unter dem Editor erscheint und was er tut.
Wo es zu finden ist: Workspace › Werkzeuge › SQL-Editor
SQL versteht nur gerade Anführungszeichen: ' für Zeichenketten und " für Bezeichner in manchen Modi. Typografische Anführungszeichen —‘ ’ “ ” « » „ “— sind andere Zeichen, und der Server lehnt die Anweisung mit einem Syntaxfehler ab, obwohl sie auf dem Bildschirm richtig aussieht: In einer dicktengleichen Schrift sind ' und ‘ kaum zu unterscheiden.
Calíope schreibt sie nie. Sie kommen beim Einfügen von SQL aus Notizen, Mail oder einem Chat, die Anführungszeichen beim Tippen ersetzen. In der App ist die Ersetzung in allen Editoren abgeschaltet — was du hier tippst, bleibt immer gerade.
Wenn der Editor eines dieser Zeichen dort findet, wo SQL ein Trennzeichen erwartet, erscheint ein Hinweis mit der Taste „Korrigieren“. Geändert wird nur, was nichts anderes sein kann: ein typografisches Anführungszeichen innerhalb einer Zeichenkette ist ein gültiges Zeichen deiner Daten —wie in 'd’Artagnan'— und bleibt unangetastet. Ist unklar, welches stört, wird nichts geändert und kein Hinweis angezeigt.
Blockiert destruktive Statements, um Fehler zu vermeiden. Standardmäßig aktiv.
Wo es zu finden ist: SQL-Editor › Safe Mode
Der Safe Mode ist auf macOS, iPad und iPhone standardmäßig aktiviert. Ist er aktiv, fängt Calíope ALTER-, DROP-, DELETE-, UPDATE- und TRUNCATE-Statements ab und zeigt vor der Ausführung eine Bestätigungswarnung.
Nutz den Schalter Safe Mode (Schloss-Symbol) in der Toolbar des SQL-Editors, um ihn ein- oder auszuschalten. Der Zustand wird pro Verbindungsprofil über Sessions hinweg gespeichert.
Nützlich für die Arbeit in Produktionsumgebungen oder für alle, die gerade SQL lernen und sich vor versehentlichen Änderungen schützen wollen.
Verwalte BEGIN, COMMIT und ROLLBACK über das Transaktionen-Dropdown.
Wo es zu finden ist: SQL-Editor › Menü Transaktionen
Das Dropdown-Menü Transaktionen in der Toolbar des SQL-Editors bündelt die drei Kontrolloperationen: BEGIN (startet die Transaktion), COMMIT (bestätigt die Änderungen) und ROLLBACK (macht die Änderungen rückgängig).
COMMIT und ROLLBACK zeigen vor der Ausführung einen Bestätigungsdialog, um versehentliche Änderungen zu vermeiden. Solange eine Transaktion aktiv ist, zeigt die Ergebnisleiste das Label Aktive Transaktion in Grün.
MySQL und MariaDB setzen InnoDB als Tabellen-Engine voraus, um Transaktionen vollständig zu unterstützen.
Der Button Verlauf (Uhr-Symbol) öffnet ein Sheet mit den bereits ausgeführten Queries: jede Zeile trägt eine grüne oder rote Markierung für den Ausgang, die Dauer und den Zeitpunkt. Du kannst darin suchen und eine Query mit dem Button Verwenden zurück in den Editor laden.
Erfasst wird ein Eintrag pro Ausführung, nicht pro Statement: Wenn du einen Stapel aus zwölf Statements mit Skript ausführen abschickst, speichert der Verlauf den gesamten Text als einen einzigen Eintrag. Statement für Statement siehst du ihn über den Button Statements.
Das Sheet listet nur den Verlauf des aktiven Tabs, und Leeren löscht auch nur diesen. Die Buttons ▲ / ▼ daneben laufen dagegen durch den gesamten Verlauf.
Der Verlauf bleibt über Sessions hinweg erhalten, pro Verbindungsprofil (maximal 500 Einträge je Profil), im UserDefaults-Schlüssel caliope_query_history_<Profil-ID>. Nicht erhalten bleibt der Text einer Ausführung über 32 KB: Dieser Eintrag ist für den Rest der Sitzung sichtbar und wird nicht gespeichert, denn ein halb gespeichertes SQL wäre im Verlauf ein abgeschnittenes SQL, das man erneut ausführen kann.
Stichwörter: verlauf, history, frühere queries, zuletzt verwendet
Visualisiert den Ausführungsplan einer SELECT-Query.
Wo es zu finden ist: SQL-Editor › Visual EXPLAIN
Steht ein SELECT-Statement im Editor, klick auf den Button Visual EXPLAIN. Calíope führt EXPLAIN FORMAT=JSON aus (MySQL/MariaDB-Syntax) und öffnet das Ergebnis im Tab Visual EXPLAIN, der den Knotenbaum des Plans mit Farben je Zugriffstyp anzeigt.
Stichwörter: explain, plan, optimizer, index, full scan
Wähl das Zeichen, das mehrere Statements vor der Ausführung trennt.
Wo es zu finden ist: SQL-Editor › Delim-Auswahl
Die Auswahl Delim in der Ergebnisleiste steuert, wie Calíope den Text des Editors vor der Ausführung in einzelne Statements aufteilt. Es gibt drei vordefinierte Optionen:
- ; (Semikolon) — Standard-Trennzeichen von MySQL. Passend für die meisten Queries.
- | (Pipe) — nützliche Alternative, wenn das SQL Semikolons innerhalb von String-Literalen enthält.
- $$ — übliche Konvention für Stored Procedures, Funktionen und Trigger, deren Rumpf intern ; enthält. Mit diesem Trennzeichen kannst du Blöcke wie CREATE PROCEDURE … BEGIN … END$$ schreiben, und Calíope führt jeden Block als einzelnes Statement aus.
Auf macOS kannst du außerdem ein eigenes Trennzeichen in das Textfeld neben den voreingestellten Buttons eingeben.
Das aktive Trennzeichen dient beim Export von Ergebnissen im CSV-Format auch als Feldtrenner.
Das Panel Statements teilt am selben Trennzeichen auf, seine Liste passt also zu dem, was ausgeführt wird. Lässt du es leer, fallen Liste und Ausführung auf ; zurück.
Speichert die Query-Ergebnisse in verschiedenen Formaten.
Wo es zu finden ist: SQL-Editor › Ergebnis speichern
Klick auf den Button Ergebnis speichern (Disketten-Symbol) in der Ergebnisleiste. Wähl das Ausgabeformat — Tabelle (Text), JSON, CSV, HTML oder XML — und leg im Speichern-Dialog des Systems fest, wo die Datei abgelegt wird.
Der Dateiname wird mit Datum und Uhrzeit des Exports vorbelegt.
Erzeugt INSERT-Statements für die Tabelle oder das aktuelle Ergebnis.
Wo es zu finden ist: SQL-Editor › Menü INSERT
Das Dropdown-Menü INSERT in der Toolbar bietet zwei Optionen: Aktuelles Ergebnis als INSERT exportieren (wandelt die Zeilen des aktuellen Ergebnisses um) und Tabelle als INSERT exportieren (du wählst die Tabelle in einem Dialog aus und exportierst alle ihre Daten).
Das Ergebnis wird als Text an den SQL-Editor angehängt, bereit zum Kopieren oder Ausführen.
Ändere, wie die Query-Ergebnisse dargestellt werden.
Wo es zu finden ist: SQL-Editor › Format-Auswahl
Die Auswahl Format in der Ergebnisleiste bietet folgende Optionen: Tabelle (interaktive Rasteransicht), JSON (Ergebnis als Array von Objekten), CSV (getrennt durch das aktive Trennzeichen in Delim), Text (ausgerichtete Spalten), HTML (HTML-Tabelle) und XML (Tags je Feld).
Das gewählte Format wird auch beim Export des Ergebnisses in eine Datei verwendet.
Stichwörter: format, tabelle, json, csv, html, xml, output
Sammelt die Ergebnisse mehrerer Ausführungen, ohne die vorherigen zu löschen.
Wo es zu finden ist: SQL-Editor › Konkatenieren
Aktivier den Schalter Konkatenieren in der Ergebnisleiste. Ist die Option aktiv, hängt jede Ausführung ihre Zeilen an die bereits angezeigten an, statt sie zu ersetzen. Nützlich, um Ergebnisse ähnlicher Queries mit unterschiedlichen Bedingungen zu kombinieren.
Stichwörter: konkatenieren, sammeln, kombinieren, append, mehrere ergebnisse
Aktivier den Schalter Wiederholen und gib das Intervall in Sekunden ein. Calíope führt die Query automatisch in einer Schleife mit diesem Intervall aus. Nützlich, um das Ergebnis von Status- oder Zähl-Queries in Echtzeit zu beobachten.
Schalte den Schalter aus, um die Wiederholung zu stoppen.
Führt jede Query gleichzeitig auf zwei Servern aus und vergleicht die Ergebnisse.
Wo es zu finden ist: SQL-Editor › DB verknüpfen
Der Button DB verknüpfen (Ketten-Symbol mit +) in der Toolbar des SQL-Editors verbindet einen zweiten MySQL/MariaDB-Server mit dem aktiven Tab.
So verknüpfst du:
1. Klick auf DB verknüpfen. Eine Auswahl mit deinen zuletzt genutzten Verbindungsprofilen erscheint.
2. Wähl das Profil des zweiten Servers und klick auf Verbinden.
3. Sobald die Verbindung steht, wird der Button durch ein grünes Badge mit dem Profilnamen und einem ✕-Button ersetzt.
Was beim Ausführen mit verknüpfter DB passiert:
Jedes Mal, wenn du Ausführen oder Ganzes Skript ausführen drückst, startet Calíope dieselbe Query auf beiden Servern parallel (ohne gegenseitiges Blockieren). Statt der üblichen Ergebnistabelle erscheint die Vergleichsansicht (siehe Thema: Ergebnisse zweier Server vergleichen).
Verknüpfte DB trennen:
Klick auf den ✕-Button des grünen Badges. Die sekundäre Verbindung wird geschlossen, die Vergleichsansicht verschwindet und der Editor kehrt in den Normalmodus mit den Ergebnissen des Hauptservers zurück.
Verfügbar auf macOS, iPad und iPhone.
Stichwörter: verknüpfen, link db, zweiter server, sekundäre verbindung, parallel, vergleichen, zwei server
Seite-an-Seite-Vergleichsansicht mit Hervorhebung der Unterschiede pro Zelle.
Wo es zu finden ist: SQL-Editor › DB verknüpfen
Ist eine DB verknüpft (siehe DB verknüpfen), zeigt jede Ausführung die Vergleichsansicht statt der normalen Tabelle.
Zusammenfassungsleiste (oben):
- Blauer Indikator — Name des Hauptservers, Zeilenanzahl und Ausführungszeit.
- Oranger Indikator — Name des sekundären Servers, Zeilenanzahl und Zeit.
- Ergebnis-Badge:
- ✓ Identisch (grün) — beide Ergebnisse sind exakt gleich.
- ⚠ N Wert(e) · M zusätzliche Zeile(n) (orange) — es gibt Unterschiede.
- Toggle "Nur Diffs" — blendet identische Zeilen aus, damit du dich nur auf die Unterschiede konzentrierst. Deaktiviert, wenn die Ergebnisse identisch sind.
So liest du die Vergleichstabelle:
Die Tabelle fügt links neben den Datenspalten eine Spalte DB hinzu:
Indikator
Bedeutung
=
Zeile auf beiden Servern identisch (eine einzige Zeile)
P
Zeile des Hauptservers, die vom sekundären abweicht
S
Zeile des sekundären Servers, die vom Hauptserver abweicht
Weicht eine Zeile ab, werden zwei aufeinanderfolgende Zeilen angezeigt (P und S). Die Zellen mit Unterschieden werden hervorgehoben:
- Zartes Rot → geänderter Wert auf dem Hauptserver.
- Zartes Grün → geänderter Wert auf dem sekundären Server.
Zeilen, die nur auf einem Server existieren (unterschiedliche Zeilenanzahl), erscheinen mit blauem Hintergrund (nur Hauptserver) oder orangem Hintergrund (nur sekundärer Server).
Sonderfälle:
- Fehler auf einem oder beiden Servern — die Fehlermeldung jedes Servers wird separat angezeigt.
- DML-Query (ohne Spalten) — zeigt die betroffenen Zeilen jedes Servers und ob sie übereinstimmen.
- Nicht übereinstimmende Spalten — zeigt die Spaltenliste jedes Servers, zusätzliche Spalten orange hervorgehoben.
Verfügbar auf macOS, iPad und iPhone.
Stichwörter: vergleichen, unterschiede, diffs, zwei server, parallel, hervorhebung, identisch, ergebnisse vergleichen, nur diffs, badge, P S, extra zeile
Fügt gespeicherte Code-Snippets direkt in den Editor ein.
Wo es zu finden ist: SQL-Editor › Snippets
Klick auf den Button Snippets (Stern-Symbol) in der Toolbar des SQL-Editors. Ein Sheet mit der Liste deiner gespeicherten Snippets öffnet sich: Wähl eines aus und klick auf Einfügen, um es an der aktuellen Cursorposition in den Editor einzufügen.
Zeigt den kompletten Inhalt von Zellen mit langem Text, ohne die Zeile zu erweitern.
Wo es zu finden ist: SQL-Editor › Rechtsklick › Vollständigen Wert anzeigen
Die Zellen der Ergebnistabelle zeigen den Text abgeschnitten in einer einzigen Zeile, damit die Zeilen kompakt bleiben. So liest du den vollständigen Wert, ohne Spalten vergrößern zu müssen:
macOS:Klick auf eine beliebige Zelle. Ein an der Zelle verankertes Popover erscheint mit dem vollständigen, auswählbaren Wert und einem Kopieren-Button im unteren Bereich. Bei sehr langem Inhalt ist das Popover scrollbar.
iPad: Tipp auf eine beliebige Zelle. Ein Sheet mit dem vollständigen Wert öffnet sich, auswählbar zum teilweisen Kopieren. Das Sheet hat außerdem einen Kopieren-Button in der oberen Leiste, um den gesamten Inhalt zu kopieren.
Auf allen dreien zeigt das Popover bzw. Sheet den Spaltennamen in der Kopfzeile und gibt bei langen Werten (mehr als 50 Zeichen) die Gesamtzahl der Zeichen an.
Zellen mit dem Wert NULL öffnen den Viewer beim Antippen nicht.
Bearbeite Zellwerte mit einem dedizierten Editor für langen Text, JSON und Binärdaten.
Wo es zu finden ist: SQL-Editor › Rechtsklick › Wert erweitert bearbeiten…
Mach einen Rechtsklick (macOS) oder halt gedrückt (iPad) auf eine beliebige Zelle des Ergebnisses und wähl Wert erweitert bearbeiten…, um sie im erweiterten Zellen-Editor zu öffnen. Der Editor hat Tabs für: Klartext, JSON (mit Formatier-Button) und Binär-/Hex-Daten.
Nutz den Button OK, um den bearbeiteten Wert in die Zwischenablage zu kopieren, oder In Editor laden, wenn die Zelle SQL enthält.
Bearbeite den Wert einer Zelle und prüf das UPDATE in der Vorschau, bevor du es ausführst.
Wo es zu finden ist: SQL-Editor › Rechtsklick › UPDATE generieren…
Calíope kann ein UPDATE direkt aus jeder Zelle des Ergebnisses generieren und ausführen.
macOS: Mach einen Doppelklick auf eine Zelle oder nutz Rechtsklick › UPDATE generieren… iPad: Mach einen Doppeltipp auf eine Zelle, oder halt die Zelle gedrückt und wähl UPDATE generieren… im Kontextmenü.
Ein Panel mit folgenden Feldern öffnet sich:
- Neuer Wert — gib den Ersatzwert ein. Aktivier den Toggle NULL, um NULL zuzuweisen.
- Tabelle — automatisch aus dem FROM deiner Query erkannt. Bearbeite sie bei Bedarf (⚠ erscheint, wenn sie nicht erkannt wurde).
- WHERE-Spalte — die Spalte, die in der WHERE-Klausel als Primärschlüssel dient. Calíope bevorzugt Spalten namens id, dann solche, die auf _id enden, und schließlich die erste Spalte.
- WHERE-Wert — zeigt den aktuellen Wert dieser Spalte in der Zeile. Ist er NULL, erscheint eine orange Warnung, weil das WHERE alle Zeilen mit dieser Bedingung betrifft.
Das generierte SQL ist editierbar — du kannst es vor der Ausführung anpassen.
Klick auf UPDATE ausführen (macOS) oder Ausführen (iPad), um das Statement auszuführen. Bei Erfolg zeigt das Ergebnis die betroffenen Zeilen und die Zeit, und die ursprüngliche Query wird automatisch erneut ausgeführt.
Generiert und führt ein DELETE für die ausgewählte Zeile aus, mit Vorschau und editierbarem SQL.
Wo es zu finden ist: SQL-Editor › Rechtsklick › Zeile löschen…
Calíope kann ein DELETE für jede sichtbare Zeile der Ergebnistabelle generieren.
macOS: Mach einen Rechtsklick auf eine beliebige Zelle der Zeile und wähl Zeile löschen… iPad: Halt eine beliebige Zelle der Zeile gedrückt und wähl Zeile löschen… im Kontextmenü.
Ein Panel mit folgenden Feldern öffnet sich:
- Tabelle — automatisch aus dem FROM deiner Query erkannt. Ist der Name falsch (zum Beispiel bei JOINs oder Aliassen), gib ihn manuell im Format base_de_datos.tabla ein.
- WHERE-Klausel — wähl die Spalte, die als Primärschlüssel dient. Calíope bevorzugt Spalten namens id, dann solche, die auf _id enden. Wähl "Alle Spalten verwenden", wenn du die Zeile lieber über alle ihre Werte identifizierst.
- Generiertes SQL — editierbare Vorschau des DELETE. Nutz den Button SQL kopieren, um es in die Zwischenablage zu kopieren, ohne es auszuführen.
DELETE FROM `mi_base`.`usuarios`
WHERE `id` = '42';
Klick auf Zeile löschen, um es auszuführen. Die ursprüngliche Query wird automatisch erneut ausgeführt, um die Tabelle zu aktualisieren. Tritt ein Fehler auf, bleibt das Panel offen und zeigt die Fehlermeldung des Servers.
> Achtung: Der Safe Mode fängt dieses DELETE nicht ab, weil es intern ausgeführt wird und nicht aus dem Editor. Prüf immer das WHERE, bevor du bestätigst.
Schlag die Dokumentation der Funktionen des verbundenen Motors nach, ohne den Editor zu verlassen.
Wo es zu finden ist: SQL-Editor › Text-Editor
Calíope zeigt integrierte Dokumentation für die SQL-Funktionen des Motors der Sitzung: bei MySQL, MariaDB und Aurora die dieser Familie (SUM, DATE_FORMAT, JSON_EXTRACT, COALESCE usw.), bei PostgreSQL die eigenen (string_agg, to_char, jsonb_set, date_trunc usw.). Ein Name, den es in beiden gibt, teilt sich den Eintrag nicht, denn er bedeutet nicht immer dasselbe: LENGTH zählt in PostgreSQL Zeichen und in MySQL Bytes. Erscheint beim Überfahren einer Funktion nichts, dann gibt es diese Funktion im verbundenen Motor nicht.
macOS: Beweg den Cursor über den Namen einer erkannten Funktion im Editor. Nach einer kurzen Pause erscheint ein Popover mit Syntax, Rückgabetyp, Beschreibung, Parametern samt Typen und einem Anwendungsbeispiel.
iPad: Steht der Cursor innerhalb oder direkt hinter dem Namen einer erkannten Funktion, erscheint automatisch eine Kontextleiste unter der Toolbar des Editors, die Name und Syntax anzeigt. Tipp auf den Button ? in der Leiste, um die vollständige Dokumentation in einem Sheet zu öffnen.
Die Dokumentation umfasst:
- Vollständige Syntax der Funktion
- Rückgabetyp
- Beschreibung des Verhaltens
- Parameter mit Name, Typ und ob sie optional sind
- Beispiel zur Verwendung, falls verfügbar
Analysiert das Skript im Editor und verwaltet seine Statements einzeln.
Wo es zu finden ist: SQL-Editor › SQL-Statements
Der Button Statements (Listen-Symbol) öffnet den SQL-Statement-Manager, der den Inhalt des Editors an Semikolons aufteilt und jedes Statement nummeriert anzeigt, mit seinem Typ (SELECT, INSERT, UPDATE usw.) und einem farbigen Symbol. Im Manager kannst du einzelne Statements kopieren, in den Editor laden, aus der Liste entfernen oder sie durchsuchen.
Es ist eine Ansicht des Textes, der gerade im Editor steht, und führt nichts aus: Sie wird bei jedem Öffnen des Sheets neu berechnet, und Aus Liste entfernen nimmt die Zeile aus der Liste, nie aus dem Editor. Genau das ist der Unterschied zum Verlauf, der festhält, was schon gelaufen ist — ein Eintrag pro Ausführung.
Der Manager teilt am aktiven Trennzeichen der Ergebnisleiste auf, demselben, das auch die Ausführung nutzt: mit ; an Semikolons, und wenn du $$ für ein CREATE PROCEDURE gesetzt hast, erscheint der ganze Block als ein einzelnes Statement. Was er auflistet, passt damit zu dem, was ausgeführt wird.
Führt alle Statements des Editors auf einmal aus, mit ⌘⇧↩.
Wo es zu finden ist: SQL-Editor › Ganzes Skript ausführen (⌘⇧↩)
Nutz das Tastenkürzel ⌘⇧↩ oder den Button Ganzes Skript ausführen (Doppelblitz-Symbol) in der Toolbar des SQL-Editors, um alle Statements des Editors nacheinander auszuführen — unabhängig davon, ob Text ausgewählt ist.
macOS: Der Button erscheint neben dem Haupt-Button Ausführen in der Toolbar. iPad: Verfügbar in der oberen Toolbar des Editors.
Im Unterschied zu Ausführen (⌘↩), das nur die aktive Auswahl oder das Statement unter dem Cursor ausführt, verarbeitet Ganzes Skript ausführen alle durch das aktive Trennzeichen getrennten Statements der Reihe nach und sammelt die Ergebnisse.
Stichwörter: skript ausführen, run all, ⌘⇧Return, alle statements, ganzes skript, mehrere queries
Ergebnisse kommen in Seiten: 50 Zeilen auf dem Mac, 200 auf iPad und iPhone.
Wo es zu finden ist: SQL-Editor › Ergebnisraster
Unter macOS kommen die Ergebnisse in Seiten zu 50 Zeilen, mit ihrer Leiste unten —zurück, weiter und Seitenanzeige—, die nur erscheint, wenn die Abfrage mehr als 50 geliefert hat. Du kannst durch Klick auf eine Spaltenüberschrift sortieren, mehrere Zeilen mit ⇧ oder ⌘ auswählen, sie mit ⌘C kopieren —sie kommen als TSV, mit den Spaltennamen oben— und sie aus der App ziehen.
Sortiert wird auf dem Client, und zwar das ganze Ergebnis. Es werden die bereits geholten Zeilen sortiert —alle, nicht nur die Seite vor dir— und erst danach in Seiten geschnitten. Die Tabelle auf dem Server wird nicht sortiert, und das Raster sagt das darunter, solange eine Sortierung gesetzt ist. Willst du wirklich die ersten zehn, gehört die Sortierung in die Abfrage: ORDER BY … LIMIT 10.
Die Auswahl gehört zur Seite. Beim Seitenwechsel wird sie geleert, damit ⌘C und das Ziehen keine Zeilen mitnehmen, die nicht mehr vor dir liegen.
Auf iPad und iPhone sind die Seiten 200 Zeilen groß, mit derselben Leiste unten.
Auf allen dreien ist die Aufteilung lokal: die Abfrage läuft vollständig und wird im Speicher geteilt. Brauchst du genau einen Zeilenbereich, ergänze LIMIT und OFFSET in der Abfrage.
Such und ersetz Text im SQL-Editor mit der nativen Suche des Systems.
Wo es zu finden ist: SQL-Editor › Suchen (⌘F)
Klick auf den Button Suchen (Lupen-Symbol) in der Toolbar des SQL-Editors oder nutz das Tastenkürzel ⌘F (macOS), um die integrierte Suche zu öffnen.
macOS: Die native Suche von NSTextFinder wird aktiviert, mit Such- und Ersetzungsfeld, Navigation zwischen Treffern per ↩ / ⇧↩ und der Option, einen oder alle Treffer zu ersetzen.
iPad:UIFindInteraction des Systems wird aktiviert und blendet die native Such-/Ersetzungsleiste von iOS über der Tastatur ein, mit Unterstützung für Touch-Navigation zwischen Treffern.
Ruf frühere Queries direkt im Editor ab, ohne das Verlaufs-Panel zu öffnen.
Wo es zu finden ist: SQL-Editor › Verlaufspfeile ‹ ›
Der SQL-Editor lässt dich frühere Queries direkt aus dem Textfeld zurückholen, genau wie im mysql-Terminal.
macOS:
- Drück ↑, wenn der Cursor ganz am Anfang des Editors steht (Position 0, nichts markiert), um die vorherige Query aus dem Verlauf zu laden.
- Drück ↓, wenn der Cursor in der letzten Zeile steht, um zur Gegenwart zurückzukehren.
- Alternativ nutzt du die Buttons ▲ / ▼ in der Editor-Toolbar.
iPad:
- Nutz die Buttons ▲ / ▼ oder ⌘↑ / ⌘↓ mit einer Hardware-Tastatur.
Beim Blättern geht nichts verloren. Beim Eintritt in den Verlauf wird gesichert, was im Editor stand, und ↓ stellt es unverändert wieder her — der Editor bleibt nicht leer. Und wenn dort ein eigener, halb getippter Entwurf steht, rühren ihn weder Tasten noch Buttons an: ↑ und ↓ bewegen dann wie gewohnt den Cursor.
Tasten und Buttons teilen sich einen Weg, also macht ▼ genau das rückgängig, was ↑ getan hat. Sie laufen durch den Verlauf des aktiven Tabs, denselben, den das Sheet hinter dem Button Verlauf listet. Das Blättern verändert den Verlauf nicht.
Sichert das aktuelle Ergebnis, damit du es beim Ausführen weiterer Queries im Blick behältst.
Wo es zu finden ist: SQL-Editor › Ergebnis anheften
Der Button Anheften (Pin-Symbol) in der Ergebnisleiste sichert eine Kopie des aktuellen Ergebnisses zusammen mit dem SQL, das es erzeugt hat, und der Ausführungszeit. Das angeheftete Ergebnis bleibt erhalten, auch wenn du weitere Queries ausführst.
Sobald Ergebnisse angeheftet sind, erscheint der Button Angeheftet (N), der die Sichtbarkeit des Panels mit den angehefteten Ergebnissen umschaltet. Jedes angeheftete Ergebnis zeigt:
- Das zusammengefasste SQL, das es erzeugt hat
- Die Anzahl der Zeilen und Spalten
- Die Ausführungszeit
- Einen Button ✕, um genau dieses Ergebnis wieder zu lösen
Verfügbar auf macOS, iPad und iPhone. Praktisch, um den Zustand einer Tabelle vor und nach einer Änderung zu vergleichen.
Terminalartiges Panel mit mysql>-Prompt, um SQL interaktiv auszuführen.
Wo es zu finden ist: SQL-Editor › Terminal
Der Button Terminal (Terminal-Symbol) in der Toolbar des SQL-Editors öffnet ein unteres Panel im REPL-Stil.
So nutzt du es:
- Schreib SQL in das Feld mit dem mysql>-Prompt und drück ↩ (oder den Button ↵), um es auszuführen.
- SELECT-Ergebnisse werden als ASCII-Tabelle mit +---+-Trennern dargestellt.
- DML-Statements zeigen "Query OK, N Zeile(n) betroffen".
- Fehler werden rot mit der MySQL-Meldung angezeigt.
Terminal-Verlauf durchblättern:
- macOS: Nutz ↑ / ↓ im Eingabefeld, um die vorherigen Queries des Terminals durchzugehen.
- iPad: Nutz die Buttons ‹ / › über dem Eingabefeld.
Leeren: Der Papierkorb-Button im Header löscht die Ausgabe des Terminals.
Das Terminal hat seinen eigenen, vom Haupt-SQL-Editor unabhängigen Verlauf. Über das Terminal ausgeführte Queries werden ebenfalls zum globalen Verlauf der Session hinzugefügt.
Speichert die Ergebnisse neben CSV auch als JSON, Markdown, XML oder Excel (.xlsx).
Wo es zu finden ist: SQL-Editor › Format-Auswahl
Neben den klassischen Formaten (Tabelle, CSV, HTML) bietet die Auswahl Format in der Ergebnisleiste:
- JSON — Array von Objekten, ideal für APIs und Entwickler-Tools.
- Markdown — Tabelle im Markdown-Format, fertig zum Einfügen in Dokumentation oder Notion.
- XML — ein Element pro Zeile, kompatibel mit Datenverarbeitungs-Tools.
- Excel (.xlsx) — Tabellenblatt, bereit zum Öffnen in Numbers oder Excel. Nutz den Button Speichern, der in der Ergebnisleiste erscheint, sobald du dieses Format wählst.
Der Button Speichern / Teilen in der Ergebnisleiste exportiert im aktiven Format, das im Picker ausgewählt ist.
Ersetzt das Sternchen eines SELECT durch die echten Spaltennamen der Tabelle.
Wo es zu finden ist: SQL-Editor › Rechtsklick › Erweitern * → Spalten
Wenn ein SELECT * FROM tabla im Editor steht, kann Calíope dieses * direkt im Editor zur expliziten Spaltenliste der Tabelle erweitern.
So nutzt du es (macOS):
1. Setz den Cursor in das SELECT-Statement, das das * enthält.
2. Mach einen Rechtsklick im Editor, um das Kontextmenü zu öffnen.
3. Wähl Erweitern * → Spalten von nombre_tabla.
Calíope fragt den Server nach den aktuellen Spalten der Tabelle ab und ersetzt das * durch die kommagetrennte Spaltenliste in Backticks, zum Beispiel:
SELECT `id`, `nombre`, `email`, `created_at` FROM `usuarios`
Voraussetzungen:
- In der Auswahl der Toolbar muss eine aktive Datenbank ausgewählt sein.
- Die Option erscheint nur im Kontextmenü, wenn der Cursor in einem gültigen SELECT … FROM tabla-Statement steht.
- Die Tabelle muss in der aktiven Datenbank existieren und der Nutzer muss Leserechte haben.
Nur auf macOS verfügbar. Auf dem iPad und dem iPhone steht die Erweiterung in dieser Version nicht zur Verfügung.
Vervollständigt SQL-Schlüsselwörter, Tabellen- und Spaltennamen. Das automatische Popup beim Tippen musst du in den Einstellungen aktivieren.
Wo es zu finden ist: Calíope › Einstellungen › Text-Editor
Der SQL-Editor bietet zwei unabhängige Ebenen der Autovervollständigung.
1. SQL-Schlüsselwörter:
Der Editor kennt alle Schlüsselwörter von MySQL/MariaDB (SELECT, FROM, WHERE, JOIN, GROUP BY usw.) und nimmt sie in das Vorschlags-Popup auf. Aktivier oder deaktivier diese Ebene unter Einstellungen › Text-Editor › SQL-Schlüsselwörter autovervollständigen.
2. Tabellen- und Spaltennamen aus dem Schema:
Calíope lädt die Objekte der aktiven Datenbank (Tabellen, Spalten, Aliasse) und fügt sie den Vorschlägen hinzu. Du musst nicht am Anfang des Namens anfangen: jeder Teil davon zählt, und die, die mit dem Getippten beginnen, stehen zuerst.
---
So öffnet sich das Popup:
- Manuell:⌘N unter macOS, und auf dem iPad die Taste Autovervollständigen in der Symbolleiste des Editors — oder ⌘N, wenn du eine physische Tastatur hast. Sie öffnet das Popup jederzeit, egal was du getippt hast. Die Taste ist da, solange die Autovervollständigung in den Einstellungen aktiviert ist — dasselbe, was auch das Tastenkürzel steuert.
- Automatisch beim Tippen: Das Popup kann von selbst erscheinen, nachdem du kurz aufgehört hast zu tippen. Diese Funktion ist standardmäßig deaktiviert. Zum Aktivieren geh zu Einstellungen › Text-Editor und schalt den Schalter "Autovervollständigung in Echtzeit" ein. Ist sie aktiv, erscheint das Popup ungefähr 350 ms nach dem letzten Tastendruck.
Wenn du SEL tippst, pausierst und nichts erscheint, liegt das daran, dass die Echtzeit-Autovervollständigung nicht aktiviert ist. Nutz ⌘N — oder auf dem iPad die Taste in der Symbolleiste —, um es manuell zu öffnen, oder aktivier die Option in den Einstellungen.
---
Objekt-Popup beim Tippen eines Punkts:
Wenn du einen Datenbanknamen in Backticks gefolgt von einem Punkt tippst (z. B. `mi_bd`. ), zeigt der Editor automatisch die Tabellen dieser Datenbank zur direkten Auswahl an. Wenn du weitertippst, wird die Liste kürzer und behält nur die Namen, die das Getippte enthalten.
Verfügbar auf macOS, iPad und iPhone. Auf dem iPad und dem iPhone brauchst du keine Tastatur: die Taste in der Symbolleiste öffnet das Popup genauso wie ⌘N.
Klappt Klammer-Blöcke und BEGIN…END-Blöcke zu oder auf, um komplexe Skripte übersichtlicher zu lesen.
Wo es zu finden ist: Tastaturkürzel: ⌃. / ⌃, — clic en el margen izquierdo
Der SQL-Editor von Calíope kann zwei Arten von Blöcken zuklappen (kollabieren):
1. Klammer-Blöcke (…)
Praktisch für lange Subqueries, IN (…)-Klauseln oder Spaltenlisten in CREATE TABLE. Das Dreieck ▼ erscheint am linken Rand in jeder Zeile, die ein ( mit Zeilenumbrüchen im Inneren enthält.
2. BEGIN…END-Blöcke
Die Rümpfe von Stored Procedures, Funktionen, Triggern und Events in MariaDB/MySQL nutzen BEGIN…END. Das Dreieck ▼ erscheint am linken Rand über der Zeile, die BEGIN enthält. Beim Zuklappen bleibt der Block als BEGIN(…)END stehen, sodass die Signatur des Objekts sichtbar bleibt (CREATE PROCEDURE …, CREATE FUNCTION … usw.).
Unterstützte Blöcke:
- CREATE PROCEDURE name() BEGIN … END
- CREATE FUNCTION name() RETURNS type BEGIN … END
- CREATE TRIGGER name … BEGIN … END
- CREATE EVENT name … DO BEGIN … END
- Einzelne BEGIN … END-Blöcke (Transaktionsbeginn)
Die Blöcke END IF, END LOOP, END CASE, END WHILE und ähnliche schließen kein Routine-BEGIN und werden korrekt ignoriert.
So klappst du auf/zu:
- Mit Maus / Touch: Klick (macOS) oder tipp (iPad) auf das Dreieck ▼ am linken Rand der Zeile.
- Mit Tastatur (macOS):
- ⌃. (Control + Punkt) — Klappt den Block (Klammer oder BEGIN…END) zu, der den Cursor enthält.
- ⌃, (Control + Komma) — Klappt den zugeklappten Block an der Cursorposition wieder auf.
Verhalten:
- Das Zuklappen ist rein visuell: Der vollständige Text bleibt im Editor und wird beim Ausführen komplett an den Server geschickt.
- Die Folds bleiben erhalten, solange der Tab geöffnet ist.
Anzeige im Sidebar, die CPU und RAM der App zeigt, mit Aufräum-Vorschlägen bei hoher Auslastung.
Wo es zu finden ist: Seitenleiste › Performance-Monitor (unten im Sidebar)
Der Performance-Monitor erscheint unten im linken Sidebar des Workspace (unter dem Schemabaum). Er zeigt die aktuelle CPU- und RAM-Auslastung der App Calíope.
Farben der Anzeige:
- 🟢 Grün — Normale Performance (CPU < 30 %, RAM < 5 % des gesamten System-RAM)
- 🟡 Bernstein — Erhöhte Auslastung (CPU 30–70 % oder RAM 5–10 % des gesamten RAM)
- 🔴 Rot — Hoher Druck (CPU > 70 % oder RAM > 10 % des gesamten RAM; auf dem iPad wird sie auch durch eine Warnung des Betriebssystems ausgelöst)
Was "Ergebnisse leeren" bedeutet: Es verwirft das Zeilen-Array des aktuellen Ergebnisses dieses SQL-Editor-Tabs und gibt den belegten Speicher frei. Die im Editor geschriebene Query wird nicht gelöscht; du kannst sie jederzeit erneut ausführen.
Wann du handeln solltest: Erscheint das Badge der Anzeige rot, reagiert die App möglicherweise langsamer. Klick oder tipp auf die Anzeige, um das Detail-Panel zu sehen — die Vorschläge zeigen genau, welcher Tab am meisten Speicher belegt, und bieten einen direkten Aktions-Button.
Kommentiert die ausgewählten Zeilen mit dem Präfix '--' ein oder aus.
Wo es zu finden ist: SQL-Editor › Kommentieren
Drück ⌘D (oder den Button Kommentieren in der Toolbar), um den SQL-Kommentar in den ausgewählten Zeilen umzuschalten.
Verhalten:
- Ist Text ausgewählt, wirkt es auf alle Zeilen, die die Auswahl umfasst.
- Ohne Auswahl wirkt es auf die Zeile, in der der Cursor steht.
- Beginnen bereits alle nicht-leeren Zeilen mit --, wird der Kommentar entfernt; andernfalls wird -- an den Anfang jeder Zeile gesetzt.
Tastenkürzel:
- macOS:⌘D im Editor oder Button in der Toolbar
- iPad:⌘D mit Magic Keyboard oder Button in der Toolbar
Der Vorgang ist auf macOS mit ⌘Zrückgängig machbar.
Unterstreicht lexikalische Fehler im Editor beim Tippen, ohne etwas gegen die Datenbank auszuführen.
Wo es zu finden ist: SQL-Editor › Ergebnisleiste
Das Linting vor der Ausführung analysiert den Editortext automatisch (500 ms nachdem du aufhörst zu tippen) und unterstreicht mit einer roten gestrichelten Linie die lexikalischen Fehler, die MySQL/MariaDB definitiv ablehnen würde.
Erkannte Fehler:
Fehler
Beispiel
Nicht geschlossenes String-Literal
WHERE nombre = 'juan
Nicht geschlossener Backtick-Bezeichner
SELECT `columna
Nicht geschlossener Block-Kommentar
/* sin cierre
Öffnende Klammer ohne Schließung
SIN(x + 1
Schließende Klammer ohne Öffnung
SIN x + 1)
So liest du es:
- Das problematische Zeichen wird mit einer roten gestrichelten Linie unterstrichen.
- In der Ergebnisleiste erscheint ein rotes Badge mit der Anzahl der Fehler (z. B. ⚠ 2 error(es)). Fährst du mit dem Zeiger über das Badge, siehst du alle Meldungen.
- Gibt es keine Fehler, verschwindet das Badge.
Einschränkungen:
Der Linter ist rein lexikalisch; er prüft weder, ob die Namen von Tabellen oder Spalten auf dem Server existieren, noch die Semantik der SQL-Klauseln. Sein Zweck ist es, die offensichtlichsten Fehler abzufangen — nicht geschlossene Strings, unausgeglichene Klammern —, die in langen Skripten oft schwer zu sehen sind.
Verfügbar auf macOS, iPad und iPhone.
Stichwörter: lint, linting, error, diagnose, unterstreichen, vor dem ausführen, klammern, string, backtick, kommentar, vor-ausführung
Legt fest, ob lange Zeilen visuell umbrochen werden oder horizontales Scrollen erlauben.
Wo es zu finden ist: SQL-Editor › Einstellungen → Editor
Der automatische Zeilenumbruch (Word Wrap) bestimmt, wie die Zeilen des Editors dargestellt werden, wenn ihre Länge die sichtbare Breite überschreitet.
Aktiviert (Standard): Lange Zeilen werden in die nächste visuelle Zeile umbrochen, ohne dass ein Zeichen in den Text eingefügt wird. Das ist bequemer, um komplexe Queries ohne horizontales Scrollen zu lesen.
Deaktiviert: Jede Zeile belegt genau eine Reihe. Am Fuß des Editors erscheint eine horizontale Scrollleiste, mit der du die ganze Zeile ohne Unterbrechung sehen kannst. Nützlich für Skripte mit tabellarischer Ausrichtung (SELECT column1, column2, ...) oder um automatisch generierten Code mit sehr langen Zeilen zu prüfen.
So änderst du es:
- macOS: Menü Calíope → Einstellungen → Editor → Automatischer Zeilenumbruch.
- iPad:Einstellungen der App → dieselbe Option.
Die Einstellung wird zwischen macOS, iPad und iPhone über den Schlüssel caliope_pref_word_wrap in UserDefaults geteilt.
Stichwörter: word wrap, zeilenumbruch, wrap, horizontales scrollen, lange zeilen, einstellungen, konfiguration, no wrap
Hebt die zum Cursor gehörende öffnende/schließende Klammer oder das Schlüsselwort hervor.
Wo es zu finden ist: SQL-Editor › Text-Editor
Wenn der Cursor neben einer Klammer oder den Schlüsselwörtern BEGIN/END steht, hebt der Editor automatisch das Zeichen oder Schlüsselwort hervor, das dazu passt.
Unterstützte Paar-Typen:
Öffnet
Schließt
SQL-Beispiel
(
)
Subqueries, Funktionsaufrufe
{
}
Inline-JSON
[
]
Namen mit Leerzeichen [mi tabla]
BEGIN
END
Prozeduren, Funktionen, Trigger, Events
Farbcode:
- Gelb — beide Enden wurden korrekt gefunden.
- Rot — die Klammer oder das Schlüsselwort hat kein Gegenstück (Ungleichgewicht).
Verhalten:
- Die Hervorhebung aktualisiert sich in Echtzeit, wenn du den Cursor bewegst oder den Text änderst.
- END IF, END LOOP, END CASE, END WHILE, END REPEAT und END FOR werden korrekt ignoriert: Nur die END, die einen Routine-BEGIN-Block schließen, werden gepaart.
- Verschachtelte BEGIN/END-Blöcke werden über Tiefenzählung aufgelöst (das korrekte END wird auch bei mehreren Verschachtelungsebenen erkannt).
Ein Doppelklick auf ein Wort, und der Editor hebt alle seine Vorkommen im Text hervor.
Wo es zu finden ist: SQL-Editor › Text-Editor
Doppelklicken Sie auf ein Wort im Editor —einen Tabellennamen, eine Spalte, einen Alias, ein Schlüsselwort— und alle weiteren Vorkommen werden mit türkisem Hintergrund gezeichnet. Auf dem iPad ist die entsprechende Geste der Doppeltipp.
Wonach entschieden wird, was hervorgehoben wird:
- Verglichen wird das ganze Wort: id auszuwählen hebt nicht das id innerhalb von identifikator hervor.
- Groß- und Kleinschreibung spielt keine Rolle, denn für MySQL sind Id, id und ID dieselbe Spalte.
- Die Auswahl muss genau ein Wort sein: umfasst sie Leerzeichen, Kommas oder Klammern, oder schneidet sie ein Wort in der Mitte durch, wird nichts hervorgehoben.
- Das Wort muss mindestens zwei Zeichen haben.
- Das ausgewählte Wort selbst wird nicht neu gezeichnet: die Auswahlfarbe hebt es schon ab.
Die Hervorhebung verschwindet, sobald die Einfügemarke bewegt, etwas anderes ausgewählt oder der Text bearbeitet wird. Höchstens 500 Vorkommen werden beleuchtet; in einem Skript, in dem diese Grenze erreicht wird, leistet Suchen (⌘F) bessere Dienste, denn damit springt man auch von einem zum nächsten.
Bearbeite mehrere Positionen im Editor gleichzeitig.
Wo es zu finden ist: SQL-Editor › Spaltenbearbeitung
Der Modus Spaltenbearbeitung setzt sekundäre Cursor auf mehrere Zeilen und schreibt oder löscht in allen gleichzeitig. Genau das brauchst du, um einen Alias in fünf Zeilen umzubenennen oder einem Block von Zeilen ein Präfix oder Suffix zu geben.
Unter macOS:
AppKit hat keinen eigenen Multi-Cursor, also zeichnet ihn Calíope. Nutze den Button Spaltenbearbeitung in der Symbolleiste oder drücke direkt ⌥⌘↓: Das schaltet den Modus ein und setzt den zweiten Cursor in einem Zug; der Button ist violett, solange der Modus läuft. Danach fügt jeder Klick einen Cursor hinzu, und ⌥⌘↓ / ⌥⌘↑ setzen einen in die Zeile darunter oder darüber — ohne Maus; die Spalte bleibt erhalten und wird am Ende einer kürzeren Zeile abgeschnitten. Esc verlässt den Modus. ⌘⇧M ist hier nicht das Kürzel: Unter macOS öffnet es bereits die Snippet-Auswahl.
Auf dem iPad:
Drücke ⌘⇧M mit einem Magic Keyboard oder den Button Spaltenbearbeitung in der Symbolleiste. Bei aktivem Modus sammelt jeder Tipp im Editor einen sekundären Cursor.
Auf beiden ist ein sekundärer Cursor eine blaue senkrechte Linie mit hervorgehobener Zeile, und Schreiben oder Löschen funktioniert gleich: Das Zeichen geht zuerst an den primären Cursor und wird dann auf die sekundären Positionen vom höchsten zum niedrigsten Index repliziert, damit das Einfügen an einer die übrigen nicht verschiebt.
Springt vom Editor direkt zur Definition einer Tabelle, View, Routine oder eines Triggers im Katalog.
Wo es zu finden ist: SQL-Editor › Rechtsklick › Zur Definition springen
Go to Definition löst den Namen eines Bezeichners unter dem Cursor auf und öffnet den Tab Kataloge mit dem ausgewählten Objekt.
So aktivierst du es:
Plattform
Methode
macOS
⌘ + Klick auf den Bezeichner im Editor
macOS
F12 mit dem Cursor auf dem Bezeichner
macOS
Rechtsklick › Zur Definition springen im Kontextmenü
iPad
Halt einen beliebigen Bezeichner gedrückt → Kontextmenü → Zur Definition springen
Erkannte Objekte:
- Tabellen → öffnet den Tab Kataloge und wählt die Tabelle aus
- Views → wechselt zum Tab Views und wählt die View aus
- Prozeduren und Funktionen → wechselt zum Tab Routinen
- Trigger → wechselt zum Tab Trigger
Verhalten:
1. Calíope fragt die Objekte der in der Auswahl aktiven Datenbank ab.
2. Stimmt der Bezeichner mit einem bekannten Objekt überein, öffnet (oder aktiviert) es den Tab Kataloge und wählt das Objekt automatisch aus — inklusive Laden des DDL im unteren Panel.
3. Existiert der Bezeichner nicht im aktiven Schema, zeigt die Statusleiste "Objekt im Schema nicht gefunden" an, ohne den Katalog zu öffnen.
Voraussetzung: In der Auswahl der Toolbar muss eine aktive Datenbank ausgewählt sein.
Verfügbar auf macOS, iPad und iPhone.
Stichwörter: go to definition, zur definition springen, navigieren, tabelle, view, routine, katalog, F12, cmd klick, long press, bezeichner, schema
DDL-Tooltip beim Überfahren mit dem Cursor (Hover)
Zeigt das DDL von Tabellen, Views, Routinen und Triggern, indem du nur mit dem Cursor über ihren Namen im Editor fährst.
Wo es zu finden ist: SQL-Editor › DDL-Tooltip
Hover-DDL-Tooltip ist der schnellste Weg, die Definition eines Schema-Objekts zu inspizieren, ohne den Editor zu verlassen.
so funktioniert es:
Plattform
Verhalten
macOS
Halt den Cursor 0,4 s lang über dem Namen eines beliebigen Schema-Objekts — es erscheint ein Popover mit dem vollständigen DDL
iPad
Bewege den Text-Cursor (tipp) über einen Bezeichner des Schemas — es erscheint die DDL-Leiste unter der Toolbar
Ohne Zeiger (macOS):Navigieren › Funktionshilfe an der Einfügemarke (⌃⌘?) öffnet die Karte für das, was am Text-Cursor steht — dasselbe Popover wie beim Hover, auch für eine gerade getippte Funktion (DATE_FORMAT(). Gibt es dort nichts zu dokumentieren, ertönt ein Signalton.
Inhalt des Popovers / der DDL-Leiste:
- Symbol und Badge des Typs (TABELLE, VIEW, PROZEDUR, FUNKTION, TRIGGER, EVENT)
- Vollständiges DDL in Monospace-Schrift, mit aktivierter Textauswahl
- Button "Zur Definition springen" → navigiert zum Objekt im Tab Kataloge
Koexistenz mit der Hilfe zu nativen Funktionen:
- Ist der Bezeichner eine native SQL-Funktion gefolgt von ( (z. B. DATE_FORMAT(), wird die Dokumentation der Funktion angezeigt, nicht das DDL.
- Ist der Bezeichner ein Schema-Objekt ohne folgendes (, wird der DDL-Tooltip angezeigt.
- Beide Systeme werden nicht gleichzeitig aktiviert.
Cache: Das DDL jedes Objekts wird während der Session im Speicher gehalten, um wiederholte Abfragen zu vermeiden.
Voraussetzung: In der Auswahl der Toolbar muss eine aktive Datenbank ausgewählt sein.
Verfügbar auf macOS, iPad und iPhone.
Stichwörter: ddl, hover, tooltip, popover, create table, show create, definition, tabelle, view, prozedur, funktion, trigger, event, inspektion, schema, hint bar
Such-Palette, um zu jedem Objekt des aktiven Schemas zu springen, indem du einen Teil seines Namens tippst.
Wo es zu finden ist: SQL-Editor › Quick Open
Quick Open ist eine sofortige Such-Palette, mit der du zu jeder Tabelle, View, Prozedur, Funktion, jedem Trigger oder Event navigierst, ohne den Editor zu verlassen oder den Katalog-Baum zu durchlaufen.
So öffnest du es:
Plattform
Methode
macOS
⌘⇧O (Menü Navigieren › Quick Open…)
iPad
⌘⇧O (Magic-Keyboard-Tastatur) oder Button Quick Open in der Editor-Toolbar
So nutzt du es:
1. Es öffnet sich ein Panel mit einem Suchfeld.
2. Tippe einen beliebigen Teil des Objektnamens — die Liste wird in Echtzeit gefiltert.
3. Wähl das Ergebnis mit den Tasten ↑↓ und bestätige mit ↵, oder klick direkt auf das Element.
4. Calíope navigiert automatisch zum Objekt im Tab Kataloge.
5. Drück jederzeit Esc, um zu schließen, ohne zu navigieren.
Suchalgorithmus (Fuzzy Matching auf drei Ebenen):
- Der Name beginnt mit dem getippten Text → höchste Priorität
- Der Name enthält den Text an beliebiger Stelle → mittlere Priorität
- Die getippten Zeichen erscheinen in Reihenfolge als Teilsequenz (z. B. cru findet crear_usuario) → niedrigste Priorität
Die passenden Ergebnisse werden in der Akzentfarbe der App hervorgehoben.
Benennt ein Alias, eine CTE oder Variable um und überträgt die Änderung auf alle Referenzen im aktiven Skript.
Wo es zu finden ist: SQL-Editor › Rechtsklick › Symbol umbenennen
Symbol umbenennen lässt dich den Namen jedes lokalen Bezeichners im Skript ändern — Spalten-Alias, CTE-Name, Variable — und ersetzt automatisch alle seine Vorkommen in derselben Datei in einem einzigen Vorgang.
Wie ruft man es auf?
Plattform
Aktion
macOS
Rechtsklick auf den Bezeichner → Symbol umbenennen…
iPad
Halt den Bezeichner gedrückt → Kontextmenü → Symbol umbenennen…
Tippe den neuen Namen in den erscheinenden Dialog und bestätige mit Umbenennen (oder drück ↵). Alle Vorkommen werden in einem einzigen Schritt ersetzt.
Rückgängig: Der gesamte Vorgang wird mit einem einzigen ⌘Z (macOS) oder durch Schütteln des Geräts / den Rückgängig-Button (iPad) rückgängig gemacht. Es ist nicht nötig, Vorkommen für Vorkommen rückgängig zu machen.
Geltungsbereich: Nur das im aktiven Tab geöffnete Skript. Es verändert kein Objekt in der Datenbank.
Übereinstimmung: Nutzt vollständige Wortgrenzen, sodass das Umbenennen von id weder client_id noch user_id betrifft.
Hinweis: Die Ersetzung ist case-sensitiv und wird auf den gesamten Text des Skripts angewandt, inklusive Kommentaren und String-Literalen, falls der Bezeichner darin vorkommt.
Baue SELECT-Queries visuell, indem du Tabellen ziehst, Spalten auswählst und Calíope die JOINs automatisch erzeugen lässt.
Wo es zu finden ist: Workspace › Query Builder
Query Builder ist ein Tab des Workspace, mit dem du SELECT-Queries visuell baust, ohne SQL manuell zu schreiben.
Wie öffnet man es?
- macOS / iPad: Tab Query Builder in der Navigationsleiste des Workspace (Symbol mit gruppierten Rechtecken).
Arbeitsablauf
1. Das linke Panel zeigt alle Tabellen der aktiven Datenbank.
2. Klick auf + neben einer Tabelle (oder zieh sie auf macOS auf das Canvas), um sie hinzuzufügen.
3. Jede Tabelle erscheint als Karte mit Checkboxen pro Spalte. Standardmäßig sind alle Spalten markiert; deaktivier die, die du nicht brauchst.
4. Calíope erkennt automatisch die Fremdschlüssel zwischen den Tabellen auf dem Canvas und erzeugt den entsprechenden JOIN.
5. Gibt es keinen FK zwischen zwei Tabellen, wird ein CROSS JOIN mit einem Warnkommentar eingefügt.
6. Das untere Panel zeigt das in Echtzeit generierte SQL.
7. Klick auf In den Editor einfügen, um das SQL in einem neuen Editor-Tab zu öffnen.
Canvas-Optionen
Steuerung
Beschreibung
JOIN-Typ
Wechselt zwischen INNER, LEFT und RIGHT für alle JOINs auf dem Canvas
Alias
Tipp auf das Alias einer Tabelle (blau unterstrichener Buchstabe), um es zu bearbeiten
Alle / keine auswählen
Am Fuß jeder Karte
Canvas leeren
Entfernt alle Tabellen vom Canvas
Hinweise
- Die JOINs werden über information_schema.KEY_COLUMN_USAGE erkannt (MySQL/MariaDB-Syntax). Hat die Datenbank keine deklarierten FK, erscheint ein CROSS JOIN, den du manuell im Editor anpassen musst.
- Das generierte SQL ist ein Ausgangspunkt; du kannst es nach dem Einfügen frei bearbeiten.
Verfügbar auf macOS, iPad und iPhone.
Bedingungen (WHERE)
Zwischen Canvas und SQL liegt der einklappbare Bereich Bedingungen, in dem die Abfrage gefiltert wird. Auf Bedingung hinzufügen tippen und Spalte, Operator und Wert wählen.
Detail
Wirkung
Operatoren
=, !=, >, <, >=, <=, LIKE, NOT LIKE, IN, NOT IN, BETWEEN, IS NULL, IS NOT NULL. Bei numerischen Spalten wird LIKE nicht angeboten.
Anführungszeichen
Entscheidet der deklarierte Typ der Spalte: ein varchar wird zitiert, auch wenn der Wert wie eine Zahl aussieht.
IN
Durch Komma getrennte Werte. Enthält ein Wert ein Komma, in einfache Anführungszeichen setzen: 'Pérez, Ana', Luis.
{}-Taste
Behandelt den Wert als SQL-Ausdruck statt als Literal: eine andere Spalte (p.fecha) oder eine Funktion (NOW()).
AND / OR
Der Konnektor gilt pro Zeile. Gemischt kommt das SQL mit expliziten Klammern heraus, damit die Auswertung der Lesart entspricht.
Eine halb ausgefüllte Bedingung zerstört die Abfrage nicht: sie wird in der Liste markiert und im SQL weggelassen.
Hinweis zum äußeren JOIN
Bei LEFT oder RIGHT JOIN verwirft ein Filter im WHERE auf der NULL-fähigen Seite genau die Zeilen ohne Partner, und der JOIN verhält sich am Ende wie ein INNER. Tritt das ein, wird die Bedingung markiert und Ins ON verschieben angeboten: sie wandert in die Verbindungsbedingung und die verwaisten Zeilen bleiben erhalten. IS NULL warnt nicht — das ist das bewusste Muster für „die ohne".
Das Tabellen-Panel hat einen Filter nach Namen in der Kopfzeile: Tippen Sie in einer Datenbank mit vielen Tabellen einen Teil des Namens ein, statt bis zur gesuchten Tabelle zu scrollen. Es ist derselbe Schemabaum wie im Rest der App, beschränkt auf die aktive Datenbank.
Miniaturansicht des gesamten Skripts mit Anzeige der aktuellen Position.
Wo es zu finden ist: SQL-Editor › Einstellungen → Editor
Die Minimap zeigt am rechten Rand eine verkleinerte visuelle Darstellung des gesamten Editorinhalts. Ein halbtransparenter blauer Streifen zeigt an, welcher Teil des Skripts aktuell im Hauptbereich sichtbar ist.
Zum Aktivieren:
- macOS: Menü Calíope → Einstellungen → Editor → Minimap anzeigen.
- iPad:Einstellungen der App → dieselbe Option.
Navigation mit der Minimap:
- Klick / Tipp auf einen beliebigen Punkt der Minimap bewegt den Editor an diese Stelle des Skripts.
- Ziehen über die Minimap ermöglicht kontinuierliches Navigieren.
- Die Minimap aktualisiert sich automatisch beim Tippen und beim Ändern des Scrollens.
Visuelle Darstellung:
Jede Zeile des Skripts erscheint als horizontaler Balken, dessen Breite proportional zur Länge der Zeile ist (normalisiert auf 80 Zeichen). Die Farbe entspricht dem Editortext mit geringer Deckkraft; sie repliziert nicht die Farben der Syntaxhervorhebung.
Abmessungen:
- macOS: 80 pt breit am rechten Rand des Editors.
- iPad: 64 pt breit. Der Textbereich passt sich automatisch an, um nicht verdeckt zu werden.
Zieh eine .sql- oder .txt-Datei direkt auf den Workspace, um sie in einem neuen Editor-Tab zu öffnen.
Wo es zu finden ist: Workspace › SQL-Editor
SQL-Dateien per Drag & Drop öffnen
Du kannst jede .sql- oder .txt-Datei öffnen, indem du sie direkt auf das Workspace-Fenster von Calíope ziehst, ohne das Menü oder den Dateiauswahl-Dialog zu nutzen.
So geht's auf macOS:
1. Öffne den Finder und such deine .sql-Datei.
2. Zieh die Datei auf den Hauptbereich des Workspace von Calíope.
3. Ein blauer visueller Indikator erscheint, solange du die Datei über dem Bereich hältst.
4. Lass die Datei los — der Inhalt öffnet sich automatisch in einem neuen Tab des SQL-Editors.
So geht's auf dem iPad:
1. Öffne die App Dateien in Split View oder Stage Manager neben Calíope.
2. Halt die .sql-Datei gedrückt, bis sie sich "abhebt".
3. Zieh sie zum Workspace von Calíope.
4. Lass sie über dem Editorbereich los — der Inhalt öffnet sich in einem neuen Tab.
Andere Öffnungsmethoden:
- Menü Ablage → SQL-Datei öffnen… (Kürzel: ⌃⌥O auf macOS)
- Auf das Dock-Symbol ziehen auf macOS (vom System verwaltet)
- Teilen → Mit Calíope öffnen aus der App Dateien auf dem iPad
Ordne die Button-Gruppen in der Editor- und der Ergebnisleiste neu an.
Wo es zu finden ist: SQL-Editor › Anpassen (ganz links in jeder Leiste)
Beide Toolbars des SQL-Editors — die Editor-Leiste (oben) und die Ergebnisleiste (unten) — lassen sich anpassen, um die Reihenfolge der Buttons an deinen Workflow anzupassen.
So geht's:
1. Klick auf den Button Anpassen (Symbol mit drei Schiebereglern), der ganz links in jeder Leiste erscheint.
2. Im sich öffnenden Panel siehst du die Liste der Button-Gruppen in ihrer aktuellen Reihenfolge.
3. Zieh jede Zeile, um sie nach deinen Vorlieben neu anzuordnen.
4. Klick auf Fertig, um die Änderungen zu speichern.
Die Reihenfolge wird automatisch gespeichert und bleibt über Sessions hinweg erhalten. Nutz den Button Zurücksetzen, um zur Standardreihenfolge zurückzukehren.
Die in der Editor-Leiste verfügbaren Gruppen sind: Ausführen, Code-Formatierung, Sicherheit und Transaktionen, Verlauf und Navigation, SQL-Analyse, Tools, Performance, Externe Verbindung und Schriftgröße.
Die in der Ergebnisleiste verfügbaren Gruppen sind: Trennzeichen, Ausgabeformat, Optionen, Schriftgröße, Ergebnis speichern, Ergebnisse anheften und Query-Analyse.
Verfügbar auf macOS, iPad und iPhone, mit einer Reihenfolge für den Mac und einer weiteren, die sich iPad und iPhone teilen.
Erhalte eine System-Benachrichtigung, wenn eine Query den konfigurierten Zeitschwellwert überschreitet.
Wo es zu finden ist: Calíope › Einstellungen › Benachrichtigungen
Wenn du eine Query ausführst, die länger als erwartet dauert, und währenddessen zu einer anderen App wechselst, kann Calíope dir beim Abschluss eine lokale Benachrichtigung schicken.
Schwellwert konfigurieren:
Geh zu Einstellungen › Benachrichtigungen und aktivier Lange Query abgeschlossen. Stell den Schwellwert mit dem Stepper-Control ein (Standard 5 s; Bereich 1–300 s).
Die Benachrichtigung wird nur einmal pro 60-s-Fenster ausgelöst, um Spam zu vermeiden, wenn du viele Queries in schneller Folge ausführst. Sie kommt auch an, wenn Calíope im Vordergrund ist: Die einzigen Hinweise, die bei geöffneter App unterdrückt werden, sind die beiden zur manuellen Sicherung.
Stichwörter: benachrichtigung, lange query, zeit, schwellwert, hintergrund, alarm
Meldet, wenn eine Query mehr Zeilen zurückgibt als der konfigurierte Schwellwert.
Wo es zu finden ist: Calíope › Einstellungen › Benachrichtigungen
Wenn du eine Query ausführst, die Tausende von Zeilen zurückgibt, kann Calíope dich per lokaler Benachrichtigung informieren.
Schwellwert konfigurieren:
Geh zu Einstellungen › Benachrichtigungen und aktivier Ergebnis mit ungewöhnlichem Umfang. Stell den Schwellwert mit dem Stepper-Control ein (Standard 10 000 Zeilen; Bereich 1 000–100 000).
Die Daten werden immer auf dem Bildschirm angezeigt; die Benachrichtigung ist nur informativ.
Bearbeite komplexe Werte in einem eigenen Sheet mit Tabs für Text, JSON und Binärdaten.
Wo es zu finden ist: Ergebnisse › Rechtsklick › Wert erweitert bearbeiten…
Der Erweiterte Zellen-Editor ist ein modales Sheet für Werte, die nicht bequem ins Raster passen: umfangreiche Texte (TEXT, MEDIUMTEXT, LONGTEXT), JSON-Dokumente, binäre Inhalte (BLOB, VARBINARY) und Strings mit Zeilenumbrüchen.
So öffnest du ihn
- macOS: Mach einen Rechtsklick auf die Zelle und wähl Wert erweitert bearbeiten…, oder drück ⌘E bei ausgewählter Zelle.
- iPad: Halt die Zelle gedrückt und wähl Wert erweitert bearbeiten… im Kontextmenü.
Tabs des Editors
- Text — Feld zum Bearbeiten von Klartext mit Zeichenzählung, Zeilenzählung und einer Umbruch-Option. Nützlich für VARCHAR/TEXT mit Zeilenumbrüchen.
- JSON — Editor mit Färbung und Validierung. Der Button Formatieren wendet eine Einrückung von 2 Leerzeichen an; Minifizieren bringt es auf eine Zeile. Ist das JSON ungültig, zeigt eine untere Leiste den Fehler mit exakter Zeile und Spalte.
- Hex — bearbeitbarer Tab, der den Inhalt in Hexadezimal zeigt (Paare in Großbuchstaben, 16 Bytes pro Zeile). Akzeptiert beim Einfügen Leerzeichen, Zeilenumbrüche und ein optionales 0x-Präfix.
- Base64 — bearbeitbarer Tab mit dem Inhalt in Standard-Base64 (RFC 4648). Akzeptiert beim Einfügen Whitespace.
- Bild — zeigt eine Vorschau der aktuellen Bytes als Bild, wenn ihr Inhalt interpretierbar ist (PNG, JPEG, GIF usw.). Aktualisiert sich live beim Bearbeiten von Hex oder Base64. Das Bild lässt sich vergrößern: mit zwei Fingern aufziehen, das Mausrad mit dem Zeiger darüber drehen oder die Schaltflächen am Fuß benutzen, die den Prozentwert dazwischen tragen und auf ⌘−, ⌘+ und ⌘0 hören. Der Bereich reicht von 100 %, also dem in den Rahmen eingepassten Bild, bis 800 %; ein Doppelklick —Doppeltippen auf dem iPad— wechselt zwischen eingepasst und 200 %, verankert dort, wo Sie getippt haben, und Ziehen verschiebt es, ohne dass es sich vom Rand löst.
Jeder bearbeitbare Tab enthält die Buttons Formatieren (rückt die gültigen Bytes neu ein), Einfügen (liest aus der Zwischenablage) und Zurücksetzen (kehrt zum ursprünglichen Wert zurück). Lässt sich der getippte Inhalt nicht decodieren, zeigt ein rotes Badge es an und der Button OK wird deaktiviert.
Speichern oder verwerfen
- Speichern — bereitet das UPDATE-Statement vor und öffnet es in der Änderungsvorschau, bevor es ausgeführt wird; es wird nie direkt ausgeführt.
- Abbrechen — schließt, ohne die Zeile zu ändern. Die ursprüngliche Zelle bleibt unverändert.
Einschränkungen
- Hat die Tabelle keinen Primärschlüssel oder lässt sich die Zeile nicht eindeutig identifizieren, wird der Button Speichern deaktiviert. In diesem Fall schlägt Calíope vor, das UPDATE-Statement manuell auszuführen.
- Für NULL-Werte nutz das Menü Wert › NULL setzen im Editor; schreib nicht das wörtliche Wort in das Textfeld.
- Der Editor übergibt die Bytes als UTF-8-String an die UPDATE-Pipeline. Bytes, die kein gültiges UTF-8 bilden (zum Beispiel reines 0xDEADBEEF), werden beim Speichern durch das Ersetzungszeichen ersetzt; für diese Fälle baust du das UPDATE besser manuell mit UNHEX('…') oder 0x…-Literalen.
Führt dieselbe Query gegen zwei verschiedene Datenbanken oder Server aus und zeigt die Unterschiede Zeile für Zeile.
Wo es zu finden ist: SQL-Editor › In zwei Datenbanken ausführen…
Die Ansicht Ergebnisvergleich lässt dich dieselbe Query gegen zwei verschiedene Sessions ausführen — zum Beispiel Produktion vs. Staging oder zwei Replikate — und die Unterschiede Zeile für Zeile und Zelle für Zelle sehen.
So startest du den Vergleich
- Öffne den SQL-Editor in einer Session, verfass die Query und klapp das Menü Ausführen ▸ in der Leiste der Ansicht auf.
- Wähl In zwei Datenbanken ausführen… und wähl die zweite Datenbank oder den Server, mit dem du vergleichen willst. Beide Ausführungen laufen parallel.
- Nach Abschluss wird das Ergebnisraster durch die Vergleichsansicht ersetzt.
Zusammenfassungsleiste (oben)
- Zwei "Badges" mit der Farbe jeder Datenbank: blau = primär, orange = sekundär. Jedes zeigt den Namen der Session, die Anzahl der Zeilen und die Zeit (ms).
- Diff-Abzeichen: grün mit ✓ Identisch, wenn alles übereinstimmt, oder orange mit ⚠︎, das anzeigt, wie viele Werte sich unterscheiden (N Unterschiede) und wie viele Zeilen nur auf einer Seite existieren (M zusätzliche Zeilen).
- Toggle Nur Diffs — filtert die Tabelle, um nur die Zeilen mit Unterschied zu zeigen.
Vergleichsraster
- Jede Zeile beginnt mit einem Indikator:
- = (grau) — die Zeile ist in beiden Datenbanken identisch.
- P (blau) — Zeile der primären Seite.
- S (orange) — Zeile der sekundären Seite.
- Zeilen mit unterschiedlichen Werten erscheinen gepaart (P oben, S unten), wobei die abweichenden Zellen rot (primär) oder grün (sekundär) hervorgehoben sind.
- Zeilen, die nur auf einer Seite existieren, erscheinen mit intensiver getöntem Hintergrund.
Weitere Zustände
- Betroffene Zeilen — ist die Query ein INSERT/UPDATE/DELETE, zeigt die Ansicht große Zähler nebeneinander mit dem Label Betroffene Zeilen identisch oder der numerischen Differenz.
- Fehler auf einer oder beiden — schlug eine Ausführung fehl, erscheint der Fehlerblock mit der Meldung in Monospace (auswählbar).
- Spalten stimmen nicht überein — gaben die beiden Queries unterschiedliche Spaltensätze zurück, werden sie nebeneinander aufgelistet, mit + für zusätzliche Spalten und ✓ für die gemeinsamen.
Kontextmenü über einer Zelle
- Kopieren — kopiert den exakten Wert in die System-Zwischenablage.
Hinweise
- Die Zeilenreihenfolge kommt von jedem Server so, wie sie ist; für stabile Vergleiche nutz immer ein explizites ORDER BY.
- NULL-Werte werden in blassem Rot mit dem wörtlichen Label NULL angezeigt.
Stichwörter: vergleichen, vergleich, diff, unterschiede, zwei datenbanken, zwei server, primary, secondary, primär, sekundär, nur diffs, identische zeilen, betroffene zeilen, spalten stimmen nicht überein, dual, nebeneinander
Räumliche Daten auf einer Karte ansehen und bearbeiten
Wie GEOMETRY-Spalten gelesen und gezeichnet werden und wie man sie ohne handgeschriebenes SQL bearbeitet.
Wo es zu finden ist: SQL-Editor › Karte
Eine GEOMETRY-Spalte — POINT, LINESTRING, POLYGON und ihre Mehrfachvarianten — erscheint nicht mehr als eine Handvoll Bytes: Calíope zeigt sie im Raster als WKT-Text, genau so, wie ST_AsText sie schreiben würde, und zeichnet sie auf einer Karte.
Die Karte öffnen
Bei einem Ergebnis mit mindestens einer räumlichen Spalte öffnet die Schaltfläche Karte in der Ergebnisleiste ein Feld unterhalb des Rasters. Ziehen Sie die Trennlinie, um die Höhe mit dem übrigen Editor zu teilen, genau wie beim Diagramm oder beim Terminal.
Hat das Ergebnis mehrere räumliche Spalten, wählt ein Auswahlfeld links aus, welche gezeichnet wird. Punkte erscheinen als Nadeln, Linien und Polygone als Züge; ein Polygon mit Löchern wird mit seinen Löchern gezeichnet.
Was nicht gezeichnet wird, wird gesagt
Am Fuß des Feldes stehen die Zähler, die den Unterschied zwischen den Zeilen des Ergebnisses und dem Inhalt der Karte erklären: wie viele Zeilen keine Geometrie haben, wie viele durch die Zeichenobergrenze — zehntausend Geometrien — herausfielen und wie viele nicht gelesen werden konnten. Eine nicht angezeigte Zeile verschwindet nie stillschweigend.
Bearbeiten
Die Modusauswahl hat drei Stellungen. In Erkunden wird nur geschaut. In Verschieben lassen sich die Nadeln ziehen: Wenn Sie eine loslassen, setzt Calíope die UPDATE-Anweisung zusammen und zeigt sie, bevor sie ausgeführt wird — es wird nichts geschrieben, bis Sie auf Anwenden drücken, und beim Abbrechen kehrt die Nadel an ihren Platz zurück. In Hinzufügen schlägt ein Tippen auf die Karte das INSERT einer neuen Geometrie vor.
Wählen Sie im Modus Verschieben eine Linie oder ein Polygon aus, erscheinen deren Stützpunkte: Die runden werden zum Verschieben gezogen, und die mit + markierten, jeweils in der Mitte eines Abschnitts, erzeugen beim Ziehen einen neuen Stützpunkt. Die Ringe eines Polygons bleiben von selbst geschlossen.
Die Schaltfläche Leeren setzt die Geometrie der gewählten Zeile auf NULL, ohne die Zeile zu löschen.
Wann nicht bearbeitet werden kann
Sehen Sie statt der Modusauswahl ein Schloss, ist die Karte schreibgeschützt. Es gibt zwei Fälle, und der Grund erscheint beim Zeigen mit der Maus: Aus der Abfrage geht nicht hervor, in welche Tabelle geschrieben würde — ein JOIN, eine Sicht, eine Unterabfrage — oder das Ergebnis hat keinen verlässlichen Primärschlüssel. Ohne ihn könnte ein UPDATE mehrere Zeilen treffen, deshalb bietet Calíope es lieber nicht an. Den Primärschlüssel in das SELECT aufzunehmen genügt meist.
Die Reihenfolge der Koordinaten
Bei POINT(a b) hängt es vom Server und vom Referenzsystem ab, welche der beiden Zahlen die geografische Breite ist, und das ist keine Kleinigkeit: verkehrt herum landet ein Punkt aus Madrid im Indischen Ozean. MySQL 8 schreibt mit SRID 4326 die Breite zuerst, weil EPSG:4326 das so festlegt; MariaDB und SRID 0 schreiben die Länge zuerst. Calíope löst das selbst — es zeigt und schreibt in derselben Reihenfolge wie der Server — und deshalb stimmt der Text der Zelle immer mit dem überein, was ST_AsText auf demselben Server zurückgibt.
Detaillierte Statistiken einer Spalte des Ergebnisses: min, max, avg, NULLs, eindeutige und Top-Werte.
Wo es zu finden ist: Ergebnisraster › Rechtsklick › Spalte profilen…
Der Spalten-Profiler analysiert die Werte einer beliebigen Spalte im Ergebnis einer SQL-Query.
Wie du ihn aktivierst:
- macOS: Rechtsklick auf den Kopf einer Spalte im Ergebnisraster und wähl Spalte profilen…
- iPad: Tippe auf den Button Sp. profilen in der Ergebnisleiste, um das Panel mit dem Spaltenauswähler zu öffnen.
Angezeigte Informationen:
- Gesamtzahl der Zeilen, Anzahl der NULLs und Prozentsatz
- Eindeutige Werte und ihr Prozentsatz
- Minimum, Maximum und Durchschnitt (wenn die Spalte numerisch ist)
- Top 8 häufigste Werte mit Balkendiagramm
Die Berechnungen erfolgen auf den bereits geladenen Zeilen, ohne zusätzliche Queries an den Server auszuführen.
Schlüsselt die internen Phasen einer Query mit ihrer Ausführungszeit auf.
Wo es zu finden ist: SQL-Editor › Profilen
Der Query-Profiler nutzt SET profiling = 1 und SHOW PROFILE FOR QUERY n (MySQL/MariaDB-Syntax), um die Aufschlüsselung der internen Phasen von MySQL beim Ausführen einer Query zu erhalten.
Wie du ihn aktivierst: Klick auf den Button Profilen in der Ergebnisleiste des SQL-Editors. Calíope führt die aktuelle Query erneut aus und zeigt die Phasen (parsing, optimizing, executing, sending data usw.) mit ihrer Dauer in Millisekunden.
Das horizontale Balkendiagramm hebt die teuersten Phasen visuell hervor. Die Spalte % gibt an, welchen Anteil der Gesamtzeit jede Phase verbraucht. Wenn eine Phase über 50% steigt, wird sie rot markiert.
> Hinweis:SHOW PROFILE erfordert die Variable have_profiling = YES auf dem Server. In modernen MySQL-Versionen 8.0+ ist es möglicherweise nicht verfügbar, da es deprecated wurde; nutze in diesem Fall stattdessen Visual EXPLAIN.
Erkennt vollständige Durchläufe im Ausführungsplan und schlägt CREATE INDEX vor.
Wo es zu finden ist: SQL-Editor › Indizes
Der Index-Advisor fordert den Ausführungsplan der aktuellen Abfrage an und sucht darin die vollständigen Tabellendurchläufe.
Wie du ihn aktivierst: Klick auf Indizes in der Ergebnisleiste. Calíope zeigt:
1. Den übersetzten Plan, Knoten für Knoten, mit demselben Vokabular und denselben Farben wie Visual EXPLAIN: vollständige Durchläufe erscheinen rot.
2. Die Vorschläge, mit dem Grund und Buttons zum Kopieren des SQL oder zum Einfügen in den Editor. Filtert die Abfrage nach einer Spalte, die kein Index abdeckt, ist der Vorschlag ein CREATE INDEX auf diese Spalte; filtert sie nach keiner, vermeidet kein Index den Durchlauf und der Vorschlag sagt das als Kommentar, statt einen Index vorzuschlagen, der nichts brächte.
Gibt es keine vollständigen Durchläufe, erscheint ein grünes Siegel. Der Advisor deckt den häufigsten Fall ab; für den ganzen Baum, mit Zeilen und Detail, nimm Visual EXPLAIN.
Visualisiert das Ergebnis einer Query als Balken-, Linien- oder Kuchendiagramm.
Wo es zu finden ist: SQL-Editor › Diagramm
Das Ergebnis-Diagramm verwandelt die Zeilen einer SELECT-Query in eine interaktive Visualisierung mit Swift Charts.
Wie du es aktivierst: Führe eine Query aus, die Daten zurückgibt, und klick auf Diagramm in der Ergebnisleiste. Das Diagramm-Panel erscheint unter dem Raster.
Steuerungen:
- Typ: Balken, Linien oder Kuchen
- X-Achse: Spalte, die als Beschriftung dient (empfohlen: Text oder Datum)
- Y-Achse: numerische Spalte, die dargestellt wird
- Max: maximale Anzahl der zu zeichnenden Zeilen (5–500)
Das Diagramm erkennt automatisch die numerischen Spalten und wählt die sinnvollsten Werte. Funktioniert unter macOS, auf dem iPad und auf dem iPhone.
Misst die Ausführungszeit einer SQL-Query über mehrere Iterationen mit detaillierten Statistiken.
Wo es zu finden ist: SQL-Editor › Benchmark
Der Benchmark führt die aktive Query des Editors N-mal aus und berechnet Leistungsstatistiken, wodurch du Zeitschwankungen erkennen und die Auswirkung von Index- oder Strukturänderungen bewerten kannst.
Wie du ihn aktivierst:
Klick auf den Button Benchmark (Stoppuhr-Symbol) in der Werkzeugleiste des SQL-Editors. Es öffnet sich ein Blatt mit dem vorgeladenen SQL der aktiven Query.
Steuerungen:
- Iterationen — nutze den Stepper, um zu wählen, wie oft die Query ausgeführt wird (1–1000, Schritte von 10). Standard sind 10 Iterationen.
- Benchmark starten — beginnt die Ausführung. Der Button ist deaktiviert, wenn der Editor leer ist.
- Stoppen — bricht die laufende Ausführung ab und behält die bis dahin gesammelten Ergebnisse.
Angezeigte Metriken:
- Total — Summe aller Ausführungszeiten in ms.
- Durchschnitt — arithmetisches Mittel der Ausführungszeiten.
- Minimum — die schnellste Ausführung.
- Maximum — die langsamste Ausführung.
- Std.-Abw. — Standardabweichung: hohe Werte deuten auf Inkonsistenz der Zeiten hin (mögliche Contention oder variable Serverlast).
Balkendiagramm: Jeder Balken steht für eine Iteration. Die Balken werden grün (schnell), gelb (mittel) oder rot (langsam, mehr als 66% des Maximums) eingefärbt, um Ausreißer visuell zu erkennen.
Anwendungsfälle:
- Die Zeit einer Query vor und nach dem Anlegen eines Index vergleichen.
- Prüfen, ob der Server unter Last konsistent antwortet.
- Die Auswirkung von Änderungen an der WHERE-Klausel oder den JOIN messen.