Mit dem kompakten grafischen Werkzeug SQLiteStudio erledigen Sie unkompliziert und schnell alle Alltagsaufgaben rund um SQLite-Datenbanken.
In vielen Desktop-Szenarien erweist sich der Einsatz eines RDBMS-Servers als Overkill und verursacht bei Fehlkonfigurationen obendrein sogar ein Sicherheitsproblem. Braucht stets nur ein Benutzer mit einer Anwendung auf die Daten zuzugreifen, kommen Sie mit Datenbank SQLite weiter, ohne dabei auf die Vorzüge der Abfragesprache SQL verzichten zu müssen (siehe Kasten “SQLite”). Dabei erweist sich SQLiteStudio als kompaktes und nützliches Werkzeug, mit dem Sie viele Alltagsaufgaben rund um SQLite-Datenbanken bequem erledigen. Wie Sie die praktische Anwendung im Handumdrehen einrichten, lesen Sie im Kasten “SQLiteStudio installieren”.
SQLite
Bei SQLite handelt es sich um eine lediglich knapp 1 MByte große Programmbibliothek, die ein relationales Datenbanksystem implementiert. Die Bibliothek lässt sich direkt in Anwendungen integrieren und erweitert diese so um Datenbankfunktionen, weitere Server-Software ist überflüssig.
Dabei unterstützt SQLite die meisten SQL92-Befehle, darunter Transaktionen, Unterabfragen, Sichten, Trigger und benutzerdefinierte Funktionen. Dagegen fehlen Funktionen zum Verwalten von Objektberechtigungen und eine Client-Server-Architektur, die gesamte Datenbank befindet sich in einer einzigen Datei.
Aufgrund ihrer Vorzüge greifen zahlreiche bekannte Anwendungen auf SQLite zurück. Dazu zählen beispielsweise die Webbrowser Mozilla Firefox, Google Chrome und Apple Safari oder die VoIP-Software Skype. Daneben kommt auch in Mobilbetriebssystemen wie Android, iOS, Symbian und Windows Phone sowie in Mac OS X SQLite zum Einsatz.
SQLiteStudio installieren
Viele Distributionen führen SQLiteStudio in ihren Software-Repositories, sodass Sie das Programm in der Regel bequem über den jeweiligen Paketmanager einrichten. Er zieht bei der Installation alle Abhängigkeiten nach, insbesondere die notwendigen Libraries. Unter Debian und dessen Ablegern befördert der folgende Befehl auf der Kommandozeile das gesamte, weniger als 4 MByte große Paket auf die Platte:
# apt-get install libsqlitestudio1 sqlitestudio sqlitestudio-plugins
Daneben steht SQLiteStudio über die Projektseite http://sqlitestudio.pl in Form von 32- oder 64-Bit-Binaries für Linux, Mac OS X und Windows sowie als Quell-Tarball zum Herunterladen bereit. Nach dem Download legen Sie ein Unterverzeichnis für die Arbeit mit der Datenbank an und kopieren das heruntergeladene Archiv dorthin. Nach dem Entpacken und gegebenenfalls Kompilieren steht SQLiteStudio zum Einsatz bereit.
Beim ersten Start fragt SQLiteStudio nach der gewünschten Lokalisierung. Da es lediglich Anpassungen für Chinesisch, Französisch, Polnisch, Russisch und Slowenisch gibt, belassen Sie es hier beim voreingestellten American English. Davon gehen auch alle Angaben in diesem Artikel aus.
Datenbank anlegen
Zum Anlegen einer neuen Datenbank klicken Sie nach dem Start von SQLiteStudio auf Database | Add a Database oder drücken einfach [Strg]+[O]. Im daraufhin erscheinenden Dialogfenster (Abbildung 1) wählen Sie als Database typeSQLite 3. Bei File klicken Sie rechts neben dem Eingabefeld auf das grüne Pluszeichen, um ein Datenverzeichnis anzulegen.
Befindet sich darunter bei Name (on the list) ein Haken in Generate automatically, erzeugt das Tool den Datenbanknamen aus dem Verzeichnisnamen. Lassen Sie bei Options den Haken neben Permanent (keep it in configuration) gesetzt, erinnert sich SQLiteStudio bei der nächsten Sitzung an diese Datenbank.
Zu guter Letzt klicken Sie noch auf Test connection. Ist die SQLite-Datenbank funktionsfähig, erhalten Sie als Funktionsbestätigung einen grünen Haken. Mit OK beenden Sie die Maske anschließend.
Bevor Sie nun eine Tabelle anlegen können, müssen Sie sich mit der Datenbank verbinden. Dazu klicken Sie auf Database |Connect to the database oder in der Werkzeugleiste auf das Symbol mit den beiden verbundenen Steckern ganz links. Stehen später einmal mehrere Datenbanken zur Verfügung, müssen Sie zuvor die gewünschte am linken Rand unter Databases per Mausklick auswählen.
Nach der erfolgreichen Verbindungsaufnahme stellt SQLiteStudio die Datenbank am linken Rand des Programmfensters in einer Baumstruktur dar (Abbildung 2).
Anlegen von Tabellen
Den Dialog zum Anlegen einer Datenbanktabelle starten Sie über den Menüpunkt Structure | Create a table, durch einen Rechtsklick auf Tables in der Baumanzeige der Datenbank am linken Bildrand oder über das Tabellensymbol mit dem Plus-Zeichen in der Werkzeugleiste.
Tragen Sie den Tabellennamen im Feld Table Name ein – in unserem Beispiel lautet er personen (siehe Tabelle). Um eine neue Tabellenspalte anzulegen, klicken Sie auf das entsprechende Icon in der Werkzeugleiste dieses Fensters oder drücken [Einfg]. Es öffnet sich das Fenster zum Anlegen der Spalte (Abbildung 3).
Im sich daraufhin öffnenden Dialogfenster können Sie alle Eigenschaften der Tabellenspalte setzen. In jeder Tabelle sollte eines der Felder einen Primär- oder Fremdschlüssel führen. In unserem Beispiel dient die Spalte pnum als Primärschlüssel (Abbildung 4), der seinen Wert automatisch erhöht (Autoincrement).
Nachdem Sie alle notwendigen Tabellenspalten angelegt haben – die Struktur der Beispieltabelle personen zeigt Abbildung 5 – klicken Sie auf den grünen OK-Haken in der Werkzeugleiste des Unterfensters. Dort finden Sie auch alle für das weitere Bearbeiten einer Tabelle notwendigen Werkzeuge, etwa um Eigenschaften einer Spalte zu bearbeiten oder Spalten zu löschen.

personen.” width=”300″ height=”159″ />
Abbildung 5: Die Struktur unserer Beispieltabellepersonen.Manuelle Dateneingabe
Um Daten einzugeben oder zu bearbeiten, klicken Sie auf Data. Hier wählen Sie zwischen Grid view, einer Tabellenansicht (Abbildung 6), und Form view einer Formularansicht.
Auch dieses Unterfenster enthält eine Werkzeugleiste, mit der Sie (von links nach rechts) die Ansicht erneuern, einen leeren Satz für die Eingabe anfordern (Plus-Zeichen), einen Satz löschen (Minus-Zeichen), eine Aktion ausführen (Haken) und eine Aktion rückgängig machen (X) können.
Klicken Sie bei der Eingabe grundsätzlich nicht auf eine Spalte mit Autoincrement, in unserem Fall also nicht auf pnum. Das Feld muss unbedingt den kursiv vorgegebenen Wert NULL enthalten, sonst funktioniert die Eingabe nicht!
Die folgenden Beispiele behandeln eine kleine Datenbank mit insgesamt drei Tabellen zum Verwalten von Telefon- und Faxnummern, E-Mail-Adressen und so weiter. Legen Sie hierzu noch die Tabellen typen und verbindungen an. Die zum Befüllen notwendigen Informationen finden Sie:
- für
personenin der Tabelle “Personen”, - für
typenin der Abbildung 7 sowie der Tabelle “Typen”, und - für
verbindungenin Abbildung 8, Abbildung 9 und der Tabelle “Verbindungen”.
Personen
name |
vorname |
gebdat |
|---|---|---|
| Müller | Karl | 03.04.2005 |
| Meier | Hans | 01.02.2003 |
| Schmidt | Laura | 09.09.1999 |
Der Inhalt des Felds pnum wird automatisch erzeugt. |
||

typen.” width=”300″ height=”75″ />
Abbildung 7: Struktur vontypen.Typen
typlang |
typkurz |
|---|---|
| Telefon Festnetz | t |
| SFTP-Account | s |
| Mobilfunk | m |
| Fax | f |
| e |

verbindungen.” width=”300″ height=”105″ />
Abbildung 8: Die Struktur der Tabelleverbindungen.
verbindungen.typ mit Fremdschlüssel.” width=”300″ height=”168″ />
Abbildung 9: Das Anlegen vonverbindungen.typ mit Fremdschlüssel.Verbindungen
pnum |
typ |
info |
|---|---|---|
| 2 | m | 0123/1234567 |
| 3 | t | 0987/654321 |
| 2 | f | 0864/975321 |
| 3 | e | mail@beispiel.tld |
| 1 | m | 0137/246890 |
| 1 | t | 09751/23468 |
Der Inhalt des Felds vorg wird automatisch erzeugt. |
||
Im Beispiel kommen auch Fremdschlüssel zum Einsatz, etwa für den Typ der Verbindungsdaten in verbindungen.typ. Damit Sie bei den Verbindungsdaten nicht immer “Telefon”, “Fax” oder “Mobil” ausschreiben müssen, was oft (Tipp-)Fehler nach sich zieht, gibt es für jede Kategorie ein Kürzel.
Um dieses Kürzel verbindlich für die Einträge bei verbindungen.typ zu machen, ziehen Sie das Feld typen.typkurz als Fremdschlüssel heran. Abbildung 9 zeigt, wie Sie das Feld anlegen. Wählen Sie als Constraint den Foreign Key aus, und klicken Sie dann auf Configure in der gleichen Zeile. Es öffnet sich ein weiterer Dialog, in dem Sie die Tabelle (typen) und die Spalte typkurz (Primärschlüssel von typen) auswählen. In der Rubrik Reactions könnten Sie gegebenenfalls weitere Feineinstellungen vornehmen.
Sinngemäß ebenso gehen Sie vor, um in verbindungen.pnum zu verhindern, dass sich “Karteileichen” eintragen lassen, also Einträge ohne existierenden Eintrag in personen.
Füllen Sie nun die Tabellen mit den Beispieldaten. Beim Ausfüllen von verbindungsdaten schlägt Ihnen SQLiteStudio die entsprechenden Einträge für die Felder mit den Fremdschlüsseln auch vor, wenn Sie mit der linken Maustaste doppelt auf das Feld klicken und dann den erscheinenden Pfeil auswählen.
Sortieren, Filtern, Suchen
In der Grid-Ansicht einer Tabelle können Sie mittels Doppelklick auf den Kopf der gewünschten Spalte die Daten sortieren lassen. Für eine Suche wählen Sie zunächst die Art, wie die Suche stattfinden soll. Dazu klicken Sie in der Werkzeugleiste der Grid-Ansicht auf den kleinen Pfeil neben dem Trichtersymbol hinter dem Suchfeld. Es stehen folgende Methoden zur Auswahl:
- Filter by text: Hier durchsucht SQLiteStudio alle Tabellenfelder nach dem Suchbegriff. Im Filtersymbol erscheint ein kleines “T”.
- Filter by Regular Expression: Diese Einstellung ermöglicht Mustersuchen. Im Filtersymbol erscheint ein “R”.
- Filter by SQL expression: Hier erwartet SQLiteStudio den Wert, den es in einer Spalte suchen soll. Ein “S” im Filtersymbol macht diese Einstellung kenntlich.
Abbildung 10 zeigt eine Suche nach allen Tabelleneinträgen in verbindungen, die eine Mobilfunknummer beinhalten. Die Suche erfolgte im SQL-Modus. Durch einen Klick auf das runde X-Symbol im Suchfenster heben Sie die Anzeige der Suchergebnisse wieder auf.
Views
Ein Komfortmerkmal relationaler Datenbanken stellen die Views dar. Damit automatisieren Sie umfangreiche, tabellenübergreifende Abfragen und Auswertungen wie Summen oder Zählungen, um diese nicht jedes Mal neu eingeben zu müssen. Stattdessen greifen Sie über den View so auf das Ausgabeprodukt zu, als würde es sich dabei um eine Tabelle handeln.
Statt über umfangreiche Klickorgien legen Sie in SQLiteStudio Ihre Views mittels einer entsprechenden SQL-Abfrage an. Ganz ohne SQL-Kenntnisse kommen Sie an dieser Stelle also nicht weiter. Im folgenden Beispiel erstellen wir eine Telefonliste, die passend zu jeder Person die entsprechenden Verbindungsdaten auflistet.
Zunächst einmal klicken Sie mit der rechten Maustaste auf Views in der linken Objektspalte und wählen aus dem daraufhin erscheinenden Kontextmenü den Punkt Create a View. Vergeben Sie einen Namen für den View, und tragen Sie dann unten im Editorfenster die zugehörige SQL-Anweisung ein (Abbildung 11).
Das SQL-Kommando im Beispiel besteht aus der Auflistung der entsprechenden Tabellenspalten, der Aufzählung der betroffenen Tabellen, einer where-Klausel mit der Bedingung sowie einer Sortieranweisung. Die Tabellenspalten geben Sie in der Form Tabelle.Spalte an. Nach dem Schlüsselwort from führen Sie die verwendeten Tabellen auf, getrennt durch Kommas.
Die where-Klausel enthält im Beispiel zwei Felder aus verschiedenen Tabellen, die den gleichen Inhalt aufweisen müssen (=). Für Zahlenvergleiche können Sie bei anderen Projekten auch < (kleiner) und > (größer) verwenden. Um eine sortierte Liste zu erhalten, fügen Sie noch die Anweisung order by mit den entsprechenden Tabellenspalten hinzu. Listing 1 zeigt das komplette SQL-Statement samt Syntax-Highlighting, wie es auch SQLiteStudio vornimmt. In Abbildung 12 sehen Sie das Ergebnis, auf das Sie nun im Reiter Data wie auf eine Tabelle zugreifen können.
Listing 1
select personen.name, personen.vorname, verbindungen.typ, verbindungen.info from personen, verbindungen where personen.pnum = verbindungen.pnum order by personen.name, personen.vorname, verbindungen.typ
Um den View außerhalb von SQLiteStudio in einem herkömmlichen SQL-Client zu verwenden, ergänzen Sie vor dem select noch eine Anweisung, um den View anzulegen (create view Telefonliste as ...). Außerdem müssen Sie dann das SQL-Statement mit einem Semikolon (;) abschließen.
Daten importieren
Um die Datenbank um neue Werte beispielsweise für Personen zu ergänzen, müssen Sie die entsprechenden Daten nicht zwangsläufig Zeile für Zeile in SQLiteStudio eintippen. Komfortabler funktioniert es, wenn Sie die Daten vorab in einer CSV-Datei erfassen und diese dann in SQLiteStudio importieren – das klappt mit wenigen Mausklicks.
Für unser Beispiel erstellen Sie zunächst mit einem beliebigen Texteditor die Datei aus Listing 2 und speichern diese unter dem Namen personen.csv. Dann wählen Sie aus dem Menü von SQLiteStudio den Punkt Tools |Import oder klicken direkt auf das Import-Symbol (die vier zueinander strebenden Pfeile).
Listing 2
Klein,Sepp,24.12.1980, Groß,Georg,11.11.1981,
Im ersten Dialog des sich daraufhin öffnenden Assistenten wählen Sie die Datenbank und Tabelle für den Import aus, in unserem Fall also versuch.personen. Sobald Sie auf Next > klicken, öffnet sich das Folgefenster (Abbildung 13), in dem der Quelltyp CSV schon vorbelegt ist.
Nun geben Sie die Eingabedatei an, indem Sie auf das kleine Ordnersymbol bei Input File klicken. Wählen Sie nun unter Text encoding den passenden Zeichensatz sowie in den Data source options bei Field separator den verwendeten Feldtrenner aus. Manche CSV-Dateien tragen auch Spaltenköpfe. In diesem Fall setzen Sie den Haken vor , um die Kopfzeile zu ignorieren.
Nach einem Klick auf Finish importiert SQLiteStudio anschließend die Werte aus der CSV-Datei. Werfen Sie nun einen Blick in die Tabelle Personen, sehen Sie dort die neuen Einträge.
Daten exportieren
SQLiteStudio exportiert Daten wahlweise nach CSV, PDF, HTML, JSON und XML sowie als SQL-Anweisung. Dazu klicken Sie entweder direkt auf das Exportsymbol (die vier auseinander strebenden Pfeile) oder wählen aus dem Menü Tools |Export.
Im ersten Dialog des entsprechenden Assistenten wählen Sie aus, was Sie exportieren möchten: eine ganze Datenbank, eine einzelne Tabelle oder ein Abfrageergebnis. Dann bestätigen Sie Ihre Wahl mit einem Klick auf Next >. Meist werden Sie hier eine einzelne Tabelle exportieren, wie etwa personen. In diesem Fall geben Sie im nächsten Fenster die entsprechende Tabelle an; SQLiteStudio gibt hier die aktuell verwendete Datenbank und Tabelle schon vor. Unter Options legen Sie den Umfang des Datenexports (Tabellendaten, Indexe, Trigger ) fest und klicken anschließend auf Next >.
Das nächste Fenster dient der Bestimmung des Ausgabeformats und der Zieldatei. Die hier enthaltenen Punkte hängen vom verwendeten Ausgabeformat ab; für CSV ähneln sie beispielsweise stark den beim Import vorhandenen (Abbildung 13). Die Exportoptionen für HTML zeigt Abbildung 14.
Der Export in diverse Datenformate wie CSV, JSON oder SQL funktioniert wie erwartet. Sofern Sie hier nicht bei den Parametern pfuschen, gelingt der Import in andere Programme problemlos, wie etwa in LibreOffice oder PostgreSQL. Der Stolperstein besteht stets in der Kopfzeile, die es beim Import in der Zielanwendung zu berücksichtigen gilt.
Optisch makellos präsentiert sich die HTML-Ausgabe (Abbildung 15). Die PDF-Ausgabe hingegen krankt an der fixen Orientierung von Spaltenbreite am Spaltennamen: Der Umbruch erfolgt gnadenlos, ohne dass eine Eingriffsmöglichkeit parat stünde (Abbildung 16).

Abbildung 16: Die Ausgabe beim PDF-Export.
Eine Ausgabe von Views bietet SQLiteStudio in den Menüs nicht an, diese müssen Sie unter Export als Query results manuell anfordern. Auch hierzu benötigen Sie wieder grundlegende SQL-Kenntnisse. Für die Abfrage unserer Beispiel-Telefonliste lautet die Query etwa folgendermaßen:
select * from Telefonliste;
Die weiteren Abfragedialoge entsprechen jenen beim Export von Datenbanken oder Tabellen, auch die möglichen Formate sind dieselben. Das HTML-Exportergebnis für unseren View Telefonliste sehen Sie in Abbildung 17.
Manuelle SQL-Abfragen
Für komplexere Abfragen steht ein SQL-Editor bereit, den Sie über Tools |Open SQL editor erreichen. Nach der Eingabe Ihrer Anweisungen müssen Sie auf den kleinen blauen Pfeil oberhalb von Query klicken oder [F9] drücken, um diese auszuführen.
Im oberen Eingabefeld tippen Sie Ihre Abfrage ein, im mittleren erscheint das Ergebnis. Fehler und andere Meldungen finden Sie ganz unten im Statusbereich. Sie können die Abfragen auch speichern, indem Sie auf das Disketten-Symbol klicken. Zum Laden einer auf diesem Weg erstellten Anweisungsdatei klicken Sie auf das Ordner-Symbol rechts neben der Diskette. Die geladene Datei mit den Anweisungen führt SQLiteStudio jedoch nicht automatisch aus; Sie müssen also wieder auf den blauen Pfeil klicken.

Abbildung 18: Der SQL-Editor von SQLiteStudio ermöglicht manuelle Abfragen, die sich gegebenenfalls auch in einen View umsetzen lassen.
Optional können Sie aus einer entsprechenden Abfrage auch direkt einen View anlegen. Dazu genügt ein Mausklick auf die entsprechende Schaltfläche mit dem stilisierten Blitz links vom Disketten-Symbol (Create view from query).
Fazit
Mit SQLiteStudio erhalten Sie ein kompaktes und nützliches Werkzeug an die Hand, mit dem Sie viele Dinge rund um die Datenbank SQLite bequem erledigen. Dass es sich dabei durch und durch um ein Open-Source-Projekt handelt, lässt sich an der Einladung der Entwickler zur aktiven Mitarbeit unschwer erkennen. Wer nichts mit Programmier- und Übersetzungsarbeit am Hut hat und trotzdem helfen will, kann auch eine kleine “Bausteinspende” leisten.
Der Autor
Harald Zisler beschäftigt sich seit den frühen 90er-Jahren mit FreeBSD und Linux. Zu Technik- und EDV-Themen verfasst er Zeitschriftenbeiträge und Bücher, daneben bietet er auch Kleingruppenkurse rund um den Themenbereich Linux und Datenbanken an.

















