# LiteDB Kommandos für die Abfrage mit LiteDB Studio

Hier ein kompaktes, druckfertiges Cheatsheet zur LiteDB SQL-ähnlichen Abfragesprache. Einfach kopieren, als PDF/Print ausgeben – und schon hast du es offline zur Hand.

---

## Übersicht der SQL-Befehle

<table id="bkmrk-befehl-syntax-kurzbe"><thead><tr><th>Befehl</th><th>Syntax</th><th>Kurzbeschreibung</th></tr></thead><tbody><tr><td>**SELECT**</td><td>`SELECT [TOP n] <Felder> FROM <Collection> [WHERE <Filter>] [GROUP BY <Felder>]`</td><td> </td></tr><tr><td> `\[HAVING \] \[ORDER BY \[ASC</td><td>DESC\]\] \[LIMIT n\] \[OFFSET n\]`</td><td>Datenabfrage mit Projektion, Filter, Sortierung, Gruppierung und Pagination</td></tr><tr><td>**INSERT**</td><td>`INSERT INTO <Collection> (<Feld1>,…) VALUES (<Wert1>,…)``INSERT INTO <Collection> (<BsonDocument>)`</td><td>Neue Dokumente hinzufügen</td></tr><tr><td>**UPDATE**</td><td>`UPDATE <Collection> SET <Feld>=<Wert>[, …] [WHERE <Filter>]`</td><td>Felder bestehender Dokumente ändern</td></tr><tr><td>**DELETE**</td><td>`DELETE FROM <Collection> [WHERE <Filter>]`</td><td>Dokumente löschen (ohne `WHERE`: alle)</td></tr><tr><td>**RENAME**</td><td>`RENAME COLLECTION <alt> TO <neu>``RENAME INDEX <alt> TO <neu> ON <Collection>`</td><td>Umbenennen von Collections oder Indizes</td></tr><tr><td>**DROP**</td><td>`DROP INDEX <IndexName> ON <Collection>`</td><td>Index löschen</td></tr><tr><td>**EXPLAIN**</td><td>`EXPLAIN &lt;SELECT</td><td>INSERT</td></tr></tbody></table>

---

## Filter- und Ausdruckssyntax (BsonExpression)

- **Vergleichsoperatoren**  
    `=` `!=` `>` `<` `>=` `<=`
- **Logische Verkettung**  
    `AND`, `OR`, `NOT`
- **Pfadangaben**
    
    
    - Dot-Notation: `Address.City`
    - Array-Zugriff: `Tags[0]`, `[Scores].any(x=>x>50)`
- **Array-/Kollektions-Operatoren**
    
    
    - `any`, `all`, `contains`
- **Regex**
    
    
    - `/{pattern}/i` (z. B. `/^A.*/i`)

---

## Aggregationen &amp; Funktionen

<table id="bkmrk-funktion-beschreibun"><thead><tr><th>Funktion</th><th>Beschreibung</th><th>Beispiel</th></tr></thead><tbody><tr><td>`COUNT(&lt;Feld</td><td>\*&gt;)`</td><td>Anzahl Elemente/Gruppengröße</td></tr><tr><td>`SUM(<Feld>)`</td><td>Summe numerischer Werte</td><td>`SUM(Price)`</td></tr><tr><td>`MIN/MAX(<Feld>)`</td><td>Kleinster/Größter Wert</td><td>`MAX(Date)`</td></tr><tr><td>`AVG(<Feld>)`</td><td>Durchschnitt</td><td>`AVG(Rating)`</td></tr><tr><td>`TOLOWER/TOUPPER()`</td><td>Text in Klein-/Großbuchstaben</td><td>`TOUPPER(Name)`</td></tr><tr><td>`TRIM/LENGTH/SUBSTR`</td><td>Zeichenketten-Funktionen</td><td>`TRIM(Title)`, `LENGTH(Text)`</td></tr><tr><td>`DATETIME(x)`</td><td>Wandelt Timestamp/String → DateTime</td><td>`DATETIME(CreatedAt)`</td></tr></tbody></table>

> **Hinweis:** Zusätzlich unterstützen alle BsonExpression-Funktionen ([docs](https://www.litedb.org/docs/expressions/)) u. a. `IIF`, `ISNULL`, `ROUND`, `CEIL`, `FLOOR`.

---

## Beispiele

```sql
-- 1) Einfache Abfrage mit Filter und Sort
SELECT Name, Age
FROM users
WHERE Age >= 18 AND City = 'Berlin'
ORDER BY Name ASC
LIMIT 10 OFFSET 0;

-- 2) Gruppierung und Having
SELECT City, COUNT(*) AS Einwohner
FROM users
GROUP BY City
HAVING Einwohner > 1000
ORDER BY Einwohner DESC;

-- 3) Einfügen
INSERT INTO products (Name, Price, Tags)
VALUES ('Kaffeemaschine', 79.99, ['küche', 'elektronik']);

-- 4) Update mit Filter
UPDATE products
SET Price = Price * 0.9
WHERE Tags.contains('elektronik');

-- 5) Löschen
DELETE FROM sessions
WHERE LastAccess < DATETIME('2025-01-01');

-- 6) Collection umbenennen
RENAME COLLECTION oldUsers TO customers;

```

---

## Schnellreferenz Schlüsselwörter

```
SELECT, INSERT, UPDATE, DELETE,
FROM, INTO, VALUES,
WHERE, GROUP BY, HAVING,
ORDER BY, LIMIT, OFFSET,
RENAME COLLECTION, RENAME INDEX,
DROP INDEX, EXPLAIN

```

---

> **Tipp:** Bei sehr vielen Feldern oder dynamisch konfigurierten Sets lieber die `WHEN … CONTAINS`-Variante in Switch-Statements nutzen, oder direkt `BsonExpression`-Filter anlegen. Damit bleibst du flexibel und wartbar.

---

**Viel Erfolg beim Ausdrucken und Entwickeln!**