Introduzione al SQL e ai database

22
Database – base di dati DBMS DATABASE M ANAGEMENT S YSTEM Sistema di gestione di base di dati contenitori che immagazzinano grandi quantità di dati i dati sono fruibili tramite un sistema di gestione

description

Semplice introduzione ai DBMS e al linguaggio SQL (con attenzione verso pgsql). Ispirato da Appunti di Informatica Libera - http://informaticalibera.net/

Transcript of Introduzione al SQL e ai database

Page 1: Introduzione al SQL e ai database

Database – base di datiDBMS

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

Page 2: Introduzione al SQL e ai database

Caratteristiche

● Grandi quantitàGrandi quantità● CondivisioneCondivisione● PersistenzaPersistenza● AffidabilitàAffidabilità● Controllo sugli accessi (Controllo sugli accessi (DBADBA))

Page 3: Introduzione al SQL e ai database

RDBMSmodello RELAZIONE dei database

.======================================================.|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 |`======================================================'

Indirizzi

|Cognome |Nome |Indirizzo |Telefono |

|Pallino |Pinco |Via Biglie 1|0222,222222 |

RELAZIONE (o tabella)

CAMPO (a attributi della relazione)

RECORD (valori)

Page 4: Introduzione al SQL e ai database

Relazioni collegate.============================================.|Articoli ||--------------------------------------------||Codice|Descrizione |Fornitore1|Fornitore2||------|---------------|----------|----------||vite30|Vite 3 mm | 123| 126||vite40|Vite 4 mm | 126| 127||dado30|Dado 3 mm | 122| 123||dado40|Dado 4 mm | 126| 127||rond50|Rondella 5 mm | 123| 126|`============================================'.==============================================.|Movimenti ||----------------------------------------------||Codice|Data |Carico|Scarico|CodFor|CodCli||------|----------|------|-------|------|------||vite40|01/01/1999| 1200| | 124| ||vite30|01/01/1999| | 800| | 825||vite30|02/01/1999| | 1000| | 954||rond50|03/01/1999| | 500| | 954|`=============================================='

Page 5: Introduzione al SQL e ai database

Unioni – Intersezioni ­ DifferenzeTeoria 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

Page 6: Introduzione al SQL e ai database

Vincoli sui campi● Insieme dei valori ammissibiliInsieme dei valori ammissibili

– NULL, NOT NULL, INT, ....● Valori univociValori univoci

– CHIAVE PRIMARIA● Relazione con altri valori Relazione con altri valori 

– stessa tabella – esterni

Page 7: Introduzione al SQL e ai database

SQLSStructured QQuery LLanguage

linguaggio di gestione per basi di dati relazionali Convenzioni sul linguaggio:Convenzioni sul linguaggio:

●Comandi scritti Comandi scritti maiuscolomaiuscolo 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 ounderscore

●La fine di una istruzione e' data dal punto e virgola o riga vuota

Page 8: Introduzione al SQL e ai database

6 azioni – 6 comandi

AZIONE

Creare tabelle

Eliminare tabelle

Inserire record

Interrogare record

Modificare record

Cancellare record

COMANDO

CREATE TABLE

DROP TABLE

INSERT 

SELECT

UPDATE

DELETE

Page 9: Introduzione al SQL e ai database

Tipi di datiStringhe di caratteri

VARCHAR (dimensioni)TEXT

I valori vanno dichiarati fra virgolette (Es: 'Nome') dimensioni => numero di caratteri utilizzabili nella stringhe

Valori numericiINTFLOAT

interi e numeri con virgola mobileDate

DATETIMETIMESTAMP

I valori vanno dichiarati fra virgolette o apici

Page 10: Introduzione al SQL e ai database

Tabella ­ sintassiCreareCreare

CREATE TABLE nome_tabella (nome_colonna1 TIPO_COLONNA1

VINCOLI_COLONNA1,nome_colonna2 TIPO_COLONNA2

VINCOLI_COLONNA2,....

nome_colonnan TIPO_COLONNA_n VINCOLI_COLONNA_n

);

CancellareCancellare

DROP TABLE nome_tabella;

Page 11: Introduzione al SQL e ai database

Tabella ­ esempio

CREATE TABLE indirizzi (id serial PRIMARY KEY,nomevarchar(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;

Page 12: Introduzione al SQL e ai database

Inserire ­ sintassi

INSERT INTO nome_tabella (colonna_1,colonna_2,

... colonna_ n

)VALUES (

valore_1, valore_2, ... valore_n

);

Page 13: Introduzione al SQL e ai database

Inserire ­ esempioINSERT INTO Indirizzi ( nome, cognome,

indirizzo, telefono,

compleanno ) VALUES ( 'Gigi', 'Marzullo', 'Via Teulada 66 Roma', '06 1234567',

'1915/03/26' );

Page 14: Introduzione al SQL e ai database

CancellareSintassiDELETE FROM nome_tabella [WHERE condizione]

Esempio

DELETE FROM indirizzi;

Mancando una condizione (WHERE)

il comando

SVUOTA LA TABELLA

Page 15: Introduzione al SQL e ai database

Operatori di condizione... WHERE campo OPERATORE valore

Operatori di confronto

> maggiore di < minore di= uguale a != diverso da

Esempio delete con condizioneDELETE FROM indirizzi WHERE nome = 'Gigi';

Page 16: Introduzione al SQL e ai database

Modifica ­ sintassiUPDATE nome_tabella SET

colonna_1 = nuovo_valore_1,

colonna_2 = nuovo_valore_2,

...

colonna_n = nuovo_valore_n

[WHERE condizione]

Page 17: Introduzione al SQL e ai database

Modifica ­ esempio

UPDATE indirizzi SET

nome='Gigino'

WHERE

cognome='Marzullo';

Page 18: Introduzione al SQL e ai database

Interrogare ­ sintassi

SELECT

campo1,campo2,...,campoN

FROM nome_tabella

[[WHERE condizione [ORDER BY campoN]];

Page 19: Introduzione al SQL e ai database

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;

Page 20: Introduzione al SQL e ai database

Operatori logiciAND, OR, NOT, ...

Esempio con SELECTSELECT nome, cognome FROM indirizzi WHEREdata_nascita >= '1986/03/01' AND data_nascita <='1986/04/30'

Esempio con DELETEDELETE FROM indirizzi WHERE nome = 'Gigi'

OR nome='Silvio'

Page 21: Introduzione al SQL e ai database

Query (select) di unione fra 2 tabelleSELECT

nome.indirizzi,

ammcom.descrizion

SELECT indirizzi.nome, ammcom.descrizion FROM indirizzi, ammcom

WHERE indirizzi.id_comune = ammcom.id

nomecognomeid_comune

iddescriziongeometry

indirizzi amm_com

join

nome

descrizion

id

Page 22: Introduzione al SQL e ai database

ExtraFunzioniFunzionisono chiamate tramite il comando SELECT

Esempio sintassi per SUM() SELECT SUM(expression )FROM tablesWHERE predicates;

Molti DBMS permettono di creare nuovi funzioni attraversoun linguaggio specifico (SQL Procedural Language)spesso estendibileEs: Postgresql offre pgSQL estendibile con R

TriggerTriggerle funzioni possono essere associate ad eventi