Introduzione a PostgreSQL
Un po di storia... 1977: all Università di Berkeley nasce progetto INGRES 1986: nasce The POSTGRES Project Leader: Prof. Michael Stonebraker 1989: DBMS Postgres (vers.1) 1990: DBMS Postgres (vers.2) 1991: DBMS Postgres (vers.3) 1993: DBMS Postgres (vers.4) 1994: Andrew Yu and Jolly Chen integrano un interprete SQL in Postgres nasce Postgre95 scritto interamente in ANSI C open source 1996: viene adottato il nome PostgreSQL versione attuale 8.3.7 supporta la maggior parte delle caratteristiche di SQL:2003
PostgreSQL in laboratori DISI DBMS versione installata: 8.3.3 client da riga di comando psql (default) Client grafico: pgadminiii Nome DBMS server: GOADB2009 IP 10.251.153.37 Accesso con utente del gruppo ogni gruppo è proprietario di un database e può accedere solo a questo ATTENZIONE: GOADB2009 non è backuppato!!!
PostgreSQL in rete http://www.postgresql.org/ Sito internazionale http://www.itpug.org/index.it.html Sito Italian PostgreSQL Users Group [in italiano] http://www.psql.it/ Sito Comunità Italiana utenti e sviluppatori PostgreSQL [in italiano] Altro...
PostgreSQL: architettura client-server il server rende disponibili i database che gestisce a tutti gli utenti connessi (tramite i client), in conformità con le autorizzazioni di protezione definite Autorizzazioni d accesso Utente = Login + Password Ogni utente si può connettere solo ai database per cui è autorizzato
PostgreSQL client: PSQL client a riga di comando con funzionalità readline Invocazione: start all programs postgresql 8.3 psql start all programs postgresql 8.3 command prompt + lanciare comando psql -U <USERNAME> Accetta comandi sql (con ; come terminatore) \? HELP on-line
PostgreSQL client:pgadmin III client grafico Invocazione: start all programs postgresql 8.3 pgadmin III N.B.: HELP ON-LINE Useremo prevalentemente questo!
PostgreSQL client:pgadmin III client grafico Visualizzazione ad albero della struttura dei database Menù a comparsa [click tasto destro su un oggetto] per: creare nuovi oggetti, cancellare e modificare oggetti esistenti Area SQL: Per ogni azione richiesta presenta il codice SQL [N.B.: non editabile!] Scheda dettagli Mostra le proprietà dell oggetto selezionato
Usare pgadmin III per... 1. Registrare un server 2. Connettersi ad un server 3. Creare e manipolare oggetti (database schema,tabelle,funzioni,...) in accordo ai privilegi concessi al proprio utente Modalità grafica Tramite SQL da interfaccia pgadmin III query Preferiamo questa: + potente + veloce + controllabile
1) Registrare un server Menù File aggiungi server... oppure click Nome con cui si vuole registrare il server [si consiglia GOADBserver] GOADB2009 10.251.153.37 Scegliere nel menù a tendina template1 utente assegnato pwd assegnata si consiglia di togliere questo check per evitare connessioni non volute
2) Connettersi ad un server Clicckare con il tasto destro sul nome del server a cui connettersi Selezionare connetti nel menù a comparsa Se il nome utente è corretto inserire la password e premere OK, altrimenti Annulla e...[continua]
2) Connettersi ad un server (2) Clicckare con il tasto destro sul nome del server a cui connetersi Selezionare proprieta nel menù a comparsa Inserire il nome utente desiderato e la password Clicckare OK e riesegeuire la procedura precedente
3) Creare un oggetto Modalita grafica: Clicckare col tasto destro sul tipo di oggetto Selezionare nel menù a comparsa Nuovo oggetto In base al livello a cui vi trovate nell albero degli oggetti vi verranno proposte diverse opzioni: selezionare quella di interesse Compilare le schermate che vi vengono proposte
3) Creare un oggetto Modalita SQL: pgadmin III query click Comandi DDL: Definizione schema [completo di vincoli] Comandi DML: Creazione istanza [inserimento dei dati] Aggiornamento tabelle [modifica e cancellazione]
Casi particolari: creazione di un database Modalità grafica Modalità SQL Template encoding nome Proprietario Tablespace nome del database da creare nome del proprietario del database [DEFAULT se il proprietario è l utente che invoca il comando] nome del modello da utilizzare per la creazione del nuovo database [DEFAULT per usare il modello base (template1)] codifica dei caratteri [DEFAULT per utilizzare la codifica utilizzata nel modello base] Nome del tablespace in cui inserire il nuovo database [DEFAULT per usare il template] CREATE DATABASE DBname; N.B: gli utenti gruppoxx NON hanno sufficienti permessi
Casi particolari: creazione di una tabella Inserire nome Dalla scheda colonne definire: Nome attributi tipo di dato valore predefinito possibilità di assumere valori nulli Dalla scheda vincoli definire: chiave primaria chiave esterna vincolo unique vincolo di check Modalità grafica Modalità SQL CREATE TABLE studente ( matricola varchar(8), cognome varchar(30), nome varchar(30), );
Tipi di dato supportati Tipi carattere: permettono di memorizzare informazioni testuali, rappresentate con un set di caratteri stabilito dal sistema (quello della tastiera) Tipi numerici: permettono di memorizzare informazioni numeriche Tipi numerici speciali: per valori ad auto-incremento Tipi temporali: permettono di memorizzare informazioni temporali quali date, istanti di tempo, periodi di tempo Tipi speciali: Booleani Valute monetarie
Tipi di dato carattere Character (n), char(n): dati a lunghezza fissa Character varying (n), varchar(n): dati a lunghezza variabile text: dati a lunghezza variabile Name character varying(n), varchar(n) character(n), char(n) text Description variable-length with limit fixed-length, blank padded variable unlimited length
Tipi di dato numerici Name Storage Size Description Range smallint 2 bytes small-range integer -32768 to +32767 integer 4 bytes usual choice for integer -2147483648 to +2147483647 bigint 8 bytes large-range integer -9223372036854775808 to 9223372036854775807 decimal variable user-specified precision, exact no limit numeric variable user-specified precision, exact no limit real 4 bytes variable-precision, inexact 6 decimal digits precision double precision 8 bytes variable-precision, inexact 15 decimal digits precision
Tipi di dato numerici (2) decimal e numeric sono equivalenti NUMERIC(precision, scale) scale: numero di cifre decimali dopo la virgola (ovvero il punto nella versione inglese) precision: numero totale di cifre che compongono un numero (sia prima che dopo la virgola/punto) NUMERIC(precision) numerico con scala pari a 0 NUMERIC un numerico con precision e scala arbitarie (entro il limite massimo previsto)
Tipi di dato numerici speciali serial & bigserial permettono di generare in modo automatico valori univoci da assegnare ad un campo (molto utile per la gestione delle chiavi primarie numeriche) Esempio: CREATE TABLE tablename (colname SERIAL); Name Storage Size Description Range Serial 4 bytes autoincrementing integer 1 to 2147483647 bigserial 8 bytes large autoincrementing integer 1 to 9223372036854775807 N.B: Viene creata implicitamente una sequenza (che non viene rimossa automaticamente). Il comando precedente è equivalente a: CREATE SEQUENCE tablename_colname_seq; CREATE TABLE tablename (colname integer DEFAULT nextval('tablename_colname_seq'); CREATE UNIQUE INDEX tablename_colname_key on tablename (colname);
Tipi di dato temporali Name Storage Size Description Low Value High Value Resolution timestamp [ (p) ] [ without time zone ] 8 bytes both date and time 4713 BC 5874897 AD 1 microsecond / 14 digits timestamp [ (p) ] with time zone 8 bytes both date and time, with time zone 4713 BC 5874897 AD 1 microsecond / 14 digits interval [ (p) ] 12 bytes time intervals -178000000 years 178000000 years date 4 bytes dates only 4713 BC 5874897 AD 1 day 1 microsecond / 14 digits time [ (p) ] [ without time zone ] 8 bytes times of day only 00:00:00 24:00:00 1 microsecond / 14 digits time [ (p) ] with time zone 12 bytes times of day only, with time zone 00:00:00+1459 24:00:00-1459 1 microsecond / 14 digits
Tipi di dato speciali Boolean: TRUE & FALSE & UNKNOWN Altre codifiche: TRUE: 't, 'true, 'y, 'yes, '1' FALSE 'f, 'false, 'n, 'no, '0 Money Name Storage Size Description Range money 4 bytes currency amount 21474836.48 to +21474836.47
Tipi di dato: altre informazioni Accedere all help on-line di PgAdmin III Nella PostgreSQL 8.3.3 Documentation consultare Chapter 8. Data Types
Esercitazioni di laboratorio MATERIALE Su AulaWeb CREDENZIALI DI ACCESSO A PostgreSQL Account: gruppoxx Password: gruppoxx