0.1. Anmeldung am ITG-Datenbankserver
URL: https://pma.gwi.uni-muenchen.de:8888/index.php?server=8 Benutzername: lv_lipp Passwort: qw3rtz16
0.2. Die Oberfläche PMA (Link)
PMA = PhpMyAdmin (PHP-basiertes Webinterface für die Verwaltung von MySQL-Datenbanken)
0.3. Einteilung der Abfragesprache SQL
"Relation" = Tabelle; SQL = "Structured Query Language" = Abfragesprache für Tabellen
- Data Manipulation Language (DML) (Beispiele: SELECT, INSERT, UPDATE, DELETE, ...) (Link)
- Data Definition Language (DDL) (Beispiele: CREATE, ALTER, DROP, TRUNCATE, ...) (Link)
- Data Control Language (DCL) (Beispiele: GRANT, REVOKE)
- Transaction Control (TCL) (Beispiele: COMMIT, ROLLBACK, ...)
0.4. Beispielabfragen (Datenbank LIPP_VDegele)
0.4.1. Einfachste SQL-Statements
-- Einfache Selektion, Projektion, Kommentar SELECT token, wortart, lemma FROM tokens where wortart = 'NN' /* sog. Where-Klausel */ ;
-- Projektion, Korrelatsname, Gruppierung, Sortierung SELECT zname, docnr, group_concat(token order by tokid separator ' ') as satz FROM tokens group by zname, docnr order by zname, docnr ;
-- Gruppierung, Gruppierungsfunktion SELECT zname, wortart, count(*) FROM tokens group by zname, wortart ;
0.4.2. Weitere Beispiele
SELECT zname, token, lemma, count(*) as anzahl FROM tokens where lemma = 'gefühlvoll' group by zname ;
SELECT lemma, count(*) as anzahl FROM tokens group by lemma order by anzahl desc ;
SELECT lemma, count(*) as anzahl FROM tokens where wortart = 'N%' group by lemma order by anzahl desc ;
SELECT token, count(*) as anzahl FROM tokens WHERE token LIKE 'liebe%' group by token order by anzahl desc ;
SELECT zname as Zeitungsname, count(*) as anzahl FROM `quellen` group by zname ;
0.4.3. Tabellen- und Spaltendefinition
Bei der Anlage einer Datenbanktabelle müssen verschiedene Definitionen vorgenommen werden. Dazu gehört natürlich zunächst der Name der Tabelle selbst sowie, im weiteren, die Namen der Spalten der Tabelle. Außerdem muss festgelegt werden, welche Art von Daten (z.B. Zahlen oder Zeichenketten) in einer Spalte gespeichert werden sollen und wie "breit" (gemessen in Bytes) die darin abzulegenden Daten maximal sein werden. Daten, die länger sind als die definierte "Breite" des Feldes werden bei der Eingabe bzw. beim Import in die Tabelle unter Umständen ohne Warnung einfach abgeschnitten!
0.4.4. Datenexport
0.4.5. Komplexe Abfragen
-- Erzeuge Konkordanz -- ACHTUNG: Bei großen Datenbeständen dauert diese Abfrage sehr lang select c.id, c.zname, c.snr, c.vorher, c.token, group_concat(d.token order by d.id separator ' ') nachher, concat_ws(' ', c.vorher, '>>', c.token, '<<', group_concat(d.token order by d.id separator ' ')) fliesstext from ( select group_concat(a.token order by a.id separator ' ') as vorher, b.id, b.zname, b.snr, b.token from tokens a right join ( select id, zname, snr, token from tokens where token like '%' -- HIER SUCHWORT EINTRAGEN collate utf8_general_ci -- and position = 1 -- HIER WEITERE SUCHKRITERIEN ANFUEGEN ) b on (a.snr=b.snr and a.id<b.id) group by b.id, a.snr ) c left join tokens d on (c.snr=d.snr and d.id>c.id) group by c.id, d.snr order by c.token ;
0.4.6. Erzeugung von Triplen
select
a.token, b.token, c.token
from tokens a
join tokens b on (a.id=b.id-1)
join tokens c on (b.id=c.id-1)
;
select
a.wortart, b.wortart, c.wortart
from tokens a
join tokens b on (a.id=b.id-1)
join tokens c on (b.id=c.id-1)
group by a.wortart, b.wortart, c.wortart
order by count(*) desc
-- limit 1000
;