Einführung in Postgresql unter Debian Etch (Postgresql V8.1) ############################################################ Frank Habermann Inhalt ------ 1. Installation 2. Verzeichnisse und Konfigurationsdateien 3. Benutzer und Benutzer anlegen 4. Datenbanken anlegen 5. Frontends 6. Schemas 7. Tabellen 8. Spezielle Funktionen 8.1 Auto Inkrement 8.2 Views 8.3 Constraints 8.4 Fremdschlüssel 8.5 Transaktionen 8.6 Funktionen 8.7 Trigger 8.8 Rules 8.9 Large Objects 9. Wo gibts Hilfe 1. Installation --------------- - Debian Grundsystem (in diesem Fall Etch) - Über aptitude die Pakete * postgresql-8.1 * postgresql-client-8.1 installieren. Link: http://www.postgresql.org/docs/8.1/interactive/installation.html 2. Verzeichnisse und Konfigurationsdateien ------------------------------------------ - Konfigurationsdateien liegen in /etc/postgresql/8.1/main - Datenbank liegt in /var/lib/postgresql/8.1/main - pg_hba.conf -> Konfiguration für den Zugriff auf Postgresql - postgresql.conf -> Konfiguration für Postgresql selber (Performancetuning) - vacuum - Aufräumen der Datenbank Link: http://www.postgresql.org/docs/8.1/interactive/runtime-config.html Link: http://www.postgresql.org/docs/8.2/static/routine-vacuuming.html 3. Benutzer und Benutzer anlegen -------------------------------- - Systembenutzer postgres ist Superuser - Superuser kann weitere User und Datenbanken anlegen - Shellbefehle: * createuser -> wichtig für Passwort setzen den Parameter -E und -P verwenden - Über SQL: CREATE USER Link: http://www.postgresql.org/docs/8.1/interactive/user-manag.html 4. Datenbanken anlegen ---------------------- - Shellbefehle * createdb - SQL: CREATE DATABASE - template0 -> Standard Datenbank - template1 -> Standard "Layout" für neue Datenbanken - kann angepasst werden Link: http://www.postgresql.org/docs/8.1/interactive/manage-ag-createdb.html Link: http://www.postgresql.org/docs/8.1/interactive/manage-ag-templatedbs.html 5. Frontends ------------- - WebFrontend: phpPgadmin - http://phppgadmin.sourceforge.net/ - GUI: pgadmin3 - http://www.pgadmin.org/ 6. Schemas ---------- - Gruppierung von Tabellen und anderen Objekten - Standardschema ist public - SQL: CREATE SCHEMA - Systemschema ist pg_catalog Link: http://www.postgresql.org/docs/8.1/interactive/ddl-schemas.html 7. Tabellen ----------- - SQL: CREATE TABLE Link: http://www.postgresql.org/docs/8.1/interactive/sql-createtable.html 8. Spezielle Funktionen ----------------------- 8.1 Auto Inkrement ~~~~~~~~~~~~~~~~~~ - Nennen sich Sequenzen - Flexibel im gebrauch - SQL: CREATE SEQUENCE - Bsp.: CREATE SEQUENCE seq_name; Link: http://www.postgresql.org/docs/current/static/sql-createsequence.html 8.2 Views ~~~~~~~~~ - View auf eine SQL Abfrage - SQL: CREATE VIEW - Bsp.: CREATE VIEW name AS SELECT a,b,c FROM c; Link: http://www.postgresql.org/docs/8.2/static/sql-createview.html 8.3 Constraints ~~~~~~~~~~~~~~~ - Beschränkungen auf Felder - Arten -> CHECK - Prüfen eines Wertes -> NOT NULL - darf nicht NULL sein -> UNIQUE - Feld enthält einzigartige Werte Bsp.: CREATE TABLE test ( a integer UNIQUE, b integer NOT NULL, preis numeric CHECK (preis > 0), d integer, e integer, UNIQUE (d, e) ); Link: http://www.postgresql.org/docs/8.2/static/ddl-constraints.html 8.4 Fremdschlüssel ~~~~~~~~~~~~~~~~~~ - Beziehungen unter Tabellen - SQL: REFERENCES - Bsp.: CREATE TABLE products ( product_no integer PRIMARY KEY, name text, price numeric ); CREATE TABLE orders ( order_id integer PRIMARY KEY, product_no integer REFERENCES products (product_no), quantity integer ); CREATE TABLE t1 ( a integer PRIMARY KEY, b integer, c integer, FOREIGN KEY (b, c) REFERENCES other_table (c1, c2) ); Link: http://www.postgresql.org/docs/8.2/static/ddl-constraints.html 8.5 Transaktionen ~~~~~~~~~~~~~~~~~ - Ausführen mehrere SQL Statements die bei Fehler komplett zurückgespielt werden können - SQL: BEGIN; COMMIT; - Bsp.: BEGIN; UPDATE accounts SET balance = balance + 100.00 WHERE acctnum = 12345; UPDATE accounts SET balance = balance - 100.00 WHERE acctnum = 7534; COMMIT; Link: http://www.postgresql.org/docs/8.2/static/transaction-iso.html 8.6 Funktionen ~~~~~~~~~~~~~~ - Erstellen eigener Funktionen in der Datenbank für Aufgaben - Unterschiedliche Sprachen möglich. Bsp: perl, python... Link: http://www.postgresql.org/docs/8.2/static/sql-createfunction.html 8.7 Trigger ~~~~~~~~~~~ - Funktionen die Beim update,insert,delete auf Tabellen ausgeführt werden können Link: http://www.postgresql.org/docs/8.2/static/trigger-definition.html 8.8 Rules ~~~~~~~~~ - Umschreiben von SQL Abfragen Link: http://www.postgresql.org/docs/8.2/static/rules-update.html 8.9 Large Objects ~~~~~~~~~~~~~~~~~ - Binäre Datenobjekte die gesondert gespeichert werden in der Datenbank Link: http://www.postgresql.org/docs/8.2/static/largeobjects.html 9. Wo gibts Hilfe ----------------- - Bei der Debian Gruppe - Homepage: http://www.postgresql.org - IRC: irc.freenode.net #postgresql #postgresql-de - Mailingliste: http://www.postgres.de/info.whtml#ml - Diverse Bücher Vielen Dank Frank Habermann