====== 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
===== Weitere Infos =====
* [[lehrkraefte:blc:informatik:ffprg2-2023:sqlite|Aus dem Freifach Programmieren]]
* https://kerkour.com/sqlite-for-servers