Abfragen auf einer Tabelle

Abfragen auf einer Tabelle

Querystruktur

Selektion Spalten
Filterung Zeilen
Sortierung Reihenfolge
SELECT ausgabespalten
FROM tabelle
WHERE bedingung
ORDER BY spaltennamen

Selektion, Filterung, Sortierung

SELECT name, vorname, gehalt
FROM mitarbeiter
WHERE oeid=14
ORDER BY gehalt;
SELECT name, vorname, gehalt
FROM mitarbeiter
WHERE oeid=14
ORDER BY gehalt desc;
SELECT *
FROM mitarbeiter;

Ausgabe der gesamten Tabelle, d.h. alle Zeilen und alle Spalten

Berechnete Spalten

SELECT
  name, vorname,
  extract(year FROM eintrittsdatum) 
    AS eintrittsjahr
FROM mitarbeiter
WHERE oeid=14;
SELECT
  name, vorname,
  extract(year FROM current_date) -
    extract(year FROM eintrittsdatum) 
    AS beschaeftigungsjahre
FROM mitarbeiter
WHERE oeid=14;

Zusammengesetzte Bedingung

SELECT
  name, vorname, gehalt
FROM mitarbeiter
WHERE
  gehalt < 35000 AND 
  eintrittsdatum 
    BETWEEN '01.01.2010' AND '31.12.2020';

Nullwerte in Bedingungen

SELECT
  name, vorname, gehalt, bonus
FROM mitarbeiter
WHERE
  bonus=null;

Falsch: Vergleich (=) mit "unbekannt" liefert "weiß ich nicht"

SELECT
  name, vorname, gehalt, bonus
FROM mitarbeiter
WHERE
  bonus is null;
SELECT
  name, vorname, gehalt, bonus
FROM mitarbeiter
WHERE
  not bonus is null;

Rechnen mit Nullwerten

SELECT
  name, gehalt, bonus, 
  gehalt + bonus AS gesamt
FROM mitarbeiter
WHERE oeid=17;
SELECT
  name, gehalt, bonus,
  gehalt +
  CASE
    WHEN bonus is null THEN 0
    ELSE bonus
  END AS gesamt
FROM mitarbeiter
WHERE oeid=17;

Detailreduktion in der Ausgabe

SELECT
  name, oeid,
  CASE
    WHEN gehalt>100000 THEN 'hoch'
    WHEN gehalt>35000 THEN 'mittel'
    ELSE 'niedrig'
  END AS gesamt
FROM mitarbeiter
ORDER BY gehalt;

Limitierung der Zeilenanzahl

SELECT mid, name
FROM MITARBEITER
ORDER BY mid
FETCH FIRST 3 ROWS ONLY;

Eingebaute Dual-Tabelle

SELECT * FROM dual;

Mengenoperationen

  • UNION [ALL]
  • INTERSECT
  • MINUS

UNION 1

T01       T02
SELECT id, name, Vorname
FROM t01
UNION
SELECT id, nachname as name, rufname as vorname
FROM t02;

UNION 2

T01       T02
SELECT name
FROM t01
UNION
SELECT nachname as name
FROM t02;
SELECT name
FROM t01
UNION ALL
SELECT nachname as name
FROM t02;

INTERSECT

T01       T02
SELECT name
FROM t01
INTERSECT
SELECT nachname as name
FROM t02;

MINUS

T01       T02
SELECT name
FROM t01
MINUS
SELECT nachname as name
FROM t02;

Ausgewählte Datumsfunktionen

T10
SELECT * FROM t10 
where ende = to_date('2023/01/17', 'YYYY/MM/DD');
SELECT ende - beginn AS anzahl_tage  FROM t10;
SELECT ende, ende + 2  FROM t10;

Ausgewählte Zeichenkettenfunktionen

T10
SELECT aufgabe || 'a' as a
FROM t10;
SELECT substr(aufgabe, 2, 3) as a
FROM t10;

Länge ermitteln

T10
SELECT length(aufgabe) as l
FROM t10;

Zahlenformatierung

SELECT to_char(123.4, '999D9') as wert FROM dual UNION ALL
SELECT to_char(123.4, '999D99') as wert FROM dual UNION ALL
SELECT to_char(123.4, '9999D99') as wert FROM dual UNION ALL
SELECT to_char(123.4, '0000D99') as wert FROM dual UNION ALL
SELECT to_char(123.4, '9G999G999D99') as wert FROM dual UNION ALL
SELECT to_char(1234567.89, '9G999G999D99') as wert FROM dual;

Playlist - Transformation Stückedauer

SELECT ...
Top Sitemap 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0