lehrkraefte:blc:informatik:efi-2023:datenbanken

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).

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

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));
INSERT INTO score (score, userid) VALUES (42, 1);

Wird eine nicht-existente userid angegeben, wird ein Fehler produziert und nichts eingefügt.

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.

https://www.sqlite.org/lang_update.html

UPDATE score SET score=123 WHERE id=18;

https://www.sqlite.org/lang_delete.html

DELETE FROM score WHERE id=18;
echo -e ".dump\n.quit" | sqlite3 demo.sqlite > demo.dump
sqlite3 copy.sqlite < demo.dump
  • lehrkraefte/blc/informatik/efi-2023/datenbanken.txt
  • Last modified: 2024/04/01 20:55
  • by Ivo Blöchliger