SQL-Befehle und -Funktionen

- Abfrage von Tabellen, Spalten und Werten -

Einfaches Select-Statement

 SELECT charname   -- hole Spalte charname
 FROM CHARACTER;   -- aus der Tabelle character

Erklärung
"SELECT column charname FROM table characer and show as table" "Hole aus der Tabelle character die Spalte charname heraus und zeige sie mir als Tabelle."

Gefiltertes Select-Statement

SELECT *
FROM
  numbers
WHERE 
  (NUMBER = 2);

Erklärung
Liefert Werte, die durch "WHERE" gefiltert werden.

Analytische Zusätze zum Select-Befehl

EXPLAIN
SELECT charname
FROM
  CHARACTER;

Erklärung

EXPLAIN ANALYZE
SELECT charname
FROM
  CHARACTER;

Erklärung

SELECT *
FROM
  WORK
WHERE YEAR <= 
  SELECT MIN(YEAR) + 1
  FROM WORK
);

Erklärung
Abfrage 1: Suche den kleinsten Wert aus year und erhöhe ihn um 1. Abfrage 2: Suche alle Werte, deren Wert year kleinergleich dem zuvor ermittelten Wert ist.

- Tabellen erzeugen -

CREATE TABLE numbers (
  NUMBER INTEGER UNIQUE,
  name VARCHAR(32),
  plz CHAR(5)
);
CREATE TABLE
  mastertable AS
  SELECT *
  FROM masterbase.mastertable;

Erklärung
Kopiert eine Tabelle aus einer anderen Datenbank/Tabelle

- Tabellen löschen -

DROP TABLE numbers;

ACHTUNG: Es erfolgt keinerlei Bestätigungsabfrage; es gibt KEINEN Papierkorb

- Werte einfügen -

INSERT INTO numbers
  VALUES (1, 'eins');

Erklärung Fügt den Wert "1" in Spalte number und "eins" in Spalte name ein.
Wenn keine weiteren Angaben gemacht werden, wird immer in die "nächste" Zeile eingefügt.

INSERT INTO numbers
  VALUES (2, 'zwei'),
  VALUES (3, 'drei');

Erklärung Mehrere Werte können über mehrere Zeilen eingefügt werden.

Dies kann auch abgekürzt werden

INSERT INTO numbers
  VALUES
    (2, 'zwei'),
    (3, 'drei');
INSERT INTO numbers (NUMBER)
  VALUES
    (2),
    (3),
    (4);

Erklärung

INSERT INTO numbers
SELECT NUMBER + 10, name
FROM
  numbers;

Erklärung

- Werte sortieren -

SELECT YEAR, title
FROM
  WORK
ORDER BY YEAR DESC, title;

Erklärung Sortiert die Ausgabe.
Es kann nach einer oder mehreren Spalten sortiert werden.
ASC (aufsteigend) ist der Standard.

- Werte aktualisieren -

UPDATE chars
SET description = NULL
WHERE description = '';
SELECT *
FROM
  CHARACTER 
  CROSS JOIN chars
WHERE
  (charname = 'Hans');
 
-- dies entspricht
 
SELECT *
FROM
  CHARACTER, chars
WHERE
  (charname = 'Hans');

Erklärung CROSS JOIN liefert alle möglichen Kombinationen beider Tabellen
Diese Kombinationen können durch WHERE eingeschränkt werden.
Anstelle des CROSS JOIN sollte lieber das INNER JOIN verwendet weden.

SELECT *
FROM
  CHARACTER
  INNER JOIN chars ON (CHARACTER.charname = chars.charname);
 
-- dies entspricht
 
SELECT *
FROM
  CHARACTER
  CROSS JOIN chars
WHERE
  (CHARACTER.charname = chars.charname);
 
-- ABER: enthalten die Tabellen Spalten, die einen identischen Namen haben, so müssen die Spalten über %TABELLE%.%SPALTE% angesprochen werden; besser
 
SELECT *
FROM
  CHARACTER
  INNER JOIN chars USING (charname);
SELECT *
FROM
  numbers
  LEFT OUTER JOIN names ON (names.id = numbers.id);
 
-- Um id nutzbar zu machen, wird USING benutzt; danach existieren names.id, numbers.id und id
 
SELECT *
FROM
  numbers
  LEFT OUTER JOIN names USING id;
 
-- OUTER kann weggelassen werden, jedoch sollte es zugunsten der Lesbarkeit beibehalten werden
SELECT *
FROM
  numbers
  RIGHT OUTER JOIN names ON (names.id = numbers.id);
SELECT *
FROM
  numbers
  FULL OUTER JOIN names ON (names.id = numbers.id);
SELECT COUNT(*)
FROM
  CHARACTER;

Erklärung COUNT(*) liefert alle Zeilen

SELECT COUNT(description)
FROM
  character;

COUNT(description) liefert alle Zeilen, bei denen description NOT NULL sind.

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information