SQL ed
http://www.postgresql.org/files/documentation/books/pghandbuch/html/
Grundlagen ed
- alle Datenbanken auflisten
SHOW DATABASES;
- Datenbank auswählen
USE datenbank;
- Tabellen auflisten
SHOW TABLES;
Tabellen editieren ed
neue Tabelle anlegen ed
- einfach
CREATE TABLE tabellenname ( name1 typ1, name2 typ2, ...);
- Standartwert
name typ DEFAULT wert
- Constraints (einfach)
name typ NOT NULL | NULL | UNIQUE | PRIMARY KEY
PRIMARY KEY := UNIQUE + NOT NULL
Tabelle löschen ed
- einfach
DROP TABLE tabellenname;
- alle Abhängigkeiten mit löschen
DROP TABLE tabellenname CASCADE;
- nur löschen, wenn nichts abhängt
DROP TABLE tabellenname RESTRICT;
Tabelle ändern ed
- Tabelle umbenennen
ALTER TABLE alter_tabellenname RENAME TO neuer_tabellenname;
- Spalte hinzufügen
ALTER TABLE tabellenname ADD name typ; ALTER TABLE tabellenname ADD COLUMN name typ;
- Spalte löschen
ALTER TABLE tabellenname DROP [COLUMN] name [CASCADE | RESTRICT];
- Spalte umbenennen
ALTER TABLE tabellenname ALTER [COLUMN] alter_name TO neuer_name;
Daten auslesen (select) ed
einzelne Tabelle ed
- Ausgabe-Spalten wählen
SELECT * FROM tabelle; SELECT spalte1, spalte2,... FROM tabelle; SELECT funktion(spalte)... FROM tabelle;
- sortieren
SELECT ... FROM tabelle ORDER BY spalte [ASC | DESC]; SELECT ... FROM tabelle ORDER BY funktion(spalte) [ASC | DESC];
- Bedingungen
SELECT ... FROM tabelle WHERE bedingung;
- doppelte Einträge entfernen
SELECT DISTINCT ... FROM ....; SELECT DISTINCT ON (ausdruck1, ausdruck2, ...) ... FROM...;
- Zeilennummer einschränken
SELECT ... LIMIT anzahl OFFSET anfang;
- Differenz zwischen selects
select_befehl1 EXCEPT select_befehl2
mehrere Tabellen ed
- ohne JOIN
SELECT * FROM tabell1, tabelle2 WHERE tabelle1.x = tabelle2.y;
- INNER JOIN
SELECT * FROM tabelle1 INNER JOIN tabelle2 ON (tabelle1.x = tabelle2.y);
- OUTER JOIN
SELECT * FROM tabelle1 LEFT OUTER JOIN tabelle2 ON (tabelle1.x = tabelle2.y);
SELECT * FROM tabelle1 RIGHT OUTER JOIN tabelle2 ON (tabelle1.x = tabelle2.y); SELECT * FROM tabelle1 FULL OUTER JOIN tabelle2 ON (tabelle1.x = tabelle2.y);
Alias ed
- Tabellen
SELECT a.x, b.y,... FROM tabelle1 a, tabelle2 b WHERE a.x > b.y;
- Spalten
SELECT f(x) AS y, ... FROM ...;
Aggregatfunktionen ed
Machen aus vielen Ergebnissen eines. Z.B. count, max, min, avg, sum.
Dürfen NICHT im where stehen!
z.B.
SELECT sum(x) FROM tabelle WHERE y > 7;
Unsinn macht dageben
SELECT sum(x), y FROM ...;
Gruppierung und Reihenfolge ed
- Gruppierung
SELECT * FROM tabelle WHERE ... GROUP BY x;
SELECT * FROM tabelle WHERE ... GROUP BY x HAVING sum(y) > 10;
- Reihenfolge
- erst WHERE
- dann GROUP BY
- dann Aggregatfunktionen innerhalb der Gruppen
- dann HAVING
Daten schreiben ed
vorhandere Zeilen ändern ed
UPDATE tabelle SET spalte1 = ausdruck1, ... WHERE bedingung;
neue Zeilen ed
INSERT INTO tabelle (spalte1, spalte2,...) VALUES (wert1, wert2, ...);
Zeilen löschen ed
DELETE FROM tabelle WHERE bedingung;
Views ed
- erzeugen
CREATE VIEW name AS anfrage;
z.B.
CREATE VIEW name AS SELECT * FROM tabelle WHERE...;
- löschen
DROP VIEW name [CASCADE | RESTRICT];