PostgreSQL ---------- Trainer: Holger Jakobs ______________________________________________________________________________________ PostgreSQL User: Zalando, Flightaware ______________________________________________________________________________________ FILES & LOCATIONS ================= /etc/postgresql /etc/postgresql/10/main /var/lib/postgresql/10/main /etc/postgresql/10/main/postgresql.conf ______________________________________________________________________________________ 3 DATENBANKEN ============= - postgres - template0 - template1 1 BENUTZER ========== - postgres UNIX USER ========= - postg ______________________________________________________________________________________ - PostgreSQL immer "folding to lower case" (im Gegensatz zu Oracle, folding to upper case) - psql funktioniert generell mit auto-commit (Transaktionen mit "BEGIN" starten, am Ende "COMMIT" oder "ROLLBACK") ______________________________________________________________________________________ set search_path s1, s2, s3; show search_path ______________________________________________________________________________________ SQL BEISPIELE ============= create database... create role... create schema s1; drop schema s1; create type farbe as enum ('rot', 'grün', 'gelb', 'blau'); select current_time; select current_date + 1; select cast('03.09.2018' as date) + 4; select cast('2018-09-03' as date); select current_time, cast (current_time as time(3)); select current_time, cast (current_time as time(3)), current_timestamp; select current_timestamp + '1 day'; select current_timestamp + '2 years'; select current_timestamp + '2 years -5 days +5 seconds'; select '2018-10-05 10:00+02'::timestamp + '31 days'; select '2018-10-27 23:00+02'::timestamptz + '6 hours'; ______________________________________________________________________________________ ps -ef | grep postgres ______________________________________________________________________________________ psql psql -E -> zeigt auch die im Hintergrund ablaufenden SQL-Statements an \c -> Connect \d -> Liste aller Tabellen (Relationen) \df+ -> Liste aller Funktionen (erweitert) \dn -> Liste aller Schemas \dn+ -> Liste aller Schemas (erweitert) \dT+ -> Liste aller Types (erweitert) \e -> Select standard Editor \h -> Help (Ende mit ) \h create table \i -> SQL Script ausführen \l -> Anzeige aller Datenbanken \q -> QUIT \x -> Anzeige vertikal statt horizontal ______________________________________________________________________________________ SICHERHEITSHÜRDEN ================= - Netzwerkverbindung - Firewall Port 5432 - Account mit Authentication - Connect-Recht an der DB (mit der ich mich verbinden will) - Usage-Recht am Schema - Select-Recht an Tabellen, Views etc... - Bei Bedarf: Recht an Spalten, Zeilen (Row-Level Security) ______________________________________________________________________________________ DATENTYPEN ========== Standard -------- + Binär - BOOLEAN + Numerisch + Ganzzahlig - INTEGER (32 bit) - BIGINT (64 bit) - SMALLINT (16 bit) + Ungenaue Zahlen (niemals für Geldberechnung benutzen!!!) - FLOAT - REAL - DOUBLE PRECISION + Genaue Zahlen - NUMERIC - DECIMAL - MONEY (nicht empfohlen) + ZEICHEN (alle Unicode-fähig bei Codierung UTF-8) - CHAR, CHAR(1), CHAR(100) (blank padded) - VARCHAR, VARCHAR(100) (max. 1GB) - TEXT (1GB) (kein ANSI-Standard) + Datum & Zeit (ISO8601, Bsp.: 1965-06-24) - DATE (Tagesdatum, nicht wie bei Oracle) - TIME (Reine Uhrzeit mit Zeitzone, bis Micro-Sekunde, 6 Nachkommastellen) - TIME WITH TIME ZONE - TIMETZ - TIMESTAMP - TIMESTAMPTZ - INTERVAL (Dauer, Zeitabschnitt) Non Standard ------------ + Binär - BYTEA ("Byte-Area", binäre Bytefolge, I/O in Hex) - BIT (Bit String, muss mit exakter Länge behandelt werden!) - BIT VARYING (Variabler Bit String) + Numerisch - SERIAL - BIGSERIAL - SMALLSERIAL + Zeichen - ENUM (Enumerated) - UUID - XML - JSON - JSONB (binary, Index auf Dokumentteile möglich) - ARRAY + Geometrisch (2D) - POINT - LINE - CIRCLE + Netzwerk (IPV4+IPV6) - INET (IP-Adresse) - MACADDR (MAC-Adresse) + Volltext-Suche - TSVECTOR - TSQUERY + Range Types + Composite Types ______________________________________________________________________________________ pg_dump -> dump database