Der SQL-Bereich stellt für jedes Projekt eine dedizierte SQLite-Datenbank bereit. Sie können Tabellen, Indizes und Ansichten erstellen, Daten manuell bearbeiten, beliebige Abfragen schreiben und direkt aus Ihrem Workflow auf die Datenbank zugreifen. Es handelt sich um vollwertiges SQLite mit uneingeschränkter Syntax: Alles, was von SQLite unterstützt wird, funktioniert auch hier.
Die SQL-Datenbank wird getrennt von den Tabellen im Bereich Tabellen gespeichert. Änderungen in einem Bereich wirken sich nicht auf den anderen aus.
So öffnen Sie sie
Projekt → Tabellen → Klicken Sie auf SQL rechts neben Tabelle hinzufügen.

Um zur Tabellenliste zurückzukehren, klicken Sie auf den Pfeil in der Seitenkopfzeile.
Der SQL-Bereich ist für Teammitglieder mit der Berechtigung zum Bearbeiten von Tabellen verfügbar. Benutzer mit Nur-Lese-Zugriff können die Datenbankstruktur sehen, aber nicht auf die Daten oder Abfragen zugreifen.
Datenbankstruktur
Der Datenbankbaum wird auf der rechten Seite angezeigt. Er enthält Tabellen mit ihren Spalten und Indizes, gefolgt von Ansichten. Jede Spalte zeigt ihren Datentyp, Primärschlüsselspalten sind mit einem Schlüsselsymbol markiert, und Indizes zeigen das Attribut UNIQUE und ihre zugehörigen Spalten an.

Alle strukturbezogenen Aktionen sind über das Knotenmenü verfügbar: Klicken Sie mit der rechten Maustaste auf einen Knoten, klicken Sie auf das ⋮-Symbol, das beim Überfahren erscheint, oder verwenden Sie die Schaltfläche + über dem Baum.
| Knoten | Aktionen |
|---|---|
| Datenbank | Tabelle erstellen, Ansicht erstellen, aktualisieren, Datenbank herunterladen |
| Tabelle | Öffnen, Spalte hinzufügen, Index hinzufügen, umbenennen, DDL, aktualisieren, löschen |
| Spalte | Umbenennen, löschen |
| Index | DDL, löschen |
| Ansicht | Öffnen, DDL, löschen |

Tabelle erstellen. Geben Sie den Tabellennamen und die Spalten an: Name, Typ, Standardwert, PK und NOT NULL. Sie können einen Datentyp aus den Vorschlägen auswählen oder einen eigenen eingeben. Wenn Sie mehrere Spalten als PK markieren, bilden sie einen zusammengesetzten Primärschlüssel.

DDL zeigt die CREATE-Anweisung des Objekts in der Konsole an. Dies ist nützlich, um seine Struktur zu kopieren oder es in einem anderen Projekt neu zu erstellen.
Die Schaltflächen über dem Baum ermöglichen es Ihnen, Objekte zu erstellen, die Datenbank zu aktualisieren, die Konsole ein- oder auszublenden, das DDL der ausgewählten Tabelle anzuzeigen, die Datenbank herunterzuladen oder die Datenbank zu leeren.

Tabellendaten
Klicken Sie auf eine Tabelle im Datenbankbaum, um ihre Daten zu öffnen. Das Raster funktioniert ähnlich wie ein Blatt im Bereich Tabellen:
- Bearbeiten Sie eine Zelle, indem Sie darauf doppelklicken. Drücken Sie Enter, um zu speichern, oder Esc, um abzubrechen. Der Wert wird sofort in die Datenbank geschrieben.
- Zeilen. Klicken Sie auf +, um eine leere Zeile hinzuzufügen, oder auf −, um ausgewählte Zeilen zu löschen. Klicken Sie auf eine Zeilennummer in der ersten Spalte, um sie auszuwählen. Verwenden Sie Shift oder Cmd/Ctrl, um mehrere Zeilen auszuwählen.
-
NULL-Werte werden als
NULLangezeigt. Das Leeren einer Zelle schreibt eine leere Zeichenfolge in die Datenbank. Um einen NULL-Wert zu schreiben, verwenden Sie eine Abfrage. - WHERE- und ORDER BY-Felder über dem Raster akzeptieren SQL-Bedingungen und Sortierausdrücke. Geben Sie einen Ausdruck ein und drücken Sie Enter. Das ORDER BY-Feld hat Vorrang vor der Sortierung, die über das Spaltenmenü angewendet wird.
- Spaltenmenü (das Symbol in der Spaltenüberschrift): Aufsteigend oder absteigend sortieren oder nach Teilzeichenfolge filtern.
- Daten werden beim Scrollen in Stapeln von 100 Zeilen geladen. Der Zähler auf der rechten Seite zeigt den aktuellen Bereich und die Gesamtzahl der Zeilen.
- Ansichten sind schreibgeschützt.
Konsole

Klicken Sie auf die Schaltfläche </> über dem Datenbankbaum, um die Konsole zu öffnen, die einen Syntax-hervorgehobenen Abfrageeditor und Abfrageergebnisse enthält.
- Führen Sie eine Abfrage mit der Schaltfläche oder Strg+Enter (Cmd+Enter auf dem Mac) aus.
- Sie können mehrere Abfragen ausführen, die durch
;getrennt sind. Das Ergebnis zeigt die Zeilen, die von der letzten Abfrage zurückgegeben wurden, die Daten erzeugt hat, sowie die Gesamtzahl der betroffenen Zeilen. - SQLite-Fehler werden unverändert angezeigt. Bei der Ausführung mehrerer Abfragen wird die Abfragenummer zur Fehlermeldung hinzugefügt:
[2] no such table: .... - Favoriten. Klicken Sie auf Zu Favoriten hinzufügen, um die aktuelle Abfrage unter einem Namen zu speichern. Gespeicherte Abfragen erscheinen als Chips über dem Editor: Klicken Sie auf einen, um die Abfrage zu laden, oder klicken Sie auf das Kreuz, um sie zu löschen. Favoriten werden in Ihrem Browser getrennt für jedes Projekt gespeichert.
- Der Text Ihrer letzten Abfrage wird zwischen Sitzungen beibehalten.
Herunterladen und Leeren der Datenbank
Datenbank herunterladen lädt die gesamte Datenbank als project_<id>_sql.sqlite3 herunter. Sie können sie mit jeder SQLite-kompatiblen Anwendung öffnen, in ein anderes Projekt übertragen oder außerhalb von Mavibot verwenden.
Datenbank leeren löscht alle Tabellen und Daten aus dem SQL-Bereich. Diese Aktion kann nicht rückgängig gemacht werden und erfordert die Eingabe eines Bestätigungsworts. Tabellen im Bereich Tabellen sind nicht betroffen.
Rechnerfunktionen
Zwei Rechnerfunktionen ermöglichen den Zugriff auf die SQL-Datenbank aus Ihrem Workflow. Beide sind in den Editor-Vorschlägen verfügbar und werden vom Assistenten erkannt.
sql(query, params=null, strict=true)
Führt eine Abfrage aus.
| Abfrage | Rückgabewert |
|---|---|
| Abfrage mit einem Ergebnis (SELECT, RETURNING, PRAGMA) | JSON-Liste von Zeilen, wobei jede Zeile als Objekt dargestellt wird: [{"id": 1, "name": "Anna"}, ...]
|
| Abfrage ohne Ergebnis (INSERT, UPDATE, DELETE) | Anzahl der betroffenen Zeilen |
| CREATE, DROP und andere Schemaänderungen | 0 |
| Fehler | Zeichenfolge ERROR: <SQLite-Fehlermeldung>
|
Beispiel:
rows = sql("SELECT name, phone FROM clients WHERE city = ?", [city])
n = sql("UPDATE clients SET status = :s WHERE id = :id", {"s": "vip", "id": client_id})
sql_value(query, params=null, strict=true)
Funktioniert wie sql, gibt aber einen einzelnen Wert zurück: die erste Spalte der ersten Zeile im Ergebnis.
Wenn keine Zeilen vorhanden sind, kein Ergebnis vorliegt oder der Wert NULL ist, wird eine leere Zeichenfolge zurückgegeben.
total = sql_value("SELECT count(*) FROM clients")
name = sql_value("SELECT name FROM clients WHERE id = ?", [client_id])
Parameter
params übergibt Werte getrennt vom Abfragetext an die Abfrage: Verwenden Sie ein JSON-Array für ?-Platzhalter oder ein JSON-Objekt für :name-Platzhalter. Innerhalb von [...] und {...} werden Variablen als einfache Variablennamen geschrieben:
[client_id], nicht [#{client_id}].
Übergeben Sie alle Werte, die Sie von einem Kunden erhalten, über params, wie z. B. seinen Namen, seine Telefonnummer oder seinen Nachrichtentext. Ein Wert, der direkt in den Abfragetext eingefügt wird, könnte die Abfrage selbst verändern.
Strenger Modus
Standardmäßig ist strict=true: Die Funktion akzeptiert genau eine Abfrage und erlaubt keine Kommentare im Abfragetext. Dies verhindert, dass ein Wert aus einer Kundennachricht eine zweite Abfrage anhängt oder den Rest der ursprünglichen Abfrage abschneidet.
Setzen Sie strict=false, um diese Einschränkung zu entfernen, z. B. wenn Sie mehrere durch ; getrennte Abfragen ausführen.
Grenzen
| Grenze | Wert |
|---|---|
| Ausführungszeit für eine einzelne Abfrage oder einen Abfragebatch | 5 Sekunden |
| Zurückgegebene Zeilen | bis zu 1.000; zusätzliche Zeilen werden nicht zurückgegeben |
| Länge des Abfragetexts | 64 KB |
| Datenbankgröße | 200 MB; sobald überschritten, sind nur noch Lesen und Löschen von Daten verfügbar |
Die einzigen verbotenen Befehle sind solche, die auf Ressourcen außerhalb der Projektdatenbank zugreifen: ATTACH mit einem Dateipfad und VACUUM INTO.
Alles andere, einschließlich standardmäßigem VACUUM, PRAGMA und Transaktionen, wird unterstützt.