PostgreSQL erweitern

Funktionen zur Datenbearbeitung in PostgreSQL

Brian Piccolo

Sr. Director, Digital Strategy

Benutzerdefinierte Datentypen

Enumerationen

CREATE TYPE dayofweek AS ENUM (
      'Monday', 
      'Tuesday',
      'Wednesday', 
      'Thursday', 
      'Friday', 
      'Saturday', 
      'Sunday'
);
Funktionen zur Datenbearbeitung in PostgreSQL

Informationen über benutzerdefinierte Datentypen erhalten

SELECT typname, typcategory
FROM pg_type
WHERE typname='dayofweek';

+-----------+-------------+ | typname | typcategory | |-----------|-------------| | dayofweek | E | +-----------+-------------+
Funktionen zur Datenbearbeitung in PostgreSQL

Informationen über benutzerdefinierte Datentypen erhalten

SELECT column_name, data_type, udt_name
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name ='film';

+-----------------------------------------------+ | column_name | data_type | udt_name | |-------------|-------------------|-------------| | title | character varying | varchar | | rating | USER-DEFINED | mpaa_rating | +-----------------------------------------------+
Funktionen zur Datenbearbeitung in PostgreSQL

Benutzerdefinierte Funktionen

CREATE FUNCTION squared(i integer) RETURNS integer AS $$
    BEGIN
        RETURN i * i;
    END;
$$ LANGUAGE plpgsql;
SELECT squared(10);

+---------+ | squared | |---------| | 100 | +---------+
Funktionen zur Datenbearbeitung in PostgreSQL

Benutzerdefinierte Funktionen in der Sakila-Datenbank

  • get_customer_balance(customer_id, effective_data): Berechnet den aktuellen ausstehenden Betrag für einen bestimmten Kunden.

  • inventory_held_by_customer(inventory_id): Gibt die customer_id des Kunden aus, der gerade ein bestimmtes Objekt aus dem Inventar ausgeliehen hat, oder null, wenn das Objekt gerade verfügbar ist.

  • inventory_in_stock(inventory_id): Gibt einen booleschen Wert aus, der angibt, ob ein Objekt gerade verfügbar ist.
Funktionen zur Datenbearbeitung in PostgreSQL

Lass uns üben!

Funktionen zur Datenbearbeitung in PostgreSQL

Preparing Video For Download...