====== 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