# Erweiterte Datentypen in PostgreSQL - Andreas Scherbaum. Arbeitet seit 1998 mit Postgres - Hat nen krassen Blog: andreas.scherbaum.la - Welche Datentypen nutzen wir so? - Datenbank an sich weiß nix über Datentypen. Diese sind nur Extensions - Everything is a star! - Alles ist nichts! - Man kann Datenbanken, Tabellen und Inhalte in non printable whitespace machen. Einfach weils geht - Nicht Money-Type verwenden. - Man kann nur eine Währung speichern, also keine Konvertierung - Je nach Umgebungavariable wird bspw. decimal separator anders interpretiert. - Währungen mit NUMERIC Type speichern. Bis 1000 Stellen Genauigkeit - Arrays. Man kann alles in Arrays packen. Mittlerweile wird mehr JSON für flexible Daten genutzt. - Arrays beginnen bei 1! - JSON(B): JSONB ist das was man haben will, da mehr Funktionen. - JSONB wird beim speichern geparsed. JSON wird beim lesen geparsed, heißt man kann ungültiges JSON abspeichern - Datum in JSONB speichern ist wegen Validierung schlecht. - Composite Types: - Wird auch Row Type oder Record - Datentyp definieren und dann kann man diesen in der Datenbank weiter verwenden. - Besseres Feature als Composite Types: Domains - Ein Datentyp mit zusätzlichen Constraints - Beliebig viele Constraints und man kann den Datentyp in allen Tabellen verwenden. - Sind sehr umfangreich und im SQL Standard integriert. - Chacks kann man in Domain Type auslagern anstatt krasse Funktionen zu schreiben. - Range Types: - Anfang und Ende - Kann man als eigene Typen erstellen - Sinnvoll für Zeitspannen. Man kann wieder Checks drauf laufen lassen - GIST Index darauf bilden. Daraufhin kann man ORDER BY nur über Index scan ausführen lassen -> sehr schnell - Create your own type: - Wie hat PHP Postgres Boolean Typen vor PDO Treiber behandelt? Hat es gar nicht behandelt. Hat alles als Text behandelt. - Deshalb true/false auf Integer umwandeln. Also besser einfach PDO verwenden.