SQLite: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „Man-Pages“ durch „Man-Page“
 
(19 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:


= Beschreibung =
= Beschreibung =
SQLite wird in Mobiltelefonen (Android, iOS, Symbian OS, Windows Phone), in Browsern (Firefox, Safari, Chrome), Skype und vielen anderen Anwendungen eingesetzt. Es ist das verbreitetste und meistverwendete Datenbanksystem der Welt. SQLite unterstützt einen Großteil der im [[SQL-92]]-Standard festgelegten [[SQL]]-Sprachbefehle. Unter anderem implementiert SQLite [[Transaktion (Informatik)|Transaktionen]], Unterabfragen (Subselects), [[Sicht (Datenbank)|Sichten]] (Views), [[Datenbanktrigger|Trigger]] und benutzerdefinierte Funktionen.
SQLite wird in Mobiltelefonen (Android, iOS, Symbian OS, Windows Phone), in Browsern (Firefox, Safari, Chrome), Skype und vielen anderen Anwendungen eingesetzt.  
* Es ist das verbreitetste und meistverwendete Datenbanksystem der Welt.  
* SQLite unterstützt einen Großteil der im [[SQL-92]]-Standard festgelegten [[SQL]]-Sprachbefehle.  
* Unter anderem implementiert SQLite [[Transaktion (Informatik)|Transaktionen]], Unterabfragen (Subselects), [[Sicht (Datenbank)|Sichten]] (Views), [[Datenbanktrigger|Trigger]] und benutzerdefinierte Funktionen.


== Funktionen ==
== Funktionen ==
Die SQLite-Bibliothek lässt sich direkt in entsprechende Anwendungen integrieren, sodass keine weitere Server-Software benötigt wird. Dies ist der entscheidende Unterschied zu anderen Datenbanksystemen. Durch das Einbinden der Bibliothek wird die Anwendung um Datenbankfunktionen erweitert, ohne auf externe Softwarepakete angewiesen zu sein.
Die SQLite-Bibliothek lässt sich direkt in entsprechende Anwendungen integrieren, sodass keine weitere Server-Software benötigt wird.  
* Dies ist der entscheidende Unterschied zu anderen Datenbanksystemen.  
* Durch das Einbinden der Bibliothek wird die Anwendung um Datenbankfunktionen erweitert, ohne auf externe Softwarepakete angewiesen zu sein.


Das System ist vor allem für den Einsatz in [[Eingebettetes Datenbanksystem|eingebetteten Datenbanksystemen]] entworfen, daher fehlen Funktionen wie die Möglichkeit, Objektberechtigungen zu verwalten (GRANT, REVOKE). Für viele Programmiersprachen existieren passende [[Datenbankschnittstelle]]n. Auch ein in der [[Terminal (Computer)|Konsole]] und in [[Unix-Shell|Shell]]-Skripten verwendbares, einfaches Frontend ist vorhanden. Mit ''sqlitebrowser'' steht ein grafisches Frontend für BSD, macOS, Linux und Windows zur Verfügung.<ref>{{Internetquelle|url= https://sqlitebrowser.org/|titel= DB Browser for SQLite|abruf = 2019-07-25}}</ref>
Das System ist vor allem für den Einsatz in [[Eingebettetes Datenbanksystem|eingebetteten Datenbanksystemen]] entworfen, daher fehlen Funktionen wie die Möglichkeit, Objektberechtigungen zu verwalten (GRANT, REVOKE).  
* Für viele Programmiersprachen existieren passende [[Datenbankschnittstelle]]n.  
* Auch ein in der [[Terminal (Computer)|Konsole]] und in [[Unix-Shell|Shell]]-Skripten verwendbares, einfaches Frontend ist vorhanden.  
* Mit ''sqlitebrowser'' steht ein grafisches Frontend für BSD, macOS, Linux und Windows zur Verfügung.<ref>{{Internetquelle|url= https://sqlitebrowser.org/|titel= DB Browser for SQLite|abruf = 2019-07-25}}</ref>


SQLite hat einige Besonderheiten gegenüber anderen Datenbanken: Die Bibliothek ist nur wenige hundert Kilobyte groß. Eine SQLite-Datenbank besteht aus einer einzigen Datei, die alle Tabellen, Indizes, Views, Trigger usw. enthält. Dies vereinfacht den Austausch zwischen verschiedenen Systemen, sogar zwischen Systemen mit unterschiedlichen [[Byte-Reihenfolge]]n. Jede Spalte kann Daten beliebiger Typen enthalten, erst zur Laufzeit wird nötigenfalls konvertiert.
SQLite hat einige Besonderheiten gegenüber anderen Datenbanken: Die Bibliothek ist nur wenige hundert Kilobyte groß.  
* Eine SQLite-Datenbank besteht aus einer einzigen Datei, die alle Tabellen, Indizes, Views, Trigger usw.  
* enthält.  
* Dies vereinfacht den Austausch zwischen verschiedenen Systemen, sogar zwischen Systemen mit unterschiedlichen [[Byte-Reihenfolge]]n.  
* Jede Spalte kann Daten beliebiger Typen enthalten, erst zur Laufzeit wird nötigenfalls konvertiert.


Die gesamte Datenbank befindet sich in einer einzigen Datei, kann aber auch [[In-Memory-Datenbank|nicht-persistent]] im Hauptspeicher angelegt werden.<ref>[https://www.sqlite.org/inmemorydb.html ''In-Memory Databases''], sqlite.org, abgerufen am 21. Oktober 2016.</ref> Eine [[Client-Server-Modell|Client-Server-Architektur]] ist nicht vorhanden.
Die gesamte Datenbank befindet sich in einer einzigen Datei, kann aber auch [[In-Memory-Datenbank|nicht-persistent]] im Hauptspeicher angelegt werden.<ref>[https://www.sqlite.org/inmemorydb.html ''In-Memory Databases''], sqlite.org, abgerufen am 21. Oktober 2016.</ref> Eine [[Client-Server-Modell|Client-Server-Architektur]] ist nicht vorhanden.


Einige in anderen Datenbanksystemen vorhandene Funktionen fehlen: Schreiboperationen unterschiedlicher Prozesse in derselben Datenbankdatei können nur nacheinander ausgeführt werden.<ref>{{Internetquelle|url= http://www.sqlite.org/faq.html#q5|titel= Frequently Asked Questions|abruf= 2009-08-22|hrsg= Hipp, Wyrick & Company}}</ref> Ab Version 3.2 gibt es den Befehl <code>ALTER TABLE</code>, allerdings mit eingeschränktem Funktionsumfang. Es lassen sich derzeit lediglich Tabellen umbenennen und Spalten zu den Tabellen hinzufügen. Es gibt keine Verwaltung von Benutzer- und Zugriffsberechtigungen auf Datenbank-Ebene, stattdessen gelten für die Datenbank-Dateien die Zugriffsberechtigungen des [[Dateisystem]]s.
Einige in anderen Datenbanksystemen vorhandene Funktionen fehlen: Schreiboperationen unterschiedlicher Prozesse in derselben Datenbankdatei können nur nacheinander ausgeführt werden.<ref>{{Internetquelle|url= http://www.sqlite.org/faq.html#q5|titel= Frequently Asked Questions|abruf= 2009-08-22|hrsg= Hipp, Wyrick & Company}}</ref> Ab Version 3.2 gibt es den Befehl <code>ALTER TABLE</code>, allerdings mit eingeschränktem Funktionsumfang.  
* Es lassen sich derzeit lediglich Tabellen umbenennen und Spalten zu den Tabellen hinzufügen.  
* Es gibt keine Verwaltung von Benutzer- und Zugriffsberechtigungen auf Datenbank-Ebene, stattdessen gelten für die Datenbank-Dateien die Zugriffsberechtigungen des [[Dateisystem]]s.


[http://www.sqlite.org/ SQLite] 🇬🇧 ist eine kleine und sehr leichtgewichtige Implementierung einer [https://de.wikipedia.org/wiki/SQL SQL]-Datenbank. SQLite ist in [https://wiki.ubuntuusers.de/Programmiersprache/ C] geschrieben, es sind aber auch Schnittstellen zu so gut wie allen anderen gängigen (und weniger bekannten) [https://wiki.ubuntuusers.de/Programmiersprache/ Programmiersprachen] verfügbar.
[http://www.sqlite.org/ SQLite] 🇬🇧 ist eine kleine und sehr leichtgewichtige Implementierung einer [https://de.wikipedia.org/wiki/SQL SQL]-Datenbank.  
* SQLite ist in [https://wiki.ubuntuusers.de/Programmiersprache/ C] geschrieben, es sind aber auch Schnittstellen zu so gut wie allen anderen gängigen (und weniger bekannten) [https://wiki.ubuntuusers.de/Programmiersprache/ Programmiersprachen] verfügbar.


SQLite ist freie Software und wird von großen Open-Source Projekten wie [https://wiki.ubuntuusers.de/Amarok/ Amarok], [https://wiki.ubuntuusers.de/Pidgin/ Pidgin] und [https://wiki.ubuntuusers.de/Firefox/ Firefox] (ab Version 3), aber auch von kleineren Programmen genutzt. Darüber hinaus gibt es eine Reihe von Closed-Source-Projekten, die SQLite einsetzen (wie z.B. Apples iPhone).
SQLite ist freie Software und wird von großen Open-Source Projekten wie [https://wiki.ubuntuusers.de/Amarok/ Amarok], [https://wiki.ubuntuusers.de/Pidgin/ Pidgin] und [https://wiki.ubuntuusers.de/Firefox/ Firefox] (ab Version 3), aber auch von kleineren Programmen genutzt.  
* Darüber hinaus gibt es eine Reihe von Closed-Source-Projekten, die SQLite einsetzen (wie z.&nbsp;B.&nbsp;
* Apples iPhone).


Zu beachten ist, dass SQLite keine vollständige Implementierung des SQL-Standards enthält, aber für die meisten Anwendungsfälle reicht der vorhandene [https://wiki.ubuntuusers.de/SQLite/#Funktionsumfang Funktionsumfang] völlig aus.
Zu beachten ist, dass SQLite keine vollständige Implementierung des SQL-Standards enthält, aber für die meisten Anwendungsfälle reicht der vorhandene [https://wiki.ubuntuusers.de/SQLite/#Funktionsumfang Funktionsumfang] völlig aus.


Große bis sehr große Datenmengen (z.B. Datenbank mit vielen Tabellen und mehreren Tausend oder Hunderttausend Einträgen) können von SQLite verwaltet werden, das Programm wird dann jedoch ziemlich langsam, insbesondere, wenn quasi-parallele Schreibvorgänge benötigt werden. Für diese Anwendungsfälle eignen sich dann die "großen" Datenbanken wie [https://wiki.ubuntuusers.de/PostgreSQL/ PostgreSQL], [https://wiki.ubuntuusers.de/MariaDB/ MariaDB] oder [https://wiki.ubuntuusers.de/MySQL/ MySQL] besser.
Große bis sehr große Datenmengen (z.&nbsp;B.&nbsp; Datenbank mit vielen Tabellen und mehreren Tausend oder Hunderttausend Einträgen) können von SQLite verwaltet werden, das Programm wird dann jedoch ziemlich langsam, insbesondere, wenn quasi-parallele Schreibvorgänge benötigt werden.  
* Für diese Anwendungsfälle eignen sich dann die "großen" Datenbanken wie [https://wiki.ubuntuusers.de/PostgreSQL/ PostgreSQL], [https://wiki.ubuntuusers.de/MariaDB/ MariaDB] oder [https://wiki.ubuntuusers.de/MySQL/ MySQL] besser.


== Funktionsumfang ==
== Funktionsumfang ==
Wie oben bereits erwähnt, unterstützt SQLite nicht alle Elemente von SQL, eine Übersicht über die in SQLite enthaltenen Funktionen findet man in der [http://www.sqlite.org/lang.html Dokumentation] 🇬🇧 . Weitere Informationen findet man auch im Wiki von SQLite (siehe [https://wiki.ubuntuusers.de/SQLite/#Links Links]).
Wie oben bereits erwähnt, unterstützt SQLite nicht alle Elemente von SQL, eine Übersicht über die in SQLite enthaltenen Funktionen findet man in der [http://www.sqlite.org/lang.html Dokumentation]
* Weitere Informationen findet man auch im Wiki von SQLite (siehe [https://wiki.ubuntuusers.de/SQLite/#Links Links]).


= Installation =
= Installation =
Die aktuelle Version von SQLite kann über die Paketverwaltung installiert[https://wiki.ubuntuusers.de/SQLite/#source-1 [1]] werden:* sqlite3
# '''apt install sqlite3'''
sudo apt-get install sqlite3  


Oder mit [https://wiki.ubuntuusers.de/apturl/ apturl] installieren, Link: [apt://sqlite3 apt://sqlite3]
Dokumentation installieren
 
  # '''apt install sqlite3-doc'''
Optional kann man noch die Dokumentation (in englischer Sprache) installieren, und zwar über folgendes Paket:* sqlite3-doc
  sudo apt-get install sqlite3-doc  
 
Oder mit [https://wiki.ubuntuusers.de/apturl/ apturl] installieren, Link: [apt://sqlite3-doc apt://sqlite3-doc]


= Syntax =
= Syntax =
== Parameter ==
== Parameter ==
== Optionen ==
== Optionen ==
== Umgebungsvariablen ==
== Umgebung ==
== Exit-Status ==
== Rückgabewert ==


= Konfiguration =
= Konfiguration =
== Dateien ==
== Dateien ==


= Anwendungen =
= Anwendung =
= Sicherheit =
== Benutzung ==
= Dokumentation =
SQLite bringt von Haus aus "nur" ein Kommandozeilenschnittstelle[https://wiki.ubuntuusers.de/SQLite/#source-2 [2]] mit.
== RFC ==
== Man-Pages ==
== Info-Pages ==
== Projekt-Homepage ==
 
= Links =
== Siehe auch ==
== Weblinks ==
== Einzelnachweise ==
<references />


= Testfragen =
Um SQLite zu nutzen, gilt folgende allgemeine Syntax:
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>


= Konfiguration =
== Dateien ==
= Anwendungen =
== Benutzung ==
SQLite bringt von Haus aus "nur" ein Kommandozeilenschnittstelle[https://wiki.ubuntuusers.de/SQLite/#source-2 [2]] mit. Um SQLite zu nutzen, gilt folgende allgemeine Syntax:
  sqlite3 [OPTIONEN] DATENBANK [SQL-BEFEHL]  
  sqlite3 [OPTIONEN] DATENBANK [SQL-BEFEHL]  


Die Angabe von Optionen und von SQL-Befehlen ist dabei optional. Existiert die Datenbank DATENBANK nicht, so wird diese automatisch angelegt und geöffnet. Gibt man keinen SQL-Befehl an, so befindet man sich automatisch im interaktiven Modus[https://wiki.ubuntuusers.de/SQLite/#source-3 [3]]. Eine Übersicht über allgemeine Befehle erhält man mit .help, den interaktiven Modus verlässt man mit .exit. Natürlich kann man im interaktiven Modus auch die unterstützen SQL-Befehle eingeben und ausführen. Zu beachten ist dabei, dass [https://de.wikipedia.org/wiki/Transaktion_(Informatik) Transaktionen] explizit eingeleitet und ausgeführt werden müssen.
Die Angabe von Optionen und von SQL-Befehlen ist dabei optional.  
* Existiert die Datenbank DATENBANK nicht, so wird diese automatisch angelegt und geöffnet.  
* Gibt man keinen SQL-Befehl an, so befindet man sich automatisch im interaktiven Modus[https://wiki.ubuntuusers.de/SQLite/#source-3 [3]].  
* Eine Übersicht über allgemeine Befehle erhält man mit .help, den interaktiven Modus verlässt man mit .exit.  
* Natürlich kann man im interaktiven Modus auch die unterstützen SQL-Befehle eingeben und ausführen.  
* Zu beachten ist dabei, dass [https://de.wikipedia.org/wiki/Transaktion_(Informatik) Transaktionen] explizit eingeleitet und ausgeführt werden müssen.


Eine Übersicht über die mögliche Startoptionen findet man in den [https://wiki.ubuntuusers.de/man/ Manpages] zu SQLite. Man kann die Optionen auch in der Datei ~/.sqliterc hinterlegen, die SQLite beim Start auswertet. Die Datei wird bei der Installation von SQLite nicht automatisch angelegt, muss also gegebenenfalls von Hand angelegt werden[https://wiki.ubuntuusers.de/SQLite/#source-3 [3]]. Mehr Informationen hierzu findet man in ebenfalls in den Manpages.
Eine Übersicht über die mögliche Startoptionen findet man in den [https://wiki.ubuntuusers.de/man/ Manpages] zu SQLite.  
* Man kann die Optionen auch in der Datei ~/.sqliterc hinterlegen, die SQLite beim Start auswertet.  
* Die Datei wird bei der Installation von SQLite nicht automatisch angelegt, muss also gegebenenfalls von Hand angelegt werden[https://wiki.ubuntuusers.de/SQLite/#source-3 [3]].  
* Mehr Informationen hierzu findet man in ebenfalls in den Manpages.


== Beispiele ==
== Beispiele ==
Zeile 109: Zeile 94:
  sqlite> .quit  
  sqlite> .quit  


Zunächst ruft man die entsprechende Datenbank auf. Mit .tables kann man darin enthaltene Tabellen auflisten. Um beispielsweise die Tabelle text_events anzuzeigen, ruft man sie wie im Beispiel mit select auf.
Zunächst ruft man die entsprechende Datenbank auf.  
* Mit .tables kann man darin enthaltene Tabellen auflisten.  
* Um beispielsweise die Tabelle text_events anzuzeigen, ruft man sie wie im Beispiel mit select auf.


Zurückblättern in Befehlen: Bereits benutzte Befehle lassen sich mit ↑ wieder anzeigen und mit ⏎ erneut ausführen.
Zurückblättern in Befehlen: Bereits benutzte Befehle lassen sich mit ↑ wieder anzeigen und mit ⏎ erneut ausführen.


== Grafische Benutzeroberflächen ==
== Grafische Benutzeroberflächen ==
In den offiziellen Paketquellen findet sich der [https://wiki.ubuntuusers.de/SQLite_Database_Browser/ SQLite Database Browser], der eine grafische Oberfläche zum Anlegen und Editieren von SQLite-Datenbanken bietet. Darüber hinaus können CSV-Dateien im- oder exportiert werden.
In den offiziellen Paketquellen findet sich der [https://wiki.ubuntuusers.de/SQLite_Database_Browser/ SQLite Database Browser], der eine grafische Oberfläche zum Anlegen und Editieren von SQLite-Datenbanken bietet.  
* Darüber hinaus können CSV-Dateien im- oder exportiert werden.


Eine plattformübergreifende GUI, die ohne Installation verwendet werden kann, ist [http://sqlitestudio.pl/ SQLiteStudio] 🇬🇧.
Eine plattformübergreifende GUI, die ohne Installation verwendet werden kann, ist [http://sqlitestudio.pl/ SQLiteStudio] 🇬🇧.
Zeile 120: Zeile 108:
Daneben existieren noch die webbasierte Oberfläche [https://www.phpliteadmin.org/ phpLiteAdmin] 🇬🇧, die, wie der Name vermuten lässt, an [https://wiki.ubuntuusers.de/MySQL/Werkzeuge/#phpMyAdmin phpMyAdmin] angelehnt ist.
Daneben existieren noch die webbasierte Oberfläche [https://www.phpliteadmin.org/ phpLiteAdmin] 🇬🇧, die, wie der Name vermuten lässt, an [https://wiki.ubuntuusers.de/MySQL/Werkzeuge/#phpMyAdmin phpMyAdmin] angelehnt ist.


 
= Sicherheit =
= Dokumentation =
= Dokumentation =
Hat man die Dokumentation zu SQLite [https://wiki.ubuntuusers.de/SQLite/#Installation installiert], so hat man eine recht ausführliche, englischsprachige HTML-Dokumentation bereits auf der Festplatte. Den Einstieg bietet die Seite (Datei) /usr/share/doc/sqlite3-doc/index.html. Unter [https://wiki.ubuntuusers.de/SQLite/#Links Links] findet man einige weitere Verweise auf weitere SQLite-Dokumentationen.
Hat man die Dokumentation zu SQLite [https://wiki.ubuntuusers.de/SQLite/#Installation installiert], so hat man eine recht ausführliche, englischsprachige HTML-Dokumentation bereits auf der Festplatte.  
* Den Einstieg bietet die Seite (Datei) /usr/share/doc/sqlite3-doc/index.html.  
* Unter [https://wiki.ubuntuusers.de/SQLite/#Links Links] findet man einige weitere Verweise auf weitere SQLite-Dokumentationen.


== Man-Pages ==
== RFC ==
== Man-Page ==
== Info-Pages ==
== Info-Pages ==
== Projekt-Homepage ==
= Links =
= Links =
== Intern ==
== Siehe auch ==
== Weblinks ==
== Weblinks ==
# [http://www.sqlite.org/docs.html http://www.sqlite.org/docs.html] 🇬🇧 - sehr umfangreiche Dokumentation
# [http://www.sqlite.org/docs.html http://www.sqlite.org/docs.html] 🇬🇧 - sehr umfangreiche Dokumentation
= Testfragen =
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>


[[Category:Datenbank]]
 
 




[[Kategorie:SQLite]]
[[Kategorie:SQLite]]

Aktuelle Version vom 6. November 2024, 12:49 Uhr

SQLite ist eine gemeinfreie Programmbibliothek, die ein relationales Datenbanksystem enthält.

Beschreibung

SQLite wird in Mobiltelefonen (Android, iOS, Symbian OS, Windows Phone), in Browsern (Firefox, Safari, Chrome), Skype und vielen anderen Anwendungen eingesetzt.

  • Es ist das verbreitetste und meistverwendete Datenbanksystem der Welt.
  • SQLite unterstützt einen Großteil der im SQL-92-Standard festgelegten SQL-Sprachbefehle.
  • Unter anderem implementiert SQLite Transaktionen, Unterabfragen (Subselects), Sichten (Views), Trigger und benutzerdefinierte Funktionen.

Funktionen

Die SQLite-Bibliothek lässt sich direkt in entsprechende Anwendungen integrieren, sodass keine weitere Server-Software benötigt wird.

  • Dies ist der entscheidende Unterschied zu anderen Datenbanksystemen.
  • Durch das Einbinden der Bibliothek wird die Anwendung um Datenbankfunktionen erweitert, ohne auf externe Softwarepakete angewiesen zu sein.

Das System ist vor allem für den Einsatz in eingebetteten Datenbanksystemen entworfen, daher fehlen Funktionen wie die Möglichkeit, Objektberechtigungen zu verwalten (GRANT, REVOKE).

  • Für viele Programmiersprachen existieren passende Datenbankschnittstellen.
  • Auch ein in der Konsole und in Shell-Skripten verwendbares, einfaches Frontend ist vorhanden.
  • Mit sqlitebrowser steht ein grafisches Frontend für BSD, macOS, Linux und Windows zur Verfügung.[1]

SQLite hat einige Besonderheiten gegenüber anderen Datenbanken: Die Bibliothek ist nur wenige hundert Kilobyte groß.

  • Eine SQLite-Datenbank besteht aus einer einzigen Datei, die alle Tabellen, Indizes, Views, Trigger usw.
  • enthält.
  • Dies vereinfacht den Austausch zwischen verschiedenen Systemen, sogar zwischen Systemen mit unterschiedlichen Byte-Reihenfolgen.
  • Jede Spalte kann Daten beliebiger Typen enthalten, erst zur Laufzeit wird nötigenfalls konvertiert.

Die gesamte Datenbank befindet sich in einer einzigen Datei, kann aber auch nicht-persistent im Hauptspeicher angelegt werden.[2] Eine Client-Server-Architektur ist nicht vorhanden.

Einige in anderen Datenbanksystemen vorhandene Funktionen fehlen: Schreiboperationen unterschiedlicher Prozesse in derselben Datenbankdatei können nur nacheinander ausgeführt werden.[3] Ab Version 3.2 gibt es den Befehl ALTER TABLE, allerdings mit eingeschränktem Funktionsumfang.

  • Es lassen sich derzeit lediglich Tabellen umbenennen und Spalten zu den Tabellen hinzufügen.
  • Es gibt keine Verwaltung von Benutzer- und Zugriffsberechtigungen auf Datenbank-Ebene, stattdessen gelten für die Datenbank-Dateien die Zugriffsberechtigungen des Dateisystems.

SQLite 🇬🇧 ist eine kleine und sehr leichtgewichtige Implementierung einer SQL-Datenbank.

  • SQLite ist in C geschrieben, es sind aber auch Schnittstellen zu so gut wie allen anderen gängigen (und weniger bekannten) Programmiersprachen verfügbar.

SQLite ist freie Software und wird von großen Open-Source Projekten wie Amarok, Pidgin und Firefox (ab Version 3), aber auch von kleineren Programmen genutzt.

  • Darüber hinaus gibt es eine Reihe von Closed-Source-Projekten, die SQLite einsetzen (wie z. B. 
  • Apples iPhone).

Zu beachten ist, dass SQLite keine vollständige Implementierung des SQL-Standards enthält, aber für die meisten Anwendungsfälle reicht der vorhandene Funktionsumfang völlig aus.

Große bis sehr große Datenmengen (z. B.  Datenbank mit vielen Tabellen und mehreren Tausend oder Hunderttausend Einträgen) können von SQLite verwaltet werden, das Programm wird dann jedoch ziemlich langsam, insbesondere, wenn quasi-parallele Schreibvorgänge benötigt werden.

  • Für diese Anwendungsfälle eignen sich dann die "großen" Datenbanken wie PostgreSQL, MariaDB oder MySQL besser.

Funktionsumfang

Wie oben bereits erwähnt, unterstützt SQLite nicht alle Elemente von SQL, eine Übersicht über die in SQLite enthaltenen Funktionen findet man in der Dokumentation

  • Weitere Informationen findet man auch im Wiki von SQLite (siehe Links).

Installation

# apt install sqlite3

Dokumentation installieren

# apt install sqlite3-doc

Syntax

Parameter

Optionen

Umgebung

Rückgabewert

Konfiguration

Dateien

Anwendung

Benutzung

SQLite bringt von Haus aus "nur" ein Kommandozeilenschnittstelle[2] mit.

Um SQLite zu nutzen, gilt folgende allgemeine Syntax:

sqlite3 [OPTIONEN] DATENBANK [SQL-BEFEHL] 

Die Angabe von Optionen und von SQL-Befehlen ist dabei optional.

  • Existiert die Datenbank DATENBANK nicht, so wird diese automatisch angelegt und geöffnet.
  • Gibt man keinen SQL-Befehl an, so befindet man sich automatisch im interaktiven Modus[3].
  • Eine Übersicht über allgemeine Befehle erhält man mit .help, den interaktiven Modus verlässt man mit .exit.
  • Natürlich kann man im interaktiven Modus auch die unterstützen SQL-Befehle eingeben und ausführen.
  • Zu beachten ist dabei, dass Transaktionen explizit eingeleitet und ausgeführt werden müssen.

Eine Übersicht über die mögliche Startoptionen findet man in den Manpages zu SQLite.

  • Man kann die Optionen auch in der Datei ~/.sqliterc hinterlegen, die SQLite beim Start auswertet.
  • Die Datei wird bei der Installation von SQLite nicht automatisch angelegt, muss also gegebenenfalls von Hand angelegt werden[3].
  • Mehr Informationen hierzu findet man in ebenfalls in den Manpages.

Beispiele

Auslesen einer .sqlite-Datei auf einem Ubuntu Phone, welche unter anderem SMS enthält:

sqlite3 /home/phablet/.local/share/history-service/history.sqlite
SQLite version 3.8.7.4 2014-12-09 01:34:36
Enter ".help" for usage hints.
sqlite> .tables
schema_version          text_events             threads               
text_event_attachments  thread_participants     voice_events 
sqlite> select * from text_events;
ofono/ofono/account0|Netzanbieter|2015-09-21T17:46:12+0200-1|Irgendwer|2015-09-21T15:46:23.000|0|Hier steht eine SMS drin!|0|0|2015-09-21T16:19:13.520|
[...]
sqlite> .quit 

Zunächst ruft man die entsprechende Datenbank auf.

  • Mit .tables kann man darin enthaltene Tabellen auflisten.
  • Um beispielsweise die Tabelle text_events anzuzeigen, ruft man sie wie im Beispiel mit select auf.

Zurückblättern in Befehlen: Bereits benutzte Befehle lassen sich mit ↑ wieder anzeigen und mit ⏎ erneut ausführen.

Grafische Benutzeroberflächen

In den offiziellen Paketquellen findet sich der SQLite Database Browser, der eine grafische Oberfläche zum Anlegen und Editieren von SQLite-Datenbanken bietet.

  • Darüber hinaus können CSV-Dateien im- oder exportiert werden.

Eine plattformübergreifende GUI, die ohne Installation verwendet werden kann, ist SQLiteStudio 🇬🇧.

Daneben existieren noch die webbasierte Oberfläche phpLiteAdmin 🇬🇧, die, wie der Name vermuten lässt, an phpMyAdmin angelehnt ist.

Sicherheit

Dokumentation

Hat man die Dokumentation zu SQLite installiert, so hat man eine recht ausführliche, englischsprachige HTML-Dokumentation bereits auf der Festplatte.

  • Den Einstieg bietet die Seite (Datei) /usr/share/doc/sqlite3-doc/index.html.
  • Unter Links findet man einige weitere Verweise auf weitere SQLite-Dokumentationen.

RFC

Man-Page

Info-Pages

Projekt-Homepage

Links

Siehe auch

Weblinks

  1. http://www.sqlite.org/docs.html 🇬🇧 - sehr umfangreiche Dokumentation
  1. In-Memory Databases, sqlite.org, abgerufen am 21. Oktober 2016.