Workshop: SQL für HiWis (Zitieren)

Markus Kunzmann


(624 Wörter)

Zielsetzung:
HiWis sollen in der Lage sein, Daten aus einzelnen oder mehreren Tabell der Datenbank abzufragen, ändern (Vorsicht!).

  • Theorie: Aufbau einer relationalen Datenbank
    • Was bedeutet "relational" und warum?
    • Welche Relationen gibt es?
      • 1:1
      • 1:n
      • n:n
    • Aufbau der VerbaAlpina-Datenbank va_xxx
      • relevante Tabellen
      • Workflow: wie durchläuft Information die Datenbank
        • Vorbereitung
          • Anlegen der Stimuli (obligatorisch)
          • Anlegen der Informanten (obligatorisch)
          • Anlegen der Konzepte (optional)
            • `vtbl_stimulus_konzept`
        • Transkription: Erfassung der Äußerungen
          • `aeusserungen` Aeusserung, Klassifizierung, ID_Informant, ID_Stimulus, Erfasst_Am, Tokenisiert
          • `vtbl_aeusserungen_konzept` Äußerung wird mit Konzept verknüpft
        • Tokenisierung
          • Splitten der Aeusserung in Einzeltokens
          • Trennung der lexikalischen von der grammatischen Information, z.B. Artikel, Präposition usw.
        • Typisierung
          • Token → Konzept `vtbl_token_konzept`
          • Token → Morphtyp `vtbl_token_konzept`
          • Morphtyp → Basistyp  `vtbl_morph_basistyp`
          • Morphtyp → Lemmata `vtbl_morph_typ_lemma`
  • Praxis: SQL
    • Was ist die Struktur eine Abfrage/Query in SQL?
      • SELECT <was?>
        FROM <woraus?>
        WHERE <was?> <LIKE, RLIKE> <Bedingung>
        (AND <was?> <LIKE, RLIKE> <Bedingung>)
        (OR <was?> <LIKE, RLIKE> <Bedingung>)
        Bsp.:

        -- Alle Informanten des AIS

        SELECT *
        FROM informanten
        WHERE Erhebung LIKE 'AIS'
        -- Alle Informanten des AIS und ASLEF
        SELECT *
        FROM informanten
        WHERE Erhebung LIKE 'AIS'
        AND Erhebung LIKE 'ASLEF'

        Aufgaben:
        - Alle Crowd-Informanten auswählen, die slawisch als Sprache angegeben haben.
        - Alle deutschsprachigen Informanten ohne Crowd-Informanten.
        - Alle Crowd-Informanten, die sich nicht angemeldet haben.
        - Alle Crowd-Informanten, die sich angemeldet haben. (NOT LIKE)

LIKE vs. RLIKE

    • LIKE  – sucht nach einer Zeichenkette und nur danach
      SELECT  * FROM stimuli WHERE Erhebung like 'ALJA'
Erhebung Karte Nummer Stimulus va_phase Bemerkung
ALJA 151 1 un pré; deux prés 2 2533
ALJA 152 1 un pré long et étroit 4 ist relevant?
ALJA 153 1 un mauvais pré 4 ist relevant?
  • Operator % % – sucht nach einer Zeichenkette im Ganzen: % steht für ein beliebiges Zeichen
    SELECT  * FROM stimuli WHERE Erhebung like '%AL%'
Erhebung Karte Nummer Stimulus va_phase Bemerkung
ALD-I 76 1 la caldaia 1
ALD-II 15 1 l'asilo
ALEPO 2342 (76.1a) 1 La mammella(della vacca) 0
ALF 1 1 abeille 2 2525
ALI 1 1 scheletro 0
ALJA 151 1 un pré; deux prés 2 2533
ALL 1 1 noms officiels des localités
ALP 166 1 pré; prés 2 166_1
ALTR 1 1 Sennhütte 1
VALTS I_8 1 r + Konsonant in Arbeit
VIVALDI 1 1 l'acqua

SELECT * FROM stimuli WHERE Erhebung like '%ALT%'

Erhebung Karte Nummer Stimulus va_phase Bemerkung
ALTR 1 1 Sennhütte 1
VALTS I_8 1 r + Konsonant in Arbeit
  • RLIKE oder REGEXP – sucht nach einer definierten Zeichenkette im ganzen Feld
    SELECT * from stimuli WHERE Erhebung rlike 'ALT'
Erhebung Karte Nummer Stimulus va_phase Bemerkung
ALTR 1 1 Sennhütte 1
VALTS I_8 1 r + Konsonant in Arbeit

gleiches Ergebnis, wie in SELECT * FROM stimuli WHERE Erhebung like '%ALT%'

  • RLIKE oder REGEXP ermöglicht eine exakte Suche nach bestimmten Zeichen, bzw. Gruppen von Zeichen. Hier kommen die sog. regulären Ausdrücke zum Einsatz.
    Unter „regulären Ausdrücken“ (kurz auch: RA, regex oder RE[engl.: Regular Expression]) versteht man ein Verfahren, mit dem man nahezu beliebige Zeichenfolgen beschreiben und suchen bzw. suchen und ersetzen kann.
  • Literale: Zeichen, die für sich selbst stehen: a bezeichnet exakt das Zeichen a
  • Metazeichen: besitzen eine Sonderfunktion:
    • . Der Punkt steht für ein beliebiges Zeichen (Zahl, Buchstabe, Spatium etc.)SELECT * FROM morph_typen where Orth rlike 'bat'
    • \ Der Backslash "maskiert" Zeichen mit Sonderfunktion
    • Alternativen []
      • einzelne Zeichen
        SELECT * FROM
      • Zeichenbereiche

 

 

 

      • JOINS (Verbindung mindestens 2 Tabellen)
        1. Möglichkeit: wenn Spalten, über die ein JOIN gemacht wird, denselben Namen tragen
        • SELECT <was?>
          FROM <woraus?>
          JOIN <was?> USING <gemeinsames Feld>
          WHERE <was?> <LIKE, RLIKE> <Bedingung>
          (AND <was?> <LIKE, RLIKE> <Bedingung>)
          (OR <was?> <LIKE, RLIKE> <Bedingung>)Bsp.:
          --
          SELECT *
          FROM aeusserugen
          JOIN stimuli USING (id_Stimulus)

          WHERE Erhebung LIKE 'AIS'