Introduzione al SQL e ai database
-
Upload
maurizio-napolitano -
Category
Documents
-
view
8.164 -
download
2
description
Transcript of 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
Caratteristiche
● Grandi quantitàGrandi quantità● CondivisioneCondivisione● PersistenzaPersistenza● AffidabilitàAffidabilità● Controllo sugli accessi (Controllo sugli accessi (DBADBA))
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)
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|`=============================================='
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
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
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
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
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
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;
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;
Inserire sintassi
INSERT INTO nome_tabella (colonna_1,colonna_2,
... colonna_ n
)VALUES (
valore_1, valore_2, ... valore_n
);
Inserire esempioINSERT INTO Indirizzi ( nome, cognome,
indirizzo, telefono,
compleanno ) VALUES ( 'Gigi', 'Marzullo', 'Via Teulada 66 Roma', '06 1234567',
'1915/03/26' );
CancellareSintassiDELETE FROM nome_tabella [WHERE condizione]
Esempio
DELETE FROM indirizzi;
Mancando una condizione (WHERE)
il comando
SVUOTA LA TABELLA
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';
Modifica sintassiUPDATE nome_tabella SET
colonna_1 = nuovo_valore_1,
colonna_2 = nuovo_valore_2,
...
colonna_n = nuovo_valore_n
[WHERE condizione]
Modifica esempio
UPDATE indirizzi SET
nome='Gigino'
WHERE
cognome='Marzullo';
Interrogare sintassi
SELECT
campo1,campo2,...,campoN
FROM nome_tabella
[[WHERE condizione [ORDER BY campoN]];
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;
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'
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
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