SQL Anfragen Flashcards

(47 cards)

1
Q

Generelle Form von Anfragen

A
select A1, ..., An
from R1, ..., Rn
where P
A = Attribute
R = Relationen
P = Prädikat
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Anfrage “select A from R1, R2 where P” in Relationenalgebra

A

pi A (sigma P (R1 x R2))

  • > Kreuzen von Relationen R1 & R2
  • > Selektion auf Prädikat
  • > Ausgeben von bestimmtem Attribut
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Formuliereung für Prädikatzeile “where”

A

where prädikatname = “prädikat”;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Ausgeben von allen Tabellenspalten

A

select *

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Ist Ausgabe ohne Projektion möglich? Wie?

A

Über “select A from R;”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Limitierung der Selektion ohne Projektion

A

select A from R limit n;

wobei n = Anzahl d. ausgegebenen Zeilen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Limitierung der Stringlänge eines Attributs einer Selektion ohne Projektion

A
select substring (attributname, n, j) from R;
wobei n = beginnendes Zeichen (ab 1) und j = Länge d. Substring
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Sortieren der Ausgabe einer Selektion ohne Projektion (+Reihenfolge umkehren)

A

select A1, A2 from R order by A1;

select A1, A2 from R oder by A1 desc;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Kreuzprodukt zweier ganzer Tabellen

A

select * from R1, R2;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Selektion des Kreuzproduktes zweier Tabellen auf identische Attribute

A

select * from R1, R2

where R1.attributname = R1.attributname;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Auf mehrere Prädikate filtern

A

select A
from R1, R2
where P1 and P2;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was muss beim Joinen mehrer Tabbellen gemacht werden?

A

Bei n Tabellen muss auf n-1 identische Attribute selektiert werden (Verknüpfung in Prädikat mit “and”)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Join über Befehl “join … using …”? Was ist Vorraussetzung?

A

select A
from R1 join R2
using (attributname);
Vorraussetzung: attributname ist identisch

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Join über Befehl “natural join”?

A

select A

from R1 natural join R2

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was macht natural join? Vorraussetzung?

A

Joint Tabellen anhand von identischem Attribut

Vorraussetzung: attributname ist identisch

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Gleichheiten von Prädikaten überprüfen

A

über = / > / >=

auch bei Strings

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Boolsches Vergleichen von Prädikaten

A

über not / or / and

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Komplexe Textvergleiche von Prädikaten

A

über like / regexp

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Verwendung von “not”: Wie notiert?

A
where not (attributname = "attribut")
Geht auch mit > oder < oder <= oder like etc.
20
Q

Welche Ähnlichkeiten bei String-Vergleich mit “like” müssen gegeben sein/welchw Unterschiede darf es geben?

A

a like b
Wenn b “_” enthält kann a irgend ein Zeichen der gleichen länge enthalten
Wenn b “%” enthält kann a beliebig lange Zeichenkette enthalten

21
Q

Zeilenweise Anwendung von Funktionen (als Relationenalgebra)

A

zetta(erstes Zeichen von(A1), Länge(A2), Länge(A3)) (Relation)

22
Q

Zeilenweise Anwendung in SQL

A
select substring (attributname, n, j), length(attributname) + length(attributname)
from R;
23
Q

Mögliche Operatoren für Zeilenweise Anwendungen in SQL (mglw. nachschlagen)

A
Addition/Subtraktion + / -
Absolutbetrag einer Zahl abs
Sinus einer Zahl sin
Länge d. Strings length
Verkettung v. Strings concat
substring
24
Q

Wofür werden Aggregate genutzt?

A

Ausagen über Anzahl von Zeilen in einer bestimmten Spalte

25
Grundform der Aggregatsfunktion?
select aggregatsfunktion (spaltenname/n) from R where P;
26
Aggregatsfunktion: Durchschnitt d. Attributs a
avg(a)
27
Aggregatsfunktion: Anzahl d. Attributs a
count(a)
28
Aggregatsfunktion: Anzahl unterschiedliche Zeilen d. Attributs a
count(distinct a)
29
Aggregatsfunktion: Maximum & Minimum
max(a), min(a)
30
Aggregatsfunktion: Standardabweichung d. Attributs a
std(a), stddev(a)
31
Aggregatsfunktion: Summe v. Attribut a
sum(a)
32
Was kann nach der Aggregatsfunktion stehen um Spalte zu differenzieren?
Attribut -> attributname Ausdrücke z.B. length (attributname) Wenn 1 Aggregat steht können nur Aggregate folgen
33
Gruppieren v. Aggregatsfunktionen: Was?
Ausgabe soll nicht für 1 bestimmte Entität sein, sondern mehrere (durch Prädikat beschriebene) Entitäten
34
Generelle Form von gruppierten Aggregatsfunktionen
select attributname1, attributname2, aggregatsfunktion (spaltenname/n) from R where P group by attributname1, attributname2;
35
Einschränken der Ausgabe einer Aggregatsfunktion: Problem & Lösung?
Geht nicht mit "where", da "where" vor Aggregatsfunktion durchgeführt wird Lösung: mit "having"
36
Generelle Form von gruppierter & eingeschränkter Aggregatsfunktion
``` select attributname1, aggregatsfunktion (spaltenname/n) from R where P1 group by attributname1 having P2; ```
37
Unteranfragen als Tabellen Grundform
nach "from": (select . . .) as tabellenname wobei . . . ein beliebig komplizierter Ausdruck sein kann
38
Tabellenspalten in Unteranfragen neu benennen
``` über "as": select aggregatsfunktion (neuername) from (select attributname, aggregatsfunktion (attributname) as neuername from tabellenname) group by attributname as tabellenname; ```
39
Was macht Befehl "as", wo kann er verwendet werden?
Gibt Tabellen oder Tabellenspalten (Attributen) neue Namen: | immer nach "select" oder "from"
40
Unteranfragen als Wert Grundform
nach "from": (select . . .) wobei . . . ein beliebig komplizierter Ausdruck sein kann
41
Was ist Vorraussetzung für Unteranfrage als Wert? Wo können Werte verwendet werden?
``` Ausdruck in (select . . .) muss Tabelle mit genau 1 Zeile und 1 Spalte ausgeben Verwendung an allen Stellen in Anfrage, an denen einfacher Wert stehen kann ```
42
Unteranfragen als Quantile Grundform
nach "where": | where attributname in (select . . .)
43
Wann wird Anfrage der Quantile wahr?
wenn mindestens eine Zeile d. neuen Tabelle mit dem Statement links von "in" übereinstimmt
44
Quantile bei denen nach Ungleichheit verglichen wird
"= any" -> Gleichheit Ungleichheit: , >= any
45
Quantile bei denen alle Zeilen d. neuen Tabelle mit dem Statement übereinstimmen müssen
, >= all
46
Quantile bei denen auf Gegensatz verglichen wird
<> any not all <> all
47
Prüfen ob Unteranfrage leer ist oder nicht
exists ( select . . .)