Title: IN0008_GDB / GDB: Kapitel 4: Relationale Anfragesprachen
On every note of this deck, unless a note says otherwise:
Title: IN0008_GDB::GDB: Kapitel 4: Relationale Anfragesprachen
Logo: tum_logo.png

Front: Was ist der Unterschied zwischen character(n) und char varying(n)
Back: - Zeichenketten vom Typ character immer Größe n
- Abgespeicherte Größe kann bei char varying oder varcharvariieren

Front: Was ist die Bedeutung der Argumente von numeric(p, s)?
Back: - p: Die Gesamtzahl der gespeicherten Stellen
- s: Nachkommastellen

Front: Was ist der Datentyp für Fixkommazahlen in SQL?
Back: numeric(p, s)

Front: Was ist der Datentyp für Gleitkommazahlen in SQL?
Back: float

Front: Was ist der Datentyp für Integers in SQL?
Back: int oder integer

Front: Nenne einen Datentyp für die Abspeicherung von (großen) binären Daten
Back: blob oder raw

Front: Wie kann eine neue Relation in SQL erstellt werden?
Back: create table <NAME>
  ( (<ATTRIBUTE> <TYPE> <INTEGRITY_CONSTRAINT>)+ );
Dabei + für ein, oder mehrere Attribute in der Liste.

Front: Wir wollen zu der Relation Professoren das Attribut Raum, wobei die Raumnummer eine ganze Zahl ist, hinzufügen.
Back: alter table Professoren
    add (Raum integer);
Und in SQL-92:
  alter table Professoren
    add column (Raum integer);

Front: Wie kann der Datentyp eines Attributs einer Relation geändert werden?
Back: alter table <NAME>
    modify (<ATTRIBUTE> <TYPE>);
Und in SQL-92:
  alter table <NAME>
    alter column (<ATTRIBUTE> <TYPE>);

Front: Welche (in der Vorlesung vorgestellte) Aggregatfunktionen gibt es in SQL?
Back: - avg: Bestimmung des Durchschnitts einer Menge von Zahlen
- max und min: Zur Bestimmung des größten bzw. kleinsten Elementes
- sum: Bildung der Summe
- count: Anzahl der Zeilen in einer Tabelle

Front: Was ist bei Verwendung von GROUP BY in der SELECT Klausel zu beachten?
Back: Da in der Ausgaberelation jede Gruppe nur durch ein einzelnes Tupel repräsentiert wird, können in der SELECT-Klausel nur Aggregatfunktionen vorkommen, oder Attribute nach denen gruppiert wurde. Also Attribute, die auch in der GROUP BY Klausel verwendet wurden.

Front: Was ist das Ergebnis von NULL + 1?
Back: NULL

Front: Was ist das Ergebnis von NULL*0?
Back: NULL

Front: SQL hat eine dreiwertige Logik. Nenne alle drei Werte.
Back: true, false, unknown

Front: Was passiert, wenn in einem arithmetischen Ausdruck ein NULL-Wert vorkommt?
Back: Der NULL-Wert wird propagiert, d.h sobald ein Operand NULL ist, wird auch das Ergebnis NULL.

Front: Ergebnis von unknown AND true
Back: unknown

Front: Ergebnis von false OR unknown
Back: unknown

Front: Ergebnis von true OR unknown
Back: true

Front: Wie verändert / löscht man Tupel?
Back: - update [COLUMN] set [VALUE]
- delete [COLUMN]

Front: Wie kann bei einer SELECT anfrage die sortierung bestimmt werden?
Back: - order by [COLUMN]
- mit asc/desc kann die Reihenfolge bestimmt werden
- es können mehrere mit komma getrennte Spalten und Reihenfolgen angegeben werden

Front: Wie können doppelte elemente bei einer Select anfrage ignoriert werden?
Back: mit distinct [COLUMN]

Front: Wie kann eine Tabelle umbenannt werden?
Back: mit "as", z.b. select a, b as AB from C

Front: Was ist die Syntax für eine rekursive Anfrage (rekursive CTE)?
Back: WITH RECURSIVE cte_name (column1, column2, ...) AS (
  -- Nicht rekursiver "seed"
  SELECT column1, column2, ...
  FROM your_table
  WHERE condition
  UNION ALL
  -- Recursives select
  SELECT column1, column2, ...
  FROM cte_name
  WHERE condition
)

Front: Wann terminieren rekursive queries?
Back: Wenn das rekursive Select statement eine leere Tabelle zurückgibt

Front: Wie lassen sich generalisierungen in SQL modellieren?
Back: Mit views. Man erstellt eine View welche mehrere Tabellen Zusammenfasst. Z.b. Professoren -> Angestellte. Professoren erweitern Angestellte und haben einen Fremdschlüssel PersNr.

Front: Was sind CTEs?
Back: Common Table Expressions. Temporäre Tabellen die mit WITH erstellt werden

Front: Welchen Vorteil haben views verglichen mit CTEs?
Back: - Views werden persisted und geindexed -> bessere Performace und Reusability
- Views können updatebar sein

Front: Welchen Sicherheitsvorteil haben views?
Back: Abkapselung von Daten. Die view kann nur Daten enthalten welche für den user relevant sind. Alle anderen sind für den user unsichtbar