Semplice introduzione ai DBMS e al linguaggio SQL (con attenzione verso pgsql). Ispirato da Appunti di Informatica Libera - http://informaticalibera.net/
1. Database – base di dati
DBMS
DATABASE MANAGEMENT SYSTEM
Sistema di gestione di
base di dati
contenitori che immagazzinano grandi
●
quantità di dati
i dati sono fruibili tramite un sistema
●
di gestione
2. Caratteristiche
Grandi quantità
●
Condivisione
●
Persistenza
●
Affidabilità
●
Controllo sugli accessi (DBA)
●
3. RDBMS
modello RELAZIONE dei database
RELAZIONE (o tabella)
Indirizzi
CAMPO (a attributi della relazione)
|Cognome |Nome |Indirizzo |Telefono |
RECORD (valori)
|Pallino |Pinco |Via Biglie 1|0222,222222 |
.======================================================.
|Indirizzi |
|------------------------------------------------------|
|Cognome |Nome |Indirizzo |Telefono |
|---------------|----------|------------|--------------|
|Pallino |Pinco |Via Biglie 1|0222,222222 |
|Tizi |Tizio |Via Tazi 5 |0555,555555 |
|Cai |Caio |Via Caini 1 |0888,888888 |
|Semproni |Sempronio |Via Sempi 7 |0999,999999 |
`======================================================'
5. Unioni – Intersezioni Differenze
Teoria degli insiemi
.----------------------------------------------------------.
|CODICE|DATA |CARICO|SCARICO|... |DESCRIZIONE |... |
|------|----------|------|-------|----|---------------|----|
|vite40|01/01/1999| 1200| |... |Vite 4 mm |... |
|vite30|01/01/1999| | 800|... |Vite 3 mm |... |
|vite30|02/01/1999| | 1000|... |Vite 3 mm |... |
|vite30|03/01/1999| 2000| |... |Vite 3 mm |... |
|rond50|03/01/1999| | 500|... |Rondella 5 mm |... |
`=========================================================='
Esempio di unione fra Articoli e Movimenti
attraverso il campo Codice
6. Vincoli sui campi
Insieme dei valori ammissibili
●
NULL, NOT NULL, INT, ....
–
Valori univoci
●
CHIAVE PRIMARIA
–
Relazione con altri valori
●
stessa tabella
–
esterni
–
7. SQL
Structured Query Language
linguaggio di gestione per basi di dati relazionali
Convenzioni sul linguaggio:
Comandi scritti maiuscolo
●
non fa differenza se non per i valori dei campi della tabella
Nomi degli oggetti (tabelle, campi ...) sono composti solo da
●
lettere, numeri e underscore (“_”)
Primo carattere del nome deve essere una lettera o
●
underscore
La fine di una istruzione e' data dal punto e virgola o
●
riga vuota
8. 6 azioni – 6 comandi
AZIONE COMANDO
Creare tabelle CREATE TABLE
Eliminare tabelle DROP TABLE
Inserire record INSERT
Interrogare record SELECT
Modificare record UPDATE
Cancellare record DELETE
9. Tipi di dati
Stringhe di caratteri
VARCHAR (dimensioni)
TEXT
I valori vanno dichiarati fra virgolette (Es: 'Nome')
dimensioni => numero di caratteri utilizzabili nella stringhe
Valori numerici
INT
FLOAT
interi e numeri con virgola mobile
Date
DATE
TIME
TIMESTAMP
I valori vanno dichiarati fra virgolette o apici
11. Tabella esempio
CREATE TABLE indirizzi (
id serial PRIMARY KEY,
nome varchar(40) NOT NULL,
cognome varchar(40) NOT NULL,
indirizzo varchar(40) DEFAULT 'sconosciuto',
telefono varchar(40) NOT NULL,
id_comune int references (ammcom.id),
data_nascita date
);
DROP TABLE indirizzi;
15. Operatori di condizione
... WHERE campo OPERATORE valore
Operatori di confronto
> maggiore di
< minore di
= uguale a
!= diverso da
Esempio delete con condizione
DELETE FROM indirizzi WHERE nome = 'Gigi';
19. Interrogare esempi
SELECT * FROM indirizzi;
SELECT nome, cognome FROM indirizzi;
SELECT * FROM indirizzi WHERE
data_nascita >= '1986/03/01';
SELECT nome, cognome FROM indirizzi
WHERE data_nascita >= '1986/03/01'
ORDER BY nome;
20. Operatori logici
AND, OR, NOT, ...
Esempio con SELECT
SELECT nome, cognome FROM indirizzi WHERE
data_nascita >= '1986/03/01'
AND data_nascita <='1986/04/30'
Esempio con DELETE
DELETE FROM indirizzi WHERE nome = 'Gigi'
OR nome='Silvio'
21. Query (select) di unione fra 2 tabelle
S
SELECT indirizzi.nome, ammcom.descrizion
E
FROM indirizzi, ammcom
L
WHERE indirizzi.id_comune = ammcom.id
E
C
id
T
id
descrizion
id_comune
n geometry
cognome
o
nome
m nome
e
. descrizion
indirizzi amm_com
i
n
join
d
i
22. Extra
Funzioni
sono chiamate tramite il comando SELECT
Esempio sintassi per SUM()
SELECT SUM(expression )
FROM tables
WHERE predicates;
Molti DBMS permettono di creare nuovi funzioni attraverso
un linguaggio specifico (SQL Procedural Language)
spesso estendibile
Es: Postgresql offre pgSQL estendibile con R
Trigger
le funzioni possono essere associate ad eventi