Basi di Dati

Click here to load reader

  • date post

    04-Jan-2016
  • Category

    Documents

  • view

    22
  • download

    1

Embed Size (px)

description

Basi di Dati. SQL-92 Dettagli e Approfondimenti. versione 2.0. Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina). DDL: Tabelle valori di default vincoli di riferimento modifiche allo schema DDL: Viste definizione e uso DDL: Indici - PowerPoint PPT Presentation

Transcript of Basi di Dati

  • Basi di DatiSQL-92Dettagli e Approfondimentiversione 2.0Questo lavoro concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

    G. Mecca - [email protected] - Basi di Dati

  • Dettagli e ApprofondimentiDDL: Tabellevalori di defaultvincoli di riferimentomodifiche allo schema DDL: Vistedefinizione e usoDDL: IndiciDCLutentiautorizzazionischemi esterniDML: AggiornamentiinserimentiDML: Interrogazionioperatori insiemisticiSELECT: espressioniFROM: joinWHERE: op. likeSQL-92 >> Sommario

    G. Mecca - [email protected] - Basi di Dati

  • SQLSQL-92 IntermediateDDLData Definition Languagedefinizione degli oggetti dello schemaCREATE DATABASEDROP DATABASECREATE TABLEDROP TABLESQL-92 >> Dettagli e Approdondimenti

    G. Mecca - [email protected] - Basi di Dati

  • SQLDCLData Control Languageutenti e autorizzazioniDMLData Manipulation Languageinterrogazioni e aggiornamentiINSERT, DELETE, UPDATESELECTSQL-92 >> Dettagli e Approdondimenti

    G. Mecca - [email protected] - Basi di Dati

  • DDL: TabelleCreazioneCREATE TABLE ();

    una o pi definizioni di attributozero o pi definizioni di vincoli di tabellaDefinizione di attributo []SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

    G. Mecca - [email protected] - Basi di Dati

  • Valori di DefaultNella CREATE TABLE e possibile specificare valori standard per gli attributi

    CREATE TABLE Studenti ( matr integer PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, ciclo char(20) DEFAULT laurea tr., anno integer NOT NULL DEFAULT 1, relatore char(4) REFERENCES Professori(cod));SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

    G. Mecca - [email protected] - Basi di Dati

  • Vincoli di RiferimentoVincoli di riferimento di colonna REFERENCES es: docente char(4) REFERENCES Professori(cod)Vincoli di riferimento di tabellaFOREIGN KEY () REFERENCES es: se la chiave di Collegi prov. e numero FOREIGN KEY (provincia, collegio) REFERENCES Collegi(provincia, numero)SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

    G. Mecca - [email protected] - Basi di Dati

  • Vincoli di RiferimentoAggiornamenti in cascataON {UPDATE | DELETE}

    CASCADESET NULLSET DEFAULTes: docente char(4) REFERENCES Professori(cod) ON UPDATE SET NULL;SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

    G. Mecca - [email protected] - Basi di Dati

  • Modifiche allo SchemaModifiche ad una tabella gi esistenteALTER TABLETre funzioniridenominazione della tabellaaggiunta, ridenominazione ed eliminazione di attributiaggiunta ed eliminazione di vincoliSQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

    G. Mecca - [email protected] - Basi di Dati

  • Modifiche allo SchemaRidenominazione della tabellaALTER TABLE RENAME TO ;es: ALTER TABLE Professori RENAME TO Docenti;Modifiche agli attributiALTER TABLE RENAME COLUMN TO ;ALTER TABLE ADD COLUMN ;ALTER TABLE DROP COLUMN ;SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

    G. Mecca - [email protected] - Basi di Dati

  • Modifiche allo SchemaEsempioALTER TABLE Studenti ADD COLUMN dataNascita DATE;ALTER TABLE Studenti ADD COLUMN luogoNascita VARCHAR(20);ALTER TABLE Studenti ADD COLUMN reddito DECIMAL(8,2);ALTER TABLE Studenti RENAME COLUMN dataNascita TO dataDiNascita;ALTER TABLE Studenti DROP COLUMN dataDiNascita;SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

    G. Mecca - [email protected] - Basi di Dati

  • Modifiche allo SchemaSemantica dellaggiunta di colonnela nuova colonna viene aggiunta allo schemaa tutte le ennuple viene aggiunto NULLoppure il valore standard se stato specif.Semantica delleliminazione di colonnela colonna viene eliminata dallo schema, assieme agli eventuali vincoli relativiviene effettuata la proiezione delle ennupleSQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

    G. Mecca - [email protected] - Basi di Dati

  • Modifiche allo SchemaAggiunta di vincoliALTER TABLE ADD CONSTRAINT ;listanza deve rispettare il vincoloEsempioALTER TABLE Studenti ADD CONSTRAINT cf UNIQUE (nome, cognome, dataNascita, luogoNascita);SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

    G. Mecca - [email protected] - Basi di Dati

  • Modifiche allo SchemaEliminazione di vincoliALTER TABLE DROP CONSTRAINT ;EsempioALTER TABLE Studenti DROP CONSTRAINT cf;Attenzione:molti DBMS non supportano n DROP COLUMN, n DROP CONSTRAINTSQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

    G. Mecca - [email protected] - Basi di Dati

  • DDL: VisteVistetabelle virtualidefinite attraverso uninterrogazionepossono essere utilizzate come tabelle realiDue funzioni fondamentalicreazione degli schemi esterni (privatezza dei dati o ristrutturazioni)semplificazione di interrogazioni ricorrentiSQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

    G. Mecca - [email protected] - Basi di Dati

  • DDL: VisteCreazione di visteCREATE VIEW AS ;Semanticala vista viene ricalcolata sulla base della sua definizione ogni volta che viene usataEliminazione di visteDROP VIEW ;SQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

    G. Mecca - [email protected] - Basi di Dati

  • DDL: VistePrivatezza: esami senza votiCREATE VIEW EsamiSenzaVoti AS SELECT studente, corso FROM Esami; SELECT * FROM EsamiSenzaVoti; SELECT * FROM Studenti, EsamiSenzaVoti WHERE matr=studente; DROP VIEW EsamiSenzaVoti;SQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

    G. Mecca - [email protected] - Basi di Dati

  • DDL: VisteCompiti ricorrenti: professori e numeriCREATE VIEW ProfessoriNumeri AS SELECT codice, nome, cognome, numero FROM Professori JOIN Numeri ON cod=professore;

    SELECT * FROM ProfessoriNumeri ORDER BY cognome, nome;SQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

    G. Mecca - [email protected] - Basi di Dati

  • DDL: VisteDifferenza tra tabelle e vistele tabelle sono materializzate nella base di dati, le viste no (sono derivate dalle tabelle)schema di una vista = attributi e tipi della selectistanza di una vista = risultato della selectle tabelle sono aggiornabili, le viste nole viste sono sempre aggiornate e consistentinon hanno impatto sulle prestazioniSQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

    G. Mecca - [email protected] - Basi di Dati

  • DDL: IndiciAggiunta di indici CREATE [UNIQUE] INDEX ON ();UNIQUE: impone un vincolo di chiave sugli attributiEsempio:CREATE INDEX annociclo ON Studenti(anno, ciclo);SQL-92 >> Dettagli e Approdondimenti >> DDL: Indici

    G. Mecca - [email protected] - Basi di Dati

  • DDL: IndiciAnnotazioniindici secondariIn alcuni sistemi (es: PgSQL) anche il tipo di indice (BTREE, HASH, ecc.)attenzione allimpatto sulle prestazioniEliminazione di indiciDROP INDEX ;EsempioDROP INDEX annociclo;SQL-92 >> Dettagli e Approdondimenti >> DDL: Indici

    G. Mecca - [email protected] - Basi di Dati

  • DCL Data Control LanguageDue funzioni principalicreazione ed eliminazione di utenticoncessione e revoca di autorizzazionisintassi non standardUtentiCREATE USER, DROP USERAutorizzazioniGRANT, REVOKESQL-92 >> Dettagli e Approdondimenti >> DCL

    G. Mecca - [email protected] - Basi di Dati

  • Creazione ed Eliminazione di UtentiEsempio: in PgSQLCREATE USER [WITH[PASSWORD ] [CREATEDB] [CREATEUSER]];es: CREATE USER pguser WITH PASSWORDpguser CREATEDB;inserimenti nella tabella pg_shadowEliminazione di utentiDROP USER ;es; CREATE USER pguser; SQL-92 >> Dettagli e Approdondimenti >> DCL

    G. Mecca - [email protected] - Basi di Dati

  • Concessione e Revoca di privilegiAutorizzazioninon tutti gli utenti sono autorizzati ad accedere alle basi di datitipicamente: lutente che crea la base di dati e/o le tabelle (il proprietario) autorizzato a fare tuttogli altri utenti non possono fare niente il proprietario pu concedere autorizzazioni ad altri utentiSQL-92 >> Dettagli e Approdondimenti >> DCL

    G. Mecca - [email protected] - Basi di Dati

  • Concessione e Revoca di privilegiIstruzione GRANTGRANT ON TO [WITH GRANT OPTION];: SELECT, INSERT, DELETE, UPDATE, REFERENCES, ALL: tabella o vista: nome oppure PUBLICWITH GRANT OPTION: lutente pu trasmettere i privilegi con listruzione GRANTSQL-92 >> Dettagli e Approdondimenti >> DCL

    G. Mecca - [email protected] - Basi di Dati

  • Concessione e Revoca di PrivilegiEsempiGRANT ALL ON Studenti TO pguser;GRANT SELECT ON Professori TO pguser WITH GRANT OPTION;GRANT SELECT ON EsamiSenzaVoti TO PUBLIC;Revoca di privilegiREVOKE ON FROM ;es: REVOKE DELETE ON Studenti FROM pguser; SQL-92 >> Dettagli e Approdondimenti >> DCL

    G. Mecca - [email protected] - Basi di Dati

  • Schemi EsterniCostruzione dello schema logicolutente o il DBA creano la base di datilutente o il DBA creano lo schemaCostruzione degli schemi esternilutente o il DBA definiscono eventuali vistelutente o il DBA definiscono le autorizzazioniSchema esterno di un utenteinsieme delle risorse visibili allutenteSQL-92 >> Dettagli e Approdondimenti >> DCL

    G. Mecca - [email protected] - Basi di Dati

  • DML: AggiornamentiCancellazioniDELETE FROM [];es: DELETE FROM Professori WHERE qualifica=supplente;ModificheUPDATE SET = [];es: UPDATE Professori SET qualifica=ordinario WHERE cod=VC;SQL-92 >> Dettagli e Approdondimenti >> DML: Aggiornamenti

    G. Mecca - [email protected] - Basi di Dati

  • InserimentiIst