Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da maiuscole e minuscole, il primo carattere alfabetico, lunico carattere speciale _ Per accedere ad un attributo di una tabella: Nometabella.nomeattributo Esempio: Studente.Cognome, indica lattributo Cognome della tabella Studente Gli operatori aritmetici: +, -, *, / Gli operatori relazionali:, =, =, <> Gli operatori logici: AND, OR, NOT
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL TIPI DI DATI STANDARD Integer, Int Integer (p), Int(p) Smallint Real Character (n), char (n), char Date e Time Float, Float (p) Decimal (p,d), Dec (p,d)
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL TIPI DI DATI DEFINTI DALLUTENTE Create domain consente di dichiarare tipi di dati definiti dallutente, utili per la gestione di alcuni particolari vincoli di integrità. Si usa con la CHECK Esempio Create domain (TSpecializzazione) AS Char(14) Check (values in (biennio, informatica, …) Si crea il tipo, meglio dominio, chiamato TSpecializzazione al quale sono associati 5 diversi valori, gli unici ammessi
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL Creare una tabella e i vincoli di integrità CREATE TABLE nome tabella ( Attributo n1 tipo Attributo n2 tipo ……………….. ………………. );
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL VINCOLI Vincolo per un singolo attributo, danno restrizioni sui valori dellattributo NOT NULL DEFAULT valore attributo (ad esempio: FLAG BIT DEFAULTO 0) CHECK condizione
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL La CHECK può avere delle specifiche: Attributo IN (n1, n2, …) Attributo BETWEEN val1 AND val2 Attributo NOT BETWEEN val1 AND val2 Attributo LIKE espressione; lespressione può contenere i caratteri jolly % e _ Ad esempio la like può essere: %xyz, tutte la parole che terminano per xyz xyz%, tutte le parole che iniziano per xyz %xyz%, tutte le parole che contengono xyz _xyz, tutte le parole di 4 caratteri che terminano per xyz
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL Un esempio CREATE TABLE AZIENDA ( COD CHAR (6) NOT NULL NOMEPRES CHAR (20) NOT NULL FATTURATO INT(9) DEFAULT NUMERODIP INT (5) CHECK (NUMERODIP BETWEEN 5 AND 200) );
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL I vincoli di ennupla danno limiti sui valori di più attributi; si possono impostare: PRIMARY KEY, indica le colonne che costituiscono la chiave primaria UNIQUE, dice che le colonne indicate costituiscono una chiave candidata, non una chiave primaria CHECK, specifica un vincolo che riguarda il valore di più attributi
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL Un esempio CREATE TABLE PIPPO ( COD CHAR (4) PRIMARY KEY COGNOME CHAR (20) NOT NULL NOME CHAR (20) NOT NULL STIPENDIO_LORDO … NOT NULL STIPENDIO_NETTO …. NOT NULL TRATTENUTE … NOT NULL UNIQUE (COGNOME, NOME) CHECK (STIPEDIO_NETTO = STIPENDIO_LORDO – TRATTENUTE) );
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL I vincoli di integrità referenziale si dichiarano con: FOREIGN KEY (attributo1, attributo2, …) REFERENCES nome tabella (attributo1, attributo2, …) Quando la chiave esterna è costituita da una sola colonna si può anche omettere (attributo1, attributo2, …) Qui cè il problema di dire cosa deve accadere quando si manipola una colonna/riga della tabella origine alle corrispondenti colonne/righe della tabella a cui è collegata
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL ON DELETE, permette di dire cosa fare quando si cancella ON UPDATE, permette di dire cosa fare quando si modifica Le possibilità sono: NO ACTION CASCADE SET NULL Un esempio … FOREIGN KEY (Matricola) REFERENCES Studenti (Matricola), ON DELETE SET NULL, ON UPDATE CASCADE
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL Modifica della struttura di una tabella ALTER TABLE, si usa con: ADD nome colonna, tipo [BEFORE nome colonna] per aggiungere una colonna ad una tabella, la BEFORE serve per specificare eventualmente dove inserirla DROP COLUMN nome colonna per cancellare una colonna MODIFY nome colonna per modificare la struttura di una colonna
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL Per eliminare una tabella: DROP La DROP può avere delle clausole per gestire le tabelle collegate: RESTRICT, che non fa cancellare la tabella quando questa è collegata ad altre CASCADE, cancellazione in cascata di tutte le tabelle collegate SET NULL, abblenca i valori delle chiavi interessate
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL Comandi Data Manipolation Language INSERT INTO nome tabella VALUES (…) UPDATE Personale SET Livello = 6 WHERE Matricola = A09 DELETE FROM Personale WHERE Matricola = A45
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL La SELECT Si utilizza per le interrogazioni. SELECT … FROM …. Dopo la select vengono elencati gli attributi che voglio siano visualizzati, l* fa vedere tutte le colonne Il risultato di una select è una tabella Select Cognome, Nome From Studente Select * From Studente
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL Quando specifico le colonne in realtà faccio una PROIEZIONE sulla tabella. La select ha anche la clausola WHERE seguita da una condizione che estrapola le tuple dalla tabella. Select * FROM Studente WHERE Classe = IV A Select Cognome, Nome From Studente WHERE Classe = IVA La WHERE fa la RESTRIZIONE su un atabella
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL La Select ha due predicati: ALL e DISTINCT La ALL indica la richiesta di ottenere come risultato dellinterrogazione tute le righe che soddisfano la/le condizione/i; è impostata di default La DISTINCT fa in modo che le righe duplicate non vengono visualizzate tutte, ma una. Spesso si possono intestare le colonne con la AS SELECT DISTINCT Prov AS Provincia FROM Personale
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL Funzioni di aggregazione COUNT, fa il conteggio SELECT COUNT (*) FROM Personale Restituisce il numero di righe della tabella Personale SELECT COUNT (Livello) FROM Personale Restituisce il numero delle righe della tabella Personale per cui Livello non è vuoto
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL SUM, restituisce la somma SELECT SUM (Stipendio) FROM Personale WHERE Livello = 5 Fa la somma degli stipendi di tutto il personale di livello 5 AVG, restituisce la media SELECT AVG (Stipendio) FROM Personale WHERE Livello = 5 Fa la media degli stipendi di tutto il personale di livello 5
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL Le funzioni MIN e MAX restituiscono rispettivamente il massimo e il mino di colonne