< < Vorheriger Beitrag

Arbeiten mit der Datenbank (ITG/slu)




0.1. Anmeldung am ITG-Datenbankserver

URL: https://pma.gwi.uni-muenchen.de:8888/index.php?server=8
Benutzername: lv_lipp
Passwort: qw3rtz16

PMA = PhpMyAdmin (PHP-basiertes Webinterface für die Verwaltung von MySQL-Datenbanken)

N:SharesWebDHLehrehtml/wp content/uploads/2015/07/1437736644 Pma Logo

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
;
 
< < Vorheriger Beitrag

Schreibe einen Kommentar