Diese Seite beschreibt Calíope 1.7, die Version, die ich gerade baue. Die 1.6 ist im App Store für Mac, iPad, iPhone, Apple Watch, Apple TV und Apple Vision Pro. 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.
Wenn das Ergebnis mehr Zeilen hat als das Zeilenlimit (Einstellungen › Text-Editor › Ergebnisse), behält der Editor die ersten und die Leiste sagt „N von mindestens M“, mit Alle laden daneben. Das Limit hält ein riesiges Ergebnis aus dem Speicher; null schaltet es aus.
Schlägt die Anweisung fehl, zeigt der Ergebnis-Tab den Text, den der Server geschickt hat, unverändert.
MySQLMariaDBAurora
Bei MySQL und MariaDB folgen Fehlernummer und SQLSTATE: „Table 'demo.x' doesn't exist (error 1146, SQLSTATE 42S02)“.
PostgreSQL
Bei PostgreSQL stehen Meldung, Detail und Hinweis des Servers, in dieser Reihenfolge und mit „ — “ verbunden.
Oracle
Bei Oracle ist es der Text des Servers mit seiner Nummer: „ORA-00942: table or view "DEMO"."NO_EXISTE" does not exist“. Sagt der Server, an welcher Stelle der Anweisung der Fehler liegt, markiert der Editor dieses Wort und die Statusleiste ergänzt „Zeile L, Spalte C“, gezählt im Text des Editors.
MySQLMariaDBAurora
Ein CALL auf eine Prozedur, die Zeilen liefert, zeigt sie wie ein SELECT; liefert sie mehrere Ergebnismengen, behält der Tab die letzte.
MySQLMariaDBAuroraPostgreSQLOracle
Serverwarnungen. Läuft die Anweisung durch, hinterlässt der Server aber Warnungen —ein beim Speichern gekürzter Wert, eine Umwandlung, ein DROP … IF EXISTS, das nichts gefunden hat—, erscheint über den Ergebnissen die Zeile N Serverwarnungen mit einem Dreieck. Ein Klick oder Tippen klappt sie auf, eine pro Zeile, als „Stufe (Code): Text“, und der Text lässt sich markieren. Auf dem Mac, iPad, iPhone und Apple Vision Pro ist es gleich.
MySQLMariaDBAurora
Calíope holt sie mit SHOW WARNINGS über dieselbe Verbindung und bevor die nächste Anweisung geht, solange der Server sie noch aufbewahrt.
PostgreSQL
Bei PostgreSQL sind es die WARNING- und NOTICE-Meldungen, die der Server mit der Antwort schickt —das RAISE WARNING einer Funktion, die INFO-Zeilen von ANALYZE VERBOSE—, mit dem SQLSTATE als Code; anfordern musst du nichts.
Oracle
Bei Oracle ist die typische Warnung eine Prozedur, Funktion, ein Paket oder Trigger, der mit Fehlern angelegt wird: Die Anweisung läuft durch, das Objekt bleibt ungültig, und außer der allgemeinen Warnung kommt jeder Fehler aus ALL_ERRORS als eigene Warnung, mit Zeile und Position, wie SHOW ERRORS in SQL*Plus.
MySQLMariaDBAurora
LOAD DATA LOCAL INFILE. Verlangt die Anweisung eine Datei von diesem Gerät, liest Calíope sie nicht von sich aus: Es öffnet eine Auswahl und schickt dem Server nur die Datei, die du dort wählst, nie den Pfad aus der Anweisung, der nur als Vorschlag dient. Auf dem Mac ist es das Öffnen-Fenster mit Senden; auf iPad, iPhone und Apple Vision Pro ein Blatt mit Datei auswählen … und Nichts senden. Brichst du ab, wird nichts gesendet und die Anweisung schlägt mit „Es wurde keine Datei gesendet“ fehl. Auf dem Server muss local_infile eingeschaltet sein: Manche Server werden mit ausgeschalteter Einstellung ausgeliefert, und dann sagt es der Fehler; einschalten muss es, wer den Server verwaltet.
Oracle
Oracle unterscheidet die leere Zeichenkette nicht von NULL: '' wird als NULL gespeichert und gelesen, auch als gebundener Wert.
Stichwörter: run, ausführen, query, abfrage, ergebnisse, Warnungen, warnings, SHOW WARNINGS, NOTICE, LOAD DATA LOCAL INFILE, local_infile, CALL, Prozedur, Serverfehler
Bricht die zu lange laufende Anweisung 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).
Wie die Anweisung abgebrochen wird, hängt von der Engine ab, und bei allen bleibt die Verbindung bestehen.
- 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.
MySQLMariaDBAurora
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. 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.
SQL Server
Mit SQL Server läuft es über dieselbe Verbindung: Calíope sendet das Abbruchsignal des Protokolls (ATTENTION), und die Verbindung bleibt bestehen und geht zurück in den Pool. Dort würde KILL die ganze Sitzung schließen, deshalb wird es nicht verwendet.
PostgreSQL
Mit PostgreSQL schickt Calíope die Abbruchanforderung des Protokolls selbst (CancelRequest) über eine eigene Verbindung —durch den SSH-Tunnel, wenn das Profil einen nutzt—, mit dem Schlüssel, den der Server dieser Sitzung beim Öffnen gegeben hat. Es sind keine Rechte nötig, pg_cancel_backend wird nicht verwendet, und die Verbindung bleibt bestehen. Der Server antwortet mit canceling statement due to user request (57014), was nicht als Fehlschlag dargestellt wird. Ein Unterschied zu MySQL: Lief die angehaltene Anweisung in einer Transaktion, gilt die Transaktion für PostgreSQL als gescheitert, und bis zu einem ROLLBACK nimmt es nichts mehr an.
ClickHouse
Mit ClickHouse schickt Calíope KILL QUERY … SYNC in einer eigenen Anfrage, mit der Kennung der Abfrage, und die Abfrage verlässt den Server. Während sie läuft, siehst du neben Anhalten, was gelesen wurde —Zeilen und Bytes, und den Prozentsatz, wenn der Server die Gesamtzahl kennt—, alle Viertelsekunde aus system.processes gelesen; dieselbe Zahl erscheint im Aktivitätszentrum, dessen Anhalten sie ebenfalls stoppt. Eine ClickHouse-Abfrage bricht nicht von selbst nach 30 Sekunden ab: Das Limit des Servers (max_execution_time) oder Anhalten beendet sie.
Oracle
Mit Oracle läuft es über dieselbe Verbindung: Calíope sendet die Unterbrechung des Protokolls selbst, und der Server bricht die Anweisung mit ORA-01013 ab, was nicht als Fehler angezeigt wird. Die Verbindung bleibt bestehen und geht zurück in den Pool; weder Rechte noch ALTER SYSTEM CANCEL SQL sind nötig. Gemessen am Testserver: Ein kartesisches Produkt von all_objects stoppte in weniger als einer Sekunde nach Anhalten. Während sie läuft, gibt es keine Fortschrittsangabe: Oracle liefert sie nicht für jede Abfrage.
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 › Formatieren (⇧⌘F)
Der Button Formatieren (oder das Tastenkürzel ⇧⌘F) formatiert das SQL im Editor neu: korrekte Einrückung und Zeilenumbrüche bei Klauseln. Praktisch, um kompakte oder automatisch generierte Skripte zu lesen. Schlüsselwörter werden nur mit Keywords beim Formatieren in Großbuchstaben umwandeln in den Einstellungen großgeschrieben, und das ist standardmäßig aus; sonst bleiben sie, wie du sie geschrieben hast. Und auch dann setzt er nur in Großbuchstaben, was kein Name sein kann – die reservierten Wörter der Engine der Sitzung, die Wörter, die die Abfrage gliedern, Typen und Funktionen mit ihrer Klammer: Eine Spalte namens name, status oder path bleibt so, wie du sie geschrieben hast.
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 Statements, die Daten oder Struktur ändern. Standardmäßig aktiv.
Wo es zu finden ist: SQL-Editor › Safe Mode
Der Safe Mode ist auf macOS, iPad, iPhone und Apple Vision Pro standardmäßig aktiviert. Ist er aktiv, führt Calíope kein Statement aus, das ALTER, CREATE, DELETE, DROP, GRANT, TRUNCATE, UPDATE, REPLACE oder RENAME enthält: Es hält an, bevor irgendetwas an den Server geht, und sagt dir, welches Wort es gefunden hat. Es gibt keine Bestätigung zum Akzeptieren; um es auszuführen, schaltest du den Safe Mode aus.
Er sucht das Wort, nicht das, was das Statement tut: Ein UPDATE mit WHERE wird genauso blockiert wie eines ohne. Führst du ein Skript aus und ein Statement darin enthält ein blockiertes Wort, läuft nichts von dem Skript.
Er gilt für das, was du im Editor-Tab schreibst: Ausführen, das Panel Terminal und den SQL Player. Was Calíope selbst erzeugt, etwa das DELETE für eine Zeile, die du in den Ergebnissen löschst, läuft nicht über ihn. Im Player sind die Statements vor dem blockierten schon gelaufen; er hält dort an.
Nutz den Schalter Safe Mode (Schloss-Symbol) in der Toolbar des SQL-Editors, um ihn ein- oder auszuschalten. Der Zustand wird pro Verbindungsprofil und darin pro Editor-Tab 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.
Mit einem Umgebungsetikett: Der Safe Mode ändert sich nicht und kommt zuerst; was er blockiert, erreicht weder die Frage noch die Ablehnung des Etiketts. Das Thema „Schutzstufen“ erklärt es.
BEGIN, COMMIT und ROLLBACK über das Menü Transaktion, mit einer für den Tab reservierten Verbindung.
Wo es zu finden ist: SQL-Editor › Menü Transaktion
Das Menü Transaktion in der Leiste des SQL-Editors öffnet und schließt eine Transaktion über mehrere Ausführungen: BEGIN öffnet sie, COMMIT bestätigt die Änderungen und ROLLBACK macht sie rückgängig. COMMIT und ROLLBACK fragen vor der Ausführung nach.
Solange sie offen ist, arbeitet der Tab auf einer für ihn reservierten Verbindung: Alles, was du dort ausführst, gehört zur Transaktion, und die anderen Tabs und Werkzeuge, die andere Verbindungen nutzen, sehen deine Änderungen erst nach dem COMMIT. Die Ergebnisleiste zeigt das mit dem grünen Label Aktive Transaktion. Den Tab zu schließen oder die Sitzung zu trennen, während die Transaktion offen ist, rollt sie zurück.
Endet die Transaktion ohne das Menü — ein COMMIT oder ROLLBACK in deinem SQL oder ein Fehler, bei dem der Server sie zurückrollt —, erlischt das Label, und die Statusleiste sagt es dir: Was du danach ausführst, wird sofort festgeschrieben. Jede Engine erhält ihre eigene Form von BEGIN, und drückst du COMMIT auf einer Transaktion, die der Server schon als fehlgeschlagen markiert hat, sagt dir Calíope, dass nichts gespeichert wurde.
MySQL und MariaDB setzen InnoDB als Tabellen-Engine voraus, um Transaktionen vollständig zu unterstützen.
ClickHouse
Mit ClickHouse wird das Menü Transaktion nicht gezeichnet: Die Engine hat keine Transaktionen. Jede Anweisung wird für sich bestätigt, und ein UPDATE oder DELETE wird als Mutation eingereiht, die der Server im Hintergrund anwendet: Die Statusleiste sagt, dass sie eingereiht wurde, und das Werkzeug Prozesse verfolgt sie.
Oracle
Bei Oracle gibt es kein Autocommit auf dem Server: Calíope entscheidet es. Außerhalb einer Transaktion aus dem Menü wird jedes Statement beim Ausführen bestätigt; mit BEGIN behält der Tab seine Verbindung, und nichts wird vor COMMIT oder ROLLBACK bestätigt. Ein Definitions-Statement (CREATE, ALTER, DROP) bestätigt Ausstehendes von selbst: Hattest du schon etwas geändert, erlischt das Etikett. Ein SELECT öffnet nichts, daher besteht die Transaktion nach BEGIN und einer Abfrage weiter.
Mit einem Umgebungsetikett: BEGIN, COMMIT und ROLLBACK schreiben nicht, also fragt das Etikett weder nach ihnen noch lehnt es sie ab; bei einem, das Schreibzugriffe bestätigt, trägt die Bestätigung von COMMIT und ROLLBACK seinen Namen im Titel.
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. Und alle Verbindungen zusammen haben eine Obergrenze von 2 MB: Wird sie überschritten, wird beim nächsten Laden der Verbindungsliste der ganze Verlauf der am längsten nicht genutzten Verbindungen gelöscht — nie der der jüngsten. Der Verlauf einer Verbindung, die auf einem anderen Gerät gelöscht oder durch eine Wiederherstellung entfernt wurde, wird beim selben Laden aufgeräumt.
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 fragt den Server nach dem Plan, ohne die Abfrage auszuführen —EXPLAIN FORMAT=JSON bei MySQL und MariaDB, EXPLAIN (FORMAT JSON) bei PostgreSQL, SET SHOWPLAN_XML bei SQL Server, EXPLAIN PLAN json = 1 bei ClickHouse, EXPLAIN PLAN FOR bei Oracle— 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. 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.
Mit SQL Server muss ein CREATE PROCEDURE, FUNCTION, TRIGGER oder VIEW die erste Anweisung dessen sein, was gesendet wird, und sein Rumpf enthält ;: Schreib es mit dem Trennzeichen $$ oder führe es allein aus. Der Editor teilt nicht an GO-Zeilen: Das ist das Batch-Trennzeichen von sqlcmd und von Sicherungsskripten, das die Wiederherstellung sehr wohl versteht.
Oracle
Bei Oracle trennt das ; innerhalb eines PL/SQL-Blocks nicht: Ein DECLARE oder BEGIN oder der Rumpf eines CREATE PROCEDURE, FUNCTION, PACKAGE, TRIGGER oder TYPE geht als Ganzes bis zu einer Zeile, die nur / enthält, wie in SQL*Plus, und erreicht den Server mit seinem END;. Außerhalb eines Blocks wird an ; getrennt, und der Server erhält jedes Statement ohne es.
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 ihre Daten, bis zu 10.000 Zeilen).
Das Ergebnis öffnet sich in einem neuen Tab des SQL-Editors, als Text 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 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, iPhone und Apple Vision Pro.
Mit einem Umgebungsetikett: Die verknüpfte Datenbank schützt das Etikett ihres eigenen Profils, nicht das dieses Tabs. Bestätigt es Schreibzugriffe, fragt es in diesem Fenster; ist es schreibgeschützt, wird ihr nichts Schreibendes geschickt.
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, iPhone und Apple Vision Pro.
Mit einem Umgebungsetikett: Jeden Server schützt das Etikett seines Profils. Schreibt die Abfrage, fragt jeder oder lehnt sie ab, je nach seiner Stufe.
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 einer Zelle, formatiert nach Typ: JSON, Bild, SQL oder Text.
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 Wert und einem Kopieren-Button im unteren Bereich. Ein Doppelklick öffnet denselben Viewer als großes Sheet, mit Kopieren und Schließen unten: Ein Bild oder ein langes JSON passt dort besser hinein.
iPad: Tipp auf eine beliebige Zelle. Ein Sheet mit dem vollständigen Wert und einem Kopieren-Button in der oberen Leiste öffnet sich. Doppeltippen bleibt UPDATE generieren….
Der Viewer zeigt den Wert nach seinem Typ. Er erkennt ihn selbst: JSON wird neu eingerückt und eingefärbt —Schlüssel, Zeichenketten, Zahlen und Literale in verschiedenen Farben—; ein BLOB mit einem Bild wird als Bild gezeichnet, mit Zoom; Text, der mit einer Anweisung beginnt (SELECT, INSERT, WITH…), wird als SQL hervorgehoben; der Rest erscheint als Text. Binärdaten, die kein Bild sind, werden als Hex gezeigt. Lässt der Wert mehr als eine Ansicht zu, kannst du sie oben mit einer Auswahl wechseln: etwa ein JSON als Text sehen, genau so, wie es gespeichert wurde.
Kopieren kopiert immer den ursprünglichen Wert, nie den neu eingerückten.
Überall zeigt der Viewer 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.
ClickHouse
Mit ClickHouse sagt die Kopfzeile einer Datums- und Uhrzeitspalte, wessen Uhr es ist: die Zeitzone des Typs, oder die des Servers, wenn der Typ keine hat. Eine Textzelle, die der Server bereinigt hat —Bytes, die kein UTF-8 waren, ersetzt durch �—, trägt ein Dreieck und sagt es beim Darüberfahren und in VoiceOver; sie zu kopieren oder aus ihr ein UPDATE zu erzeugen, gibt den gespeicherten Wert nicht wieder. Eine Spalte mit Aggregatzustand (AggregateFunction, was sumState liefert) wird nicht angezeigt: Die Zelle sagt es, und finalizeAggregation(col) oder sumMerge(col) in der Abfrage liefern den Wert. Array, Tuple und Map werden als kompaktes JSON gezeigt.
Oracle
Mit Oracle wird ein CLOB, NCLOB oder BLOB bis 16 MB vollständig gelesen. Ein größerer wird nicht halb angezeigt, als wäre er der Wert: Die Zelle nennt seine Größe und wie weit gelesen wurde —„CLOB mit 20.971.520 Zeichen (gekürzt auf 8.388.608 Zeichen)“—, und bei einem BLOB zeigt der Betrachter nur das Gelesene. Was Calíope nicht dekodiert —Objekte, XMLTYPE, binäres JSON, VECTOR, BFILE, Cursor— nennt seinen Typ in der Zelle, statt leer zu bleiben.
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…
Klicke mit der rechten Maustaste (macOS) oder halte (iPad und Apple Vision Pro) eine beliebige Ergebniszelle gedrückt und wähle Wert erweitert bearbeiten…, um sie im erweiterten Zelleditor zu öffnen. Calíope wählt die Darstellung nach dem Wert: JSON öffnet sich mit den Tabs Text (mit JSON formatieren) und Baum; Binärdaten mit Hex, Base64 und Bild; eine Geometrie oder ein Text in einem bearbeitbaren Feld.
Wenn du auf OK tippst, wird der bearbeitete Wert unter macOS in die Zwischenablage kopiert; auf iPad und Apple Vision Pro öffnet sich UPDATE generieren mit diesem Wert bereits eingetragen, damit du die Anweisung vor dem Ausführen prüfen kannst.
Mit einem schreibgeschützten Umgebungsetikett wird das Bearbeiten nicht angeboten: Auf dem Mac zeigt und kopiert der Editor nur, und außerhalb des Mac erscheint Wert erweitert bearbeiten… nicht. Bei einem, das Schreibzugriffe bestätigt, fragt das Ausführen des UPDATE oder das Löschen der Zeile vorher.
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 der Anweisung erkannt, die das Ergebnis erzeugt hat — bei einem Skript mit mehreren Anweisungen die letzte. Bearbeite sie bei Bedarf (⚠ erscheint, wenn sie nicht erkannt wurde).
- WHERE-Spalten — die Spalten, die die Zeile identifizieren. Calíope fragt den Server nach dem Primärschlüssel der Tabelle und hakt diese Spalten an, auch bei einem zusammengesetzten Schlüssel. Deklariert die Tabelle keinen Schlüssel oder enthält das Ergebnis ihn nicht vollständig, wird eine Spalte nach ihrem Namen vorgeschlagen (id, dann *_id), und das steht unter der Liste, damit du das WHERE prüfst. Spalten lassen sich an- und abhaken.
- WHERE-Wert — zeigt den aktuellen Wert jeder angehakten Spalte in der Zeile. Ist einer 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 der Anweisung erkannt, die das Ergebnis erzeugt hat. Ist der Name falsch (z. B. bei JOINs oder Aliassen), gib ihn manuell im Format datenbank.tabelle ein.
- WHERE-Klausel — die Spalten, die die Zeile identifizieren. Calíope fragt den Server nach dem Primärschlüssel der Tabelle und hakt diese Spalten an, auch bei einem zusammengesetzten Schlüssel; geht das nicht, wird eine Spalte nach ihrem Namen vorgeschlagen, und das steht unter der Liste. Hak alle ab, 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.
Apple Vision Pro: Wähl die Zeile über ihre Nummer aus und drück Löschen (den Papierkorb), oder sieh eine Zelle an und halte Daumen und Zeigefinger zusammen, um dasselbe Menü zu öffnen.
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 zu den Funktionen des Motors der Sitzung, und jeder Motor hat seine eigenen Einträge: MySQL und Aurora die von MySQL; MariaDB die eigenen und, für das mit MySQL Gemeinsame, die von MySQL; PostgreSQL, SQL Server, Oracle, ClickHouse, SQLite und DuckDB jeweils die eigenen. Ein Name, den es in zwei Motoren 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, gibt es diese Funktion im verbundenen Motor nicht.
Hervorhebung und Autovervollständigung folgen derselben Regel: Sie färben und schlagen die Schlüsselwörter und Funktionen des Motors der Sitzung vor, nicht die eines anderen.
ClickHouse. Fast alle seine Funktionen unterscheiden Groß- und Kleinschreibung: sumIf gibt es, SUMIF nicht. Die Autovervollständigung schlägt sie so geschrieben vor, wie der Server sie erwartet, und Formatieren setzt sie nicht in Großbuchstaben.
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
Seit welcher Version. Gibt es eine Funktion in der ältesten Version ihres Motors, die Calíope unterstützt, noch nicht, sagt der Eintrag das unter dem Rückgabetyp, mit der Version, die sie eingeführt hat: Seit PostgreSQL 16.
SQLite-Editor und DuckDB-Editor. Ihr Bereich SQL ausführen zeigt die Einträge ihres Motors wie der SQL-Editor: Popover auf macOS, Leiste auf dem iPad.
MongoDB. Im Werkzeug Abfrage haben auch die Operatoren von Filter und Pipeline ($match, $gt, $dateTrunc, $rank…) einen Eintrag: auf macOS beim Überfahren mit dem Zeiger, auf dem iPad in der Leiste, die erscheint, wenn der Textcursor auf dem Operator steht.
Apple Vision Pro: Die Karte sitzt nicht unter der Symbolleiste des Editors: Sie hängt unter dem Fenster in einem Ornament, direkt über der Editor-Leiste, die ebenfalls dort hängt.
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.
Mit einem Umgebungsetikett, das Schreibzugriffe bestätigt, trägt diese Bestätigung seinen Namen im Titel und ist die einzige Frage; bei einem schreibgeschützten läuft nichts, wenn das Skript schreibt.
Stichwörter: skript ausführen, run all, ⌘⇧Return, alle statements, ganzes skript, mehrere queries
Ergebnisse kommen in Seiten der Größe, die du wählst: 50 Zeilen, solange du nichts änderst.
Wo es zu finden ist: SQL-Editor › Ergebnisraster
Die Ergebnisse kommen in Seiten zu 50 Zeilen —oder so vielen, wie du wählst, von 20 bis 200, unter Einstellungen › Text-Editor › Ergebnisse › Zeilen pro Seite; auf dem iPad unter Einstellungen—, mit ihrer Leiste unten —zurück, weiter und Seitenanzeige—, die nur erscheint, wenn die Abfrage mehr als eine Seite geliefert hat. Unter macOS kannst du 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, iPhone und Apple Vision Pro ist die Leiste unten dieselbe.
Überall 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, ↑ ganz am Anfang des Editors und ↓ ganz am Ende des Textes.
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, iPhone und Apple Vision Pro. 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 Prompt der Engine (mysql>, mariadb>, postgres=#…) 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".
- Hinterlässt der Server Warnungen (MySQL, MariaDB und PostgreSQL), folgen sie darunter: „N Serverwarnungen“ und eine pro Zeile, als „Stufe (Code): Text“.
- Fehler werden rot mit der Meldung des Servers angezeigt.
- Mit eingeschaltetem Safe Mode im Editor-Tab verweigert das Terminal dieselben Statements wie der Editor und sagt, welches Wort es gefunden hat; nichts erreicht den Server.
Terminal-Verlauf durchblättern:
- macOS: Nutz ↑ / ↓ im Eingabefeld, um die vorherigen Queries des Terminals durchzugehen.
- iPad, iPhone und Apple Vision Pro: Nutz die Buttons ▲ / ▼ links vom Eingabefeld.
Leeren: Der Papierkorb-Button löscht die Ausgabe des Terminals. Er sitzt im Header, auf Apple Vision Pro neben dem Button ↵.
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.
Verfügbar auf macOS, iPad, iPhone und Apple Vision Pro.
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.
Verfügbar auf macOS, iPad, iPhone und Apple Vision Pro.
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 iPad, iPhone und Apple Vision Pro 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 die Schlüsselwörter der Engine der Sitzung (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 den Bezeichner-Anführungszeichen deiner Engine gefolgt von einem Punkt tippst, zeigt der Editor automatisch die Tabellen dieser Datenbank zur direkten Auswahl an: `meine_db`. in MySQL und MariaDB, "mein_schema". in PostgreSQL, und in SQL Server die Datenbank mit ihrem Schema, [meine_db].[dbo].. Wenn du weitertippst, wird die Liste kürzer und behält nur die Namen, die das Getippte enthalten.
Was du im Popup auswählst, wird genauso zitiert eingefügt, mit dem Anführungszeichen der Engine der Sitzung: Backticks, doppelte Anführungszeichen oder eckige Klammern.
Verfügbar auf macOS, iPad, iPhone und Apple Vision Pro. 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.
Verfügbar auf macOS, iPad, iPhone und Apple Vision Pro.
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 (am Fuß des Werkzeug-Navigators; auf Apple Vision Pro im linken Ornament). 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.
Verfügbar auf macOS, iPad, iPhone und Apple Vision Pro.
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 der Server 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, iPhone und Apple Vision Pro.
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 → Text-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 → Text-Editor → Automatischer Zeilenumbruch.
- iPad:Einstellungen der App → dieselbe Option.
Mit eingeschalteter iCloud-Synchronisierung reist die Einstellung zu deinen anderen Geräten; ohne sie behält jedes Gerät seine eigene.
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).
Verfügbar auf macOS, iPad, iPhone und Apple Vision Pro.
Ein Doppelklick auf ein Wort, und der Editor hebt alle seine Vorkommen im Text hervor.
Wo es zu finden ist: SQL-Editor › Text-Editor
Doppelklick 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.
Verfügbar unter macOS, iPad, iPhone und Apple Vision Pro.
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. Mit einer Tastatur fügen ⌥⌘↓ / ⌥⌘↑ einen in der Zeile darunter oder darüber hinzu, wie auf dem Mac.
Überall 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.
Verfügbar unter macOS, iPad, iPhone und Apple Vision Pro.
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, iPhone und Apple Vision Pro.
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, iPhone und Apple Vision Pro.
Apple Vision Pro: Die Karte sitzt nicht unter der Symbolleiste des Editors: Sie hängt unter dem Fenster in einem Ornament, direkt über der Editor-Leiste, die ebenfalls dort hängt.
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.
Verfügbar auf macOS, iPad, iPhone und Apple Vision Pro.
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 eine Tabelle oder auf das + daneben, um sie hinzuzufügen (du kannst sie auch auf das Canvas ziehen).
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 den SQL-Editor zu bringen: auf dem Mac in einem neuen Tab; auf iPad, iPhone und Apple Vision Pro kommt der Editor nach vorn, mit dem SQL anstelle dessen, was darin stand.
Canvas-Optionen
Steuerung
Beschreibung
JOIN-Typ
Wechselt zwischen INNER, LEFT und RIGHT für alle JOINs auf dem Canvas
Alias
Klick auf das blaue Alias neben dem Tabellennamen, um es umzubenennen; Return bestätigt
Alle / keine auswählen
Am Fuß jeder Karte
Canvas leeren
Entfernt alle Tabellen vom Canvas
Datenbank
Das Menü oben wechselt die Datenbank. Mit Tabellen auf dem Canvas fragt es vorher, weil das Canvas verworfen wird
Kopieren
Neben In Editor einfügen, kopiert das generierte SQL
Hinweise
- Die JOINs kommen aus den Fremdschlüsseln, die der Server für jede Tabelle deklariert. Wo es keinen gibt, kommt die Tabelle als CROSS JOIN mit einem Kommentar hinein, und du passt sie im Editor an.
- Das generierte SQL ist ein Ausgangspunkt; du kannst es nach dem Einfügen frei bearbeiten.
Verfügbar auf macOS, iPad, iPhone und Apple Vision Pro.
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: Tipp 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.
SQL Server
In SQL Server zeigt das Panel auch die anderen Schemas derselben Datenbank, jedes als eigenen Knoten: Ein Fremdschlüssel kann von einem Schema ins andere gehen (rrhh.empleados → dbo.clientes), und der JOIN entsteht genauso. Jede Tabelle wird mit ihrem Schema davor geschrieben ([rrhh].[empleados]), und eine Tabelle aus einem anderen als dem aktiven Schema trägt auf der Karte ihren vollen Namen.
Apple Vision Pro: Eine Tabelle ziehst du auf die Arbeitsfläche, indem du ihr + mit Daumen und Zeigefinger fasst und bewegst.
Miniaturansicht des gesamten Skripts mit Anzeige der aktuellen Position.
Wo es zu finden ist: SQL-Editor › Einstellungen → Text-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 → Text-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). Eine lange Zeile, die der Zeilenumbruch auf mehrere Reihen verteilt, erscheint als ein einziger Balken. 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 bei der Standardschriftgröße; sie wächst mit der Schrift.
- iPad: 64 pt breit bei der Standardgröße, und sie wächst ebenfalls mit der Schrift. Der Textbereich passt sich automatisch an, um nicht verdeckt zu werden.
Verfügbar auf macOS, iPad, iPhone und Apple Vision Pro.
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
Verfügbar auf macOS, iPad, iPhone und Apple Vision Pro.
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, iPhone und Apple Vision Pro, 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 › Allgemein → 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 › Allgemein › 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 zum manuellen Backup.
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 › Allgemein → 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 › Allgemein › 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 Zelleditor ist ein modales Blatt für Werte, die nicht bequem in das Raster passen: lange Texte (TEXT, MEDIUMTEXT, LONGTEXT), JSON-Dokumente, Binärinhalte (BLOB, VARBINARY), Geometrien in WKT und Zeichenketten mit Zeilenumbrüchen.
So öffnest du ihn
- macOS: Klicke mit der rechten Maustaste auf die Zelle und wähle Wert erweitert bearbeiten….
- iPad und Apple Vision Pro: Halte die Zelle gedrückt und wähle Wert erweitert bearbeiten… im Kontextmenü.
Eine NULL-Zelle öffnet ihn nicht: Es gibt keinen Wert zu bearbeiten.
Was er zeigt, je nach Wert
- JSON — zwei Tabs: Text, mit Hervorhebung und der Schaltfläche JSON formatieren, und Baum, der Objekte und Listen aufklappt. Ist der Text kein gültiges JSON mehr, sagt es der Baum.
- Binär — drei Tabs. Hex zeigt den Inhalt hexadezimal (Paare in Großbuchstaben, 16 Bytes pro Zeile) und akzeptiert beim Einfügen Leerzeichen, Zeilenumbrüche und ein optionales Präfix 0x. Base64 zeigt ihn in Standard-Base64 (RFC 4648) und akzeptiert beim Einfügen Leerzeichen. Beide tragen die Schaltflächen Formatieren (rückt gültige Bytes neu ein), Einfügen (liest aus der Zwischenablage) und Zurücksetzen (stellt den ursprünglichen Wert wieder her) sowie ein Abzeichen mit der Größe in Bytes; lässt sich die Eingabe nicht dekodieren, zeigt ein roter Hinweis das an und die Schaltfläche OK wird deaktiviert.
- 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 du getippt hast, und Ziehen verschiebt es, ohne dass es sich vom Rand löst.
- Geometrie — das WKT in einem bearbeitbaren Feld, mit einem Hinweis zum Format.
- Text — ein Feld zur Bearbeitung von reinem Text.
OK und Abbrechen
- OK kopiert unter macOS den bearbeiteten Wert in die Zwischenablage. Auf iPad und Apple Vision Pro öffnet es UPDATE generieren mit dem Wert bereits als neuem Wert eingetragen: Dort prüfst du die Anweisung, und sie läuft erst, wenn du auf Ausführen tippst.
- Abbrechen schließt, ohne die Zeile zu ändern. Hast du auf dem iPad den Wert geändert, schließt sich das Blatt nicht durch Wischen nach unten, damit das Geschriebene nicht verloren geht.
Bytes, die kein Text sind
Der Editor übergibt die Bytes als UTF-8-Zeichenkette. Bytes, die kein gültiges UTF-8 bilden (zum Beispiel reines 0xDEADBEEF), werden durch das Ersatzzeichen ersetzt; baue in diesen Fällen das UPDATE lieber von Hand 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 räumliche Spalten gelesen und gezeichnet werden und wie man sie ohne handgeschriebenes SQL bearbeitet.
Wo es zu finden ist: SQL-Editor › Karte
Eine räumliche Spalte — POINT, LINESTRING, POLYGON und ihre Mehrfachvarianten — erscheint nicht mehr als eine Handvoll Bytes: Calíope zeigt sie im Raster als WKT-Text und zeichnet sie auf einer Karte.
MySQLMariaDBAurora
In MySQL und MariaDB ist das eine GEOMETRY-Spalte oder einer ihrer Untertypen, und der Text ist genau der, den ST_AsText schreiben würde.
PostgreSQL
In PostgreSQL ist das eine PostGIS-Spalte vom Typ geometry oder geography, und der Text ist der, den ST_AsText schreibt. Kurven und Koordinaten mit Z oder M werden nicht gelesen: Die Zelle behält ihre Bytes.
SQL Server
In SQL Server ist das eine Spalte vom Typ geography oder geometry, und der Text ist der, den STAsText() schreibt. Kurven (CIRCULARSTRING, COMPOUNDCURVE, CURVEPOLYGON), FULLGLOBE und Koordinaten mit Z oder M werden nicht gelesen: Die Zelle behält ihre Bytes.
Oracle
In Oracle ist eine SDO_GEOMETRY-Spalte ein Objekttyp, den Calíope nicht dekodiert: Die Zelle sagt es, und es gibt keine Karte. Um ihre Koordinaten zu lesen, fordere den Text beim Server mit SDO_UTIL.TO_WKTGEOMETRY(spalte) an.
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. Zieh 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 du eine loslässt, setzt Calíope die UPDATE-Anweisung zusammen und zeigt sie, bevor sie ausgeführt wird — es wird nichts geschrieben, bis du auf Anwenden drückst, 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ählst du 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
Siehst du statt der Modusauswahl ein Schloss, ist die Karte schreibgeschützt. Es gibt zwei Fälle, und der Grund erscheint auf dem Mac beim Zeigen mit der Maus, auf iPad, iPhone und Apple Vision Pro beim Tippen auf das Schloss: Aus der Abfrage geht nicht hervor, in welche Tabelle geschrieben würde — ein JOIN, eine View, 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. PostGIS und SQL Server schreiben immer die Länge zuerst, unabhängig vom SRID. 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.
Der SQL-Editor hat sein eigenes Schema-Panel auf der rechten Seite des Tabs: derselbe Baum, den die anderen Werkzeuge zeichnen, direkt neben dem Editor angedockt, damit du den Tab nicht verlassen musst, um einen Tabellennamen nachzuschlagen.
Ein- und ausblenden. Die erste Schaltfläche in der Editorleiste — Schema-Panel ein- oder ausblenden — schaltet das Panel um und bleibt golden, solange es geöffnet ist. Die Kopfzeile des Panels wiederholt sie rechts. Calíope merkt sich die Wahl, sodass das Panel so zurückkommt, wie du es verlassen hast. Auf dem iPhone öffnet sich das Panel als Blatt über dem Editor und ist jedes Mal zunächst geschlossen.
Die Kopfzeile trägt den Titel Schema und eine Schaltfläche DDL-Verlauf, die das Protokoll der DDL-Anweisungen öffnet, die Calíope für dich ausgeführt hat.
Was der Baum hier tut. Klick auf eine Tabelle oder eine View, und Calíope schreibt ein SELECT * FROM dafür und führt es in dem Tab aus, in dem du bist. Klick auf eine Datenbank, um sie zur aktiven zu machen — das, was ein USE tut. Sein Kontextmenü fügt drei Einträge hinzu, die es nur im Editor gibt: SELECT * FROM, Daten importieren… und WHERE erstellen….
Das Panel wird nur gezeichnet, solange der Tab mit einem Server verbunden ist.
ClickHouse
Mit ClickHouse gruppiert der Baum jede Datenbank in Tabellen, Views, Materialisierte Views und Wörterbücher.
Oracle
Mit Oracle listet der Baum Schemas, und jedes gruppiert seine Objekte in Tabellen, Views –mit den materialisierten–, Routinen –mit den Paketen–, Trigger und Sequenzen. Ein Klick auf ein Schema macht es ohne USE, das Oracle nicht hat, zum aktiven: Der Editor löst unqualifizierte Namen darin auf. Eine Sequenz öffnet keine Daten und hat kein SELECT * FROM in ihrem Menü.
Mit einer Engine, die während der Ausführung meldet, was sie gelesen hat, zeigt der Editor gelesene Zeilen und Bytes unter seiner Leiste.
Wo es zu finden ist: Workspace › Werkzeuge › SQL-Editor
Während eine Anweisung läuft, kann der SQL-Editor zeigen, wie weit sie ist: unter der Editorleiste, neben der Schaltfläche zum Anhalten, eine Zeile mit den bisher gelesenen Zeilen und Bytes und dem Prozentsatz, wenn der Server die Gesamtzahl kennt. Die Zeile wird während der Abfrage aktualisiert und verschwindet am Ende.
Sie erscheint nur mit einer Engine, die den Fortschritt während der Ausführung meldet. Bei den anderen wird die Zeile nicht gezeichnet, und der Editor wartet einfach auf das Ergebnis.
ClickHouse
Mit ClickHouse wird die Zahl aus system.processes gelesen, und dieselbe Zahl erscheint im Aktivitätszentrum.
Außerhalb des Mac setzen ein Tastaturbefehl und eine Aktion im Bearbeiten-Menü das Wort oder die Auswahl in die Anführungszeichen, die die verbundene Engine für Namen verwendet.
Wo es zu finden ist: Workspace › Werkzeuge › SQL-Editor
Außerhalb des Mac hat der SQL-Editor eine Aktion, die das Wort unter dem Cursor oder den markierten Text in die Bezeichner-Anführungszeichen der verbundenen Engine setzt, damit ein Name mit Leerzeichen oder ein reserviertes Wort so verwendet werden kann.
- Mit einer Hardwaretastatur: ⌃⇧B. Halte ⌘ gedrückt, um sie in der Liste als „Bezeichner-Anführungszeichen einfügen“ zu sehen.
- Ohne Tastatur: Halte den Text gedrückt und wähle „Bezeichner-Anführungszeichen einfügen“ im Menü.
Die Schaltflächen A− und A+ in der Editorleiste und in der Ergebnisleiste ändern jede Größe für sich; man kann auch zusammenziehen.
Wo es zu finden ist: Workspace › Werkzeuge › SQL-Editor
Der SQL-Text und das Ergebnisraster haben getrennte Größen. Die Schaltflächen A− und A+ in der Editorleiste ändern die Größe des SQL, die in der Ergebnisleiste die des Rasters. Jede Größe bleibt zwischen einem Minimum und einem Maximum, und Calíope merkt sie sich für das nächste Mal.
Du kannst auch auf dem Editor oder dem Raster mit zwei Fingern zusammenziehen oder spreizen —auf dem Trackpad oder auf dem Bildschirm—, um diese Größe zu ändern.
Auf dem Mac druckt ⌘P bei vorne liegendem SQL-Editor das Ergebnisraster bis zu einer Zeilenobergrenze und nennt, wie viele weggelassen wurden.
Wo es zu finden ist: Tastaturkürzel: ⌘P
Auf dem Mac, mit dem SQL-Editor vorne und einem Ergebnis auf dem Bildschirm, druckt ⌘P das Ergebnisraster: die Spaltenköpfe und die Zeilen, bis zu einer Obergrenze. Hat das Ergebnis mehr Zeilen, endet der Ausdruck mit der Angabe, wie viele weggelassen wurden; um alle zu behalten, exportiere das Ergebnis.
Das Drucken des Ergebnisses ist eine Funktion des Mac.
⌘Z macht die zuletzt bearbeitete Zelle oder die zuletzt gelöschte Zeile im Raster des SQL-Editors rückgängig, und ⇧⌘Z stellt sie wieder her.
Wo es zu finden ist: Tastaturkürzel: ⌘Z
Wenn du im Ergebnisraster des SQL-Editors eine Zelle bearbeitest oder eine Zeile löschst, schreibt Calíope die Änderung auf den Server und behält die Anweisung, die sie umkehrt. ⌘Z macht die letzte Änderung rückgängig —sie schreibt den alten Wert zurück oder fügt die gelöschte Zeile wieder ein— und ⇧⌘Z stellt sie wieder her.
Rückgängig gemacht wird nur, was sich identifizieren lässt: Die Zeile muss aus einer Tabelle stammen und deren Primärschlüssel enthalten. Sonst bleibt die Änderung, und Calíope sagt, warum sie sie nicht rückgängig machen kann:
- „Rückgängig nicht möglich: Die Abfrage sagt nicht, aus welcher Tabelle die Zeile stammt.“
- „Rückgängig nicht möglich: Dieses Ergebnis enthält nicht den Primärschlüssel der Tabelle.“
- „Rückgängig nicht möglich: Der Schlüssel dieser Zeile ist NULL und benennt damit keine einzelne Zeile.“
Tabellen, Aliasse, markierte Spalten, Bedingungen und SQL des Abfrage-Builders sind noch da, wenn du von einem anderen Werkzeug zurückkommst.
Wo es zu finden ist: Workspace › Werkzeuge › Query Builder
Die Tabellen auf der Arbeitsfläche des Abfrage-Builders, ihre Aliasse, die markierten Spalten, die Bedingungen und das erzeugte SQL sind noch da, wenn du von einem anderen Werkzeug zurückkommst: Sie gehören zum Arbeitsbereich, nicht zur Ansicht. Verworfen werden sie, wenn du den Tab des Builders oder die Sitzung schließt.
Der Wechsel zu einer anderen Datenbank leert die Arbeitsfläche ebenfalls, und wenn sie Tabellen enthält, fragt Calíope vorher.
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.
ClickHouse
Mit ClickHouse gibt es kein SHOW PROFILE: Profilen führt die Abfrage aus und liest ihre Zeile in system.query_log, die die Phasen der Vorbereitung und die Ausführung mit ihrer Dauer enthält. Ist das Abfrageprotokoll für dein Konto ausgeschaltet, sagt es das.
Oracle
Mit Oracle gibt es kein Profilen: Sein Gegenstück, SQL Trace, schreibt Dateien auf die Platte des Servers, die die App nicht liest. Den Abfrageplan liefert 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.
ClickHouse
Mit ClickHouse schlägt er kein CREATE INDEX vor. Läuft der Filter über eine Spalte außerhalb des Sortierschlüssels, schlägt er einen Skip-Index vor —ALTER TABLE … ADD INDEX … TYPE minmax, set(100) oder bloom_filter, je nach Spaltentyp, und MATERIALIZE INDEX— und warnt, dass er nur hilft, wenn die Werte entlang des Schlüssels gruppiert sind. Läuft der Filter über den Schlüssel und überspringt keine Granulen, sagt er das und schlägt vor, die Abfrage umzuschreiben oder die Tabelle neu anzulegen, weil sich der Schlüssel nicht ändern lässt. Eine Tabelle aus einer einzigen Granule bekommt keinen Vorschlag, und das wird gesagt.
Oracle
Mit Oracle liest der Berater das Prädikat des Plans, nicht nur die Spalte. Ein LIKE, das mit % oder _ beginnt, kann kein B-Tree-Index auflösen, daher schlägt er kein CREATE INDEX vor und sagt, warum; führt die Spalte bereits einen Index an und wird die Tabelle trotzdem ganz gelesen, nennt er diesen Index, statt einen weiteren vorzuschlagen, und empfiehlt, die Statistiken unter Tabellenwartung zu sammeln. Der vorgeschlagene Index ist ein B-Tree, mit dem Schema davor.
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.
Verfügbar unter macOS, iPad, iPhone und Apple Vision Pro.