Meine Fragen zu SQL

Laura123

Neuer Benutzer
Beiträge
3
Hallo,
ich beschäftige mich gerade mit SQL und komme im Moment nicht weiter.
Ich würde mich über Hilfe eurerseits sehr freuen.

1) Wozu ist der Befehl ON da?
2) Wozu ist der Befehl USING da?
3) Wann benutzt man WHERE, ON und USING?
4) Wird GROUP BA nur bei Aggregatfunktionen verwendet?
5) Wozu ist der Befehl COALESCE da?
6) Wozu ist der Befehl SET da?
7) Wozu ist der Befehl IN da?
8) Wozu ist der Befehl UNION da?
9) Wozu ist der Befehl ANY da?
10) Wozu ist der Befehl ARE da?
11) Wann benutzt man HAVING?
12) Wozu ist der Befehl WHEN da?
13) Wozu ist der Befehl THEN da?



Vielen Dank im Voraus :)
 
Werbung:
Hallo,
ich beschäftige mich gerade mit SQL und komme im Moment nicht weiter.
Ich würde mich über Hilfe eurerseits sehr freuen.

1) Wozu ist der Befehl ON da?
2) Wozu ist der Befehl USING da?
3) Wann benutzt man WHERE, ON und USING?
4) Wird GROUP BA nur bei Aggregatfunktionen verwendet?
5) Wozu ist der Befehl COALESCE da?
6) Wozu ist der Befehl SET da?
7) Wozu ist der Befehl IN da?
8) Wozu ist der Befehl UNION da?
9) Wozu ist der Befehl ANY da?
10) Wozu ist der Befehl ARE da?
11) Wann benutzt man HAVING?
12) Wozu ist der Befehl WHEN da?
13) Wozu ist der Befehl THEN da?



Vielen Dank im Voraus :)

Du hast PostgreSQL. Nutze es! Deine Fragen werden eigentlich alle beantwortet, wenn Du in psql die Hilfe zu z.B. SELECT oder DELETE aufrufst:

Code:
test=# \h select
Anweisung:  SELECT
Beschreibung: liest Zeilen aus einer Tabelle oder Sicht
Syntax:
[ WITH [ RECURSIVE ] With-Anfrage [, ...] ]
SELECT [ ALL | DISTINCT [ ON ( Ausdruck [, ...] ) ] ]
  [ * | Ausdruck [ [ AS ] Ausgabename ] [, ...] ]
  [ FROM From-Element [, ...] ]
  [ WHERE Bedingung ]
  [ GROUP BY Gruppierelement [, ...] ]
  [ HAVING Bedingung [, ...] ]
  [ WINDOW Fenstername AS ( Fensterdefinition ) [, ...] ]
  [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] Select ]
  [ ORDER BY Ausdruck [ ASC | DESC | USING Operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
  [ LIMIT { Anzahl | ALL } ]
  [ OFFSET Start [ ROW | ROWS ] ]
  [ FETCH { FIRST | NEXT } [ Anzahl ] { ROW | ROWS } ONLY ]
  [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF Tabellenname [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]

wobei From-Element Folgendes sein kann:

  [ ONLY ] Tabellenname [ * ] [ [ AS ] Alias [ ( Spaltenalias [, ...] ) ] ]
  [ TABLESAMPLE Stichprobenmethode ( Argument [, ...] ) [ REPEATABLE ( Startwert ) ] ]
  [ LATERAL ] ( Select ) [ AS ] Alias [ ( Spaltenalias [, ...] ) ]
  With-Anfragename [ [ AS ] Alias [ ( Spaltenalias [, ...] ) ] ]
  [ LATERAL ] Funktionsname ( [ Argument [, ...] ] )
  [ WITH ORDINALITY ] [ [ AS ] Alias [ ( Spaltenalias [, ...] ) ] ]
  [ LATERAL ] Funktionsname ( [ Argument [, ...] ] ) [ AS ] Alias ( Spaltendefinition [, ...] )
  [ LATERAL ] Funktionsname ( [ Argument [, ...] ] ) AS ( Spaltendefinition [, ...] )
  [ LATERAL ] ROWS FROM( Funktionsname ( [ Argument [, ...] ] ) [ AS ( Spaltendefinition [, ...] ) ] [, ...] )
  [ WITH ORDINALITY ] [ [ AS ] Alias [ ( Spaltenalias [, ...] ) ] ]
  From-Element [ NATURAL ] Verbundtyp From-Element [ ON Verbundbedingung | USING ( Verbundspalte [, ...] ) ]

und Gruppierelement eins der folgenden sein kann:

  ( )
  Ausdruck
  ( Ausdruck [, ...] )
  ROLLUP ( { Ausdruck | ( Ausdruck [, ...] ) } [, ...] )
  CUBE ( { Ausdruck | ( Ausdruck [, ...] ) } [, ...] )
  GROUPING SETS ( Gruppierelement [, ...] )

und With-Anfrage ist:

  With-Anfragename [ ( Spaltenname [, ...] ) ] AS ( Select | values | insert | update | delete )

TABLE [ ONLY ] Tabellenname [ * ]

test=#
test=# \h delete
Anweisung:  DELETE
Beschreibung: löscht Zeilen einer Tabelle
Syntax:
[ WITH [ RECURSIVE ] With-Anfrage [, ...] ]
DELETE FROM [ ONLY ] Tabellenname [ * ] [ [ AS ] Alias ]
  [ USING Using-Liste ]
  [ WHERE Bedingung | WHERE CURRENT OF Cursor-Name ]
  [ RETURNING * | Ausgabeausdruck [ [ AS ] Ausgabename ] [, ...] ]

test=#

coalesce() ist eine Funktion, die den ersten Nicht-NULL-Wert liefert. WHEN un dTHEN brauchst Du für konditionale Entscheidungen.

Dir die ganze Doku hier vorzulesen hab ich keinen Bock. Lies die Doku doch bitte selber, sie ist sehr ausführlich.
PostgreSQL: Documentation: 9.6: PostgreSQL 9.6.2 Documentation
 
Ich habe mich schon informiert, allerdings verstehe ich nicht die Bedeutungen. Vielleicht könntet ihr mir das verständlicher erklären.


Using= In Kürze, verwenden Sie ON für die meisten Dinge, aber USING ist eine praktische Kurzschrift für die Situation, wo die Spaltennamen die gleichen sind.

in = Mit dem IN-Operator können Sie mehrere Werte in einer WHERE-Klausel angeben.Der IN-Operator ist eine Kurzschrift für mehrere OR-Bedingungen.

Union = Der UNION-Operator wird verwendet, um die Ergebnismenge von zwei oder mehr SELECT-Anweisungen zu kombinieren.Jede SELECT-Anweisung innerhalb der UNION muss die gleiche Anzahl von Spalten habenDie Spalten müssen auch ähnliche Datentypen haben. Die Spalten in jeder SELECT-Anweisung müssen auch in der gleichen Reihenfolge sein.

Any = Wenn mehr als eine Ergebniszeile in einem Subselect vorhanden sein können, muss statt dem Gleichheitszeichen eine andere Operation wie IN, ALL, ANY oder EXISTS verwendet werden.
Die ANY- und ALL-Operatoren werden mit einer WHERE- oder HAVING-Klausel verwendet.
 
Werbung:
Ich habe mich schon informiert, allerdings verstehe ich nicht die Bedeutungen. Vielleicht könntet ihr mir das verständlicher erklären.


Using= In Kürze, verwenden Sie ON für die meisten Dinge, aber USING ist eine praktische Kurzschrift für die Situation, wo die Spaltennamen die gleichen sind.

in = Mit dem IN-Operator können Sie mehrere Werte in einer WHERE-Klausel angeben.Der IN-Operator ist eine Kurzschrift für mehrere OR-Bedingungen.

Union = Der UNION-Operator wird verwendet, um die Ergebnismenge von zwei oder mehr SELECT-Anweisungen zu kombinieren.Jede SELECT-Anweisung innerhalb der UNION muss die gleiche Anzahl von Spalten habenDie Spalten müssen auch ähnliche Datentypen haben. Die Spalten in jeder SELECT-Anweisung müssen auch in der gleichen Reihenfolge sein.

Any = Wenn mehr als eine Ergebniszeile in einem Subselect vorhanden sein können, muss statt dem Gleichheitszeichen eine andere Operation wie IN, ALL, ANY oder EXISTS verwendet werden.
Die ANY- und ALL-Operatoren werden mit einer WHERE- oder HAVING-Klausel verwendet.

using:
Code:
test=*# create table master(id int primary key);
CREATE TABLE
test=*# create table detail (id int references master);
CREATE TABLE
test=*# select * from master left join detail on master.id=detail.id;
 id | id
----+----
(0 Zeilen)
test=*# select * from master left join detail using (id);
 id
----
(0 Zeilen)

test=*#

in:
Code:
test=*# select * from master where id = 1 or id = 2 or id = 3;
 id
----
(0 Zeilen)

test=*# select * from master where id in (1,2,3);
 id
----
(0 Zeilen)

union:
Code:
test=*# create table demo1 as select s, random() from generate_series(1,5) s;
SELECT 5
test=*# create table demo2 as select r, random() from generate_series(10,15) r;
SELECT 6
test=*# select * from demo1 union all select * from demo2;
 s  |  random   
----+-------------------
  1 |  0.50024684984237
  2 | 0.334895689506084
  3 | 0.588207213208079
  4 | 0.359569872263819
  5 |  0.1039301995188
 10 | 0.191629528999329
 11 |  0.42248508753255
 12 | 0.471251492388546
 13 | 0.662427303381264
 14 | 0.188919430132955
 15 | 0.436593872494996
(11 Zeilen)

test=*#


für any fällt mir grad kein sonderlich sinnvolles Beispiel ein...
Code:
test=*# create table artikel (id int primary key, name text);
CREATE TABLE
test=*# create table bestellungen (id int , artikel int references artikel);
CREATE TABLE
test=*# insert into artikel select s, 'artikel ' || s::text from generate_series(1, 100) s;
INSERT 0 100
test=*# insert into bestellungen (id, artikel) select x, (random()*99)::int+1 from generate_series(1, 20) x;
INSERT 0 20
test=*# select * from artikel where id = any (select artikel from bestellungen );
 id |  name   
----+------------
 18 | artikel 18
 31 | artikel 31
 33 | artikel 33
 34 | artikel 34
 36 | artikel 36
 41 | artikel 41
 42 | artikel 42
 44 | artikel 44
 56 | artikel 56
 58 | artikel 58
 59 | artikel 59
 64 | artikel 64
 65 | artikel 65
 69 | artikel 69
 77 | artikel 77
 79 | artikel 79
 83 | artikel 83
 84 | artikel 84
(18 Zeilen)

test=*#

spiel doch einfach selber mal mit solchen Abfragen, das tut nicht weh...
 
Zurück
Oben