Sqlite
Einfache und doch performante Datenbank (Einsatz für kleinere Webseiten, Apps, Browser): https://www.sqlite.org/
Ein Vorteil ist, dass die Datenbank keinen Server braucht und in einer einzigen Datei gespeichert ist (im Gegensatz zu den meisten anderen Datenbanken).
Spielwiese
Verbindung auf dem ofi.tech-lab.ch Server:
ssh ef cd sqlite-demo sqlite3 demo.sqlite
Default-Einstellungen in der Datei ~/.sqliterc
:
cat ~/.sqliterc
enthält zur Zeit:
.headers on .mode column PRAGMA foreign_keys = ON;
Sqlite-Befehle:
.schema .quit
Tabellen anlegen
https://www.sqlite.org/lang_createtable.html
CREATE TABLE USER (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, password TEXT NOT NULL); CREATE TABLE score (id INTEGER PRIMARY KEY AUTOINCREMENT, userid INT NOT NULL, zeit TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, score INT, FOREIGN KEY(userid) REFERENCES USER(id));
Daten einfügen
INSERT INTO score (score, userid) VALUES (42, 1);
Wird eine nicht-existente userid
angegeben, wird ein Fehler produziert und nichts eingefügt.
Daten abfragen
SELECT * FROM score; SELECT * FROM score ORDER BY score DESC; SELECT * FROM score ORDER BY score DESC LIMIT 3; SELECT username, score FROM USER,score WHERE USER.id=score.userid ORDER BY score DESC; SELECT username, score FROM USER INNER JOIN score ON USER.id=score.userid ORDER BY score DESC;
Hinweis: select … from user,score where …
ist äquivalent zu select … from user inner join score on …
. Je nach Datenbank soll es aber Unterschiede in der Ausführungsgeschwindigkeit geben.
Daten modifizieren
https://www.sqlite.org/lang_update.html
UPDATE score SET score=123 WHERE id=18;
Daten löschen
https://www.sqlite.org/lang_delete.html
DELETE FROM score WHERE id=18;
Backup
echo -e ".dump\n.quit" | sqlite3 demo.sqlite > demo.dump
Restore/Copy
sqlite3 copy.sqlite < demo.dump