SQLite ist eine C-Bibliothek, die eine SQL-Datenbank-Engine implementiert. Es handelt sich um ein relationales Datenbankmanagementsystem (oder RDBMS). Die meisten SQL-Datenbanken arbeiten mit dem Client/Server-Modell. Nehmen Sie als Beispiel MySQL. Um Daten in eine MySQL-Datenbank einzugeben und von ihr zu erhalten, müssen Sie eine Anfrage an den MySQL-Server senden, der Ihnen beim Empfang die entsprechende Antwort liefert. Im Gegensatz zu MySQL werden SQLite-Datenbanken direkt von der Festplatte aus bedient. Es müssen keine Anfragen an den Server erstellt werden.
Installation
Wir werden unsere Datenbank mit dem sqlite31 Command Line Interface(CLI) bedienen. Wir werden unter der Linux-Plattform arbeiten. sqlite3 CLI für MAC OS und Windows sind identisch, aber aus Gründen der Konsistenz wird empfohlen, Homestead Improved zu installieren – eine leichtgewichtige VM, die in 5 Minuten lauffähig ist und Ihren Computer von zusätzlicher, nicht benötigter Software sauber hält.
Um es auf Homestead Improved (oder einem anderen Debian-basierten Betriebssystem wie Ubuntu) zu installieren, führen Sie Folgendes aus:
sudo apt-get install sqlite3 libsqlite3-dev
Damit wird sqlite3 installiert. Um es auf anderen Plattformen zu installieren, folgen Sie deren offiziellen Anweisungen. Nachdem es installiert ist, können wir die Sitzung starten. Öffnen Sie das Terminal/Befehlszeile und geben Sie den Befehl sqlite3
ein. Sie müssen etwas in der Art sehen:
Die zweite Zeile fordert Sie auf, .help
für Anweisungen einzugeben. Es erscheint eine Eingabeaufforderung, in der Sie einen Befehl eingeben können. Geben Sie also einfach .help
ein. Daraufhin erhalten Sie eine Liste der Meta-Befehle und deren Beschreibungen.
Meta-Befehle
Meta-Befehle werden verwendet, um das Ausgabeformat für Tabellen zu definieren, Datenbanken zu untersuchen und für andere administrative Operationen. Sie beginnen immer mit einem Punkt. Auch .help
ist ein Meta-Befehl. Sie können die Liste durchgehen. Hier sind einige, die häufig nützlich sein werden:
Befehl | Beschreibung |
---|---|
.show | Zeigt aktuelle Einstellungen für verschiedene Parameter an |
.databases | Bietet Datenbanknamen und -dateien an |
.quit | Sqlite3-Programm beenden |
.tables | Aktuelle Tabellen anzeigen |
.schema | Schema der Tabelle anzeigen |
.header | Den Kopf der Ausgabetabelle anzeigen oder ausblenden |
.Modus | Modus für die Ausgabetabelle auswählen |
.dump | Datenbank im SQL-Textformat ausgeben |
Standardbefehle
Lassen Sie uns die Standardbefehle in sqlite3 durchgehen. Meta-Befehle werden ausgegeben, um eine Datenbank zu untersuchen. Standard-SQL-Befehle werden ausgegeben, um auf einer Datenbank zu operieren. Standardbefehle lassen sich in drei Gruppen einteilen:
-
Data Definition Language: Sie stellt die Speicherstruktur und Methoden für den Zugriff auf Daten aus dem Datenbanksystem bereit.
- CREATE
- ALTER
- DROP
-
Data Manipulation Language: Sie ermöglicht es Benutzern, Daten zu manipulieren (hinzufügen/ändern/löschen).
- INSERT
- UPDATE
- DELETE
-
Data Query Language: Sie ermöglicht es, benötigte Daten aus der Datenbank abzurufen.
- SELECT
Anmerkung: SQLite versteht viele weitere Standardbefehle, eine Liste davon können Sie hier nachlesen. Da es sich bei diesem Tutorial um eine Einführung auf Anfängerniveau handelt, werden wir nur die oben genannten Befehle behandeln.
SQLite-Datenbanken sind plattformübergreifende, portable Dateien. Sie können auf verschiedenen Speichermedien gespeichert und über verschiedene Computer hinweg übertragen werden.
Wir werden die Arbeit mit sqlite3 anhand unserer Comment Section-Datenbank lernen. Fast jede Website hat heute einen Kommentarbereich. Um einen Kommentar abzugeben, muss der Benutzer folgende Angaben machen:
- Name
- Website
- Kommentar
Von diesen vier Angaben ist nur die URL der Website optional. Wir müssen auch eine Spalte definieren, die die Kommentare nummeriert. Nennen wir sie post_id.
Wir können die Datentypen der Spalten (Attribute) wie folgt definieren:
Attribut | Datentyp erforderlich |
---|---|
post_id | INTEGER |
Name | TEXT |
TEXT | |
Website_url | TEXT |
Kommentar | TEXT |
Sie können die Dokumentation für verschiedene Datentypen und Speicherklassen in SQLite3 einsehen.
SQLite3 verwendet Manifest Typing2. Die meisten anderen Datenbank-Engines, einschließlich MySQL, verwenden Static Typing.
Nun wollen wir eine Datenbank erstellen. Wenn Sie sich noch im Programm sqlite3 befinden, beenden Sie es durch Eingabe von .quit
an der sqlite-Eingabeaufforderung. Geben Sie dann den Befehl:
sqlite3 comment_section.db
Damit wird eine Datenbankdatei comment_section.db im aktuellen Arbeitsverzeichnis angelegt.
Hinweis: Wenn dem Befehl kein Dateiname folgt, legt sqlite3 automatisch eine temporäre Datenbank an. Das ist das, was passiert, wenn wir den Einzelbefehl sqlite3 zum ersten Mal eingeben.
CREATE TABLE
Um die Kommentare zu speichern, müssen wir eine Tabelle definieren. Wir nennen sie . Um sie zu erstellen, geben Sie folgende Anweisung ein:
CREATE TABLE comments ( post_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL, website_url TEXT NULL, comment TEXT NOT NULL );
NOT NULL
sorgt dafür, dass der jeweilige Wert in einem Datensatz nicht leer bleibt. PRIMARY KEY
3 und AUTOINCREMENT
4 arbeiten das Attribut post_id aus.
Um zu prüfen, ob eine Tabelle erstellt wurde, geben Sie den Meta-Befehl .tables
aus. Es wird der Tabellenname angezeigt .
Hinweis: Um das Schema der Tabelle zu erhalten, geben Sie .schema comments
Nun, da die Tabelle erstellt wurde, müssen wir Daten eingeben.
INSERT ROWS
Angenommen, ein Benutzer hat einen Kommentar mit den Details eingegeben:
Name : Shivam MamgainEmail : [email protected] : shivammg.blogspot.comComment : Great tutorial for beginners.
Um ihn einzufügen, verwenden wir den Befehl INSERT.
INSERT INTO comments ( name, email, website_url, comment )VALUES ( 'Shivam Mamgain', '[email protected]','shivammg.blogspot.com', 'Great tutorial for beginners.' );
Ich habe den Wert für post_id nicht angegeben, obwohl er als NOT NULL
definiert ist. Die Sache ist die, dass es nicht benötigt wird, weil es ein AUTOINCREMENT
Feld ist.
Geben Sie zum Üben einige weitere Zeilen in die Tabelle ein.
SELECT
Wir haben gelernt, Daten in die Tabelle einzufügen. Um Daten abzurufen, verwenden wir den SELECT-Befehl.
SELECT post_id, name, email, website_url, commentFROM comments;
Die obige Anweisung kann auch so geschrieben werden:
SELECT *FROM comments;
Damit werden alle Zeilen aus der Tabelle abgerufen. Die resultierende Tabelle könnte ohne Überschriften und richtige Trennung zwischen den Spalten unübersichtlich aussehen. Um dies zu vermeiden, müssen wir einige Parameter ändern.
Geben Sie .show
Um Spaltenattribute anzuzeigen, geben Sie .headers ON
ein.
Um Zeilen im Spaltenstil anzuzeigen, geben Sie .mode column
ein.
Geben Sie die SELECT-Anweisung erneut ein.
Hinweis: Wählen Sie eine für Sie passende Darstellungsart. Geben Sie .help
ein und suchen Sie nach .mode
. Es werden Ihnen die verschiedenen Werte angezeigt, die .mode
haben kann.
UPDATE
Angenommen, die E-Mail für ‚Shivam Mamgain‘ wurde in ‚[email protected]‘ geändert. Wir müssen die Zeile aktualisieren. Geben Sie die folgende Anweisung aus:
UPDATE commentsSET email = '[email protected]'WHERE name = 'Shivam Mamgain';
Damit wird das E-Mail-Attribut für den Namen ‚Shivam Mamgain‘ in ‚[email protected]‘ geändert.
Hinweis: Das Attribut name ist nicht eindeutig, daher kann die obige Anweisung mehr als eine Zeile betreffen. Für jeden Namen = ‚Shivam Mamgain‘ wird die E-Mail auf ‚[email protected]‘ gesetzt. Um eine bestimmte Zeile zu aktualisieren, verwenden Sie das post_id-Attribut. Es ist als PRIMARY KEY
definiert und wird immer eindeutig sein.
DELETE
Um Zeile(n) aus der Tabelle zu löschen, können wir die WHERE-Bedingung verwenden, genau wie bei UPDATE.
Angenommen, wir müssen eine Zeile mit post_id 9 löschen. Wir können den Befehl eingeben:
DELETE FROM commentsWHERE post_id = 9;
Wir müssen alle Kommentare löschen, die von ‚Bart Simpson‘ und ‚Homer Simpson‘ geschrieben wurden. Wir können die folgende Abfrage ausführen:
DELETE FROM commentsWHERE name = 'Bart Simpson' OR name = 'Homer Simpson';
ALTER
Neue Spalten können einer Tabelle mit ALTER hinzugefügt werden. Im Web benutzen die meisten Leute nicht unbedingt ihren richtigen Namen. Sie arbeiten meist unter einem Alias, einem Benutzernamen. Wir müssen eine Spalte username zu unserer Tabelle hinzufügen. Die folgende Abfrage erfüllt diese Aufgabe:
ALTER TABLE commentsADD COLUMN username TEXT;
Damit wird eine Spalte username in erstellt und ihr Datentyp auf TEXT gesetzt. Der Wert von username für bereits eingefügte Zeilen wird auf NULL gesetzt.
Der ALTER-Befehl wird auch zum Umbenennen von Tabellen verwendet. Ändern wir die Tabelle in
Coms
.
ALTER TABLE commentsRENAME TO Coms;
DROP
Eine Tabelle zu löschen bedeutet, die gesamte Tabelle zu löschen. Die Coms
Tabelle kann mit der folgenden Abfrage gelöscht werden:
DROP TABLE Coms;
Fazit
SQLite3 bietet viele Vorteile gegenüber anderen relationalen Datenbanken. Einige seiner besonderen Eigenschaften können Sie hier nachlesen. Die meisten PHP-Frameworks und viele andere Web-Frameworks wie Django, Ruby on Rails und web2py haben SQLite3 als Standarddatenbank. Da es leichtgewichtig ist, wird es für die lokale Speicherung in Webbrowsern bevorzugt. Es wird auch als Client-Speicher für viele Betriebssysteme verwendet, einschließlich Android und Windows Phone 8. Es ist eine der am weitesten verbreiteten Datenbank-Engines.
In diesem Tutorial haben wir mit einem SQLite-Datenbanksystem interagiert. Es gibt GUI-Anwendungen, mit denen Sie das Gleiche tun können, ohne Befehle lernen zu müssen. Zwei solcher Anwendungen sind der DB Browser für SQLite und SQLiteStudio. Sie können SQL auch online bei SQL Fiddle üben.
Dieser Leitfaden hat die Grundlagen behandelt, um Ihnen den Einstieg in SQLite3 zu ermöglichen. Ich hoffe, es wird Sie dazu verleiten, weiter zu gehen. Sie können es leicht mit PHP integrieren, indem Sie die gängige PDO-Klasse verwenden.
- sqlite version 3
- Manifest Typing hebt viele Beschränkungen für den Typ des Wertes auf, der für ein bestimmtes Feld eingegeben werden kann. So können Sie jeden Wert eines beliebigen Datentyps in eine Spalte eingeben, unabhängig vom deklarierten Typ der Spalte (mit Ausnahme von
INTEGER PRIMARY KEY
). Sie sind nicht einmal verpflichtet, die maximale Größe für Datentypen anzugeben. Nachdem der Benutzer Daten eingegeben hat, ermittelt SQLite die Größe, die er auf der Festplatte benötigen würde. Einen tieferen Einblick erhalten Sie unter Datentypen in SQLite3. - Ein
PRIMARY KEY
kann eine bestimmte Zeile eindeutig definieren. Ein solches Attribut muss immer alsNOT NULL
definiert werden. -
AUTOINCREMENT
setzt das entsprechende Attribut des aktuell eingefügten Datensatzes automatisch auf eine Zahl, die eins plus dem Wert vonAUTOINCREMENT
ist (sofern nicht angegeben).AUTOINCREMENT
definierte Attribute müssen unbedingtINTEGERS
sein.