1 / 38

Basi di Dati e Sistemi Informativi

Basi di Dati e Sistemi Informativi. Il Linguaggio SQL Home page del corso : http:// www.cs.unibo.it /~ difelice / dbsi /. Il Linguaggio SQL. SQL ( Structured Query Language ) e’ il linguaggio di riferimento per le basi di dati relazionali .

Télécharger la présentation

Basi di Dati e Sistemi Informativi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Basi di Dati e SistemiInformativi Il Linguaggio SQL Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

  2. Il Linguaggio SQL • SQL (Structured Query Language) e’ illinguaggio di riferimento per le basi di datirelazionali. • Diverse versioni del linguaggio: • SQL-86  Costrutti base • SQL-89  Integrita’ referenziale • SQL-92 (SQL2)  Modellorelazionale, struttura a livelli • SQL:1999 (SQL3)  Modello ad oggetti • SQL:2003 (SQL3)  Nuoveparti: SQL/JRT, SQL/XML • SQL:2006 (SQL3)  Estensione di SQL/XML • SQL:2008 (SQL3)  Lieviaggiunte

  3. Il Linguaggio SQL • Due componentiprincipali: • DDL (Data Definition Language) • Contieneicostruttinecessari per la creazione/modificadelloschemadella base di dati. • DML (Data Manipulation Language) • Contieneicostrutti per le interrogazioni e di inserimento/eliminazione/modifica di dati.

  4. Il Linguaggio SQL • Due componentiprincipali: • DDL (Data Definition Language) • Contieneicostruttinecessari per la creazione/modificadelloschemadella base di dati. • DML (Data Manipulation Language) • Contieneicostrutti per le interrogazioni e di inserimento/eliminazione/modifica di dati.

  5. SQL: DDL • Tramiteilcostruttocreate database, e’ possibilecreare un nuovo database. • create database NomeDB • [owner=Name] • Name e’ ilnome del proprietario del DB. CREATE DATABASE PROVADB

  6. SQL: DDL • Tramiteilcostruttocreate schema, e’ possibilecostruireunoschema di una base di dati (ossiailcollettore di tabelle/viste/etc). • create schema NomeSchema • [authorization Nome] • Nome e’ ilnome del proprietariodello schema. CREATE SCHEMA DB-UNIBO AUTHORIZATION MARCO

  7. SQL: DDL • Tramiteilcostruttocreate table, e’ possibilecostruireunatabellaall’internodello schema. • create table NomeTabella( • nomeAttributo1 Dominio [ValDefault][Vincoli] • nomeAttributo2 Dominio [ValDefault][Vincoli] • … • ) • Per ciascunattributo, e’ possibilespecificare, oltre al nome e dominio, un valore di default e ivincoli.

  8. SQL: Domini elementari • In SQL, e’ possibileassociareiseguentidomini(elementari) agliattributi di uno schema. • Caratteri • Tipi numericiesatti • Tipi numericiapprossimati • Istantitemporali • Intervallitemporali • Tipobooleano • …

  9. SQL: Domini elementari • Il dominiocharacterconsente di rappresentaresingolicaratteri o stringhe di lunghezza max fissa. • character/char [varying][(Lunghezza)] • Lunghezza non specificata  Singolocarattere • Es. specificareunastringa di max 20 caratteri. • character varying (20) • varchar (20)

  10. SQL: Domini elementari • I tipi numericiesatticonsentono di rappresentarevaloriesatti, interi o con una parte decimale di lunghezzaprefissata. • numeric [(Precisione[,Scala])]) • decimal [(Precisione[,Scala])]) • Integer • smallint • Es. numeric(4,2)  Intervallo [-99,99:99,99]

  11. SQL: Domini elementari • I tipi numericiapprossimaticonsentono di rappresentarevalorireali con rappresentazione in virgola mobile. • float [(Precisione)] • real • double precision • Es. float(5)  Mantissa di lunghezza 5.

  12. SQL: Domini elementari • I dominitemporaliconsentono di rappresentareinformazionitemporali o intervalli di tempo. • date [(Precisione)] • time [(Precisione)] • timestamp • Es. time (2)  21:03:04 • time (4)  21:03:04:34

  13. SQL: Domini elementari • I dominitemporaliconsentono di rappresentareinformazionitemporali o intervalli di tempo. • interval PrimaUnita’ [to UltimaUnita’] • Es. interval month to second • Il dominiobooleanconsente di rappresentarevalori di verita’ (true/false).

  14. SQL: Domini elementari • Tramiteilcostruttodomain, l’utentepuo’ costruire un propriodominio di datia partiredaidominielementari. • create domain NomeDominio as TipoDati • [Valore di default] • [Vincolo] (vedremodopo) CREATE DOMAIN Voto AS SMALLINT DEFAULT NULL CHECK ( value >=18 AND value <= 30 )

  15. SQL: DDL CORSI CREATE TABLE CORSI ( CORSO VARCHAR(20), CODICE VARCHAR(4), NUMEROORE SMALLINT, DATAINIZIO DATE )

  16. SQL: DDL • Per ciascundominio o attributo, e’ possibilespecificare un valore di default attraversoilcostruttodefault. • default [valore | user | null] • valoreindica un valore del dominio. • user e’ l’iddell’utentecheesegueilcomando. • null e’ ilvalore null.

  17. SQL: DDL CORSI CREATE TABLE CORSI ( CORSO VARCHAR(20), CODICE VARCHAR(4), NUMEROORE SMALLINT DEFAULT 40, DATAINIZIO DATE )

  18. SQL: DDL CORSI CREATE DOMAIN ORELEZIONE AS SMALLINT DEFAULT 40 CREATE TABLE CORSI ( CORSO VARCHAR(20), CODICE VARCHAR(4), NUMEROORE ORELEZIONE, DATAINIZIO DATE )

  19. SQL: DDL • Per ciascundominio o attributo, e’ possibiledefiniredeivincolichedevonoessererispettati da tutte le istanze di queldominio o attributo. • Vincoliintra-relazionale • vincoligenerici • vincolonot null • vincolounique • vincoloprimary key • Vincoliinter-relazionali • vincoloreferences

  20. SQL: DDL • Mediante la clausolacheck e’ possible esprimerevincoli di ennuplaarbitrari. • NomeAttributo … check (Condizione) • VOTO SMALLINT CHECK((VOTO>=18) and (VOTO<=30)) • Il vincolo viene valutato ennupla per ennupla. • E’ possibile creare vincoli piu’ complessi mediante le asserzioni(VEDI DOPO).

  21. SQL: DDL IMPIEGATI CREATE TABLE IMPIEGATI ( CODICE SMALLINT CHECK (CODICE >=0), NOME VARCHAR(30), COGNOME VARCHAR(30), UFFICIO CHARACTER )

  22. SQL: DDL • Il vincolonot null indicacheilvalore null non e’ ammesso come valoredell’attributo. • Es. NUMEROORE SMALLINT NOT NULL • In caso di inserimento, l’attributodeveesserespecificato, a menoche non siastatospecificato un valore di default diverso dal valore null. • Es. NUMEROORE SMALLINT DEFAULT 40 NOT NULL

  23. SQL: DDL • Il vincolounique imponechel’attributo/attributisu cui siaapplica non presentinovaloricomuniin righedifferenti ossiachel’attributo/isianounachiavedellatabella. • Due sintassi: • AttributoDominio [ValDefault] unique • Se la chiave e’ un solo attributo. • unique(Attributo1, Attributo2, ..) • Se la chiave e’ composta da piu’ attributi.

  24. SQL: DDL IMPIEGATI CREATE TABLE IMPIEGATI ( CODICE SMALLINT UNIQUE, NOME VARCHAR(30), COGNOME VARCHAR(30), UFFICIO CHARACTER )

  25. SQL: DDL Violazione del vincolo di chiave! IMPIEGATI CREATE TABLE IMPIEGATI ( CODICE SMALLINT UNIQUE, … )

  26. SQL: DDL NON sonoviolazioni del vincolo di chiave! NULL<>NULL IMPIEGATI CREATE TABLE IMPIEGATI ( CODICE SMALLINT UNIQUE, … )

  27. SQL: DDL Esempio: Chiavecomposta da due attributi. IMPIEGATI CREATE TABLE IMPIEGATI ( CODICE SMALLINT NOT NULL, UFFICIO CHARACTER NOT NULL, UNIQUE(CODICE, UFFICIO) )

  28. SQL: DDL IMPIEGATI CREATE TABLE IMPIEGATI ( CODICE SMALLINT NOT NULL UNIQUE, UFFICIO CHARACTER NOT NULL UNIQUE, ) ATTENZIONE, NON SONO EQUIVALENTI!!! (perche’?) CREATE TABLE IMPIEGATI ( CODICE SMALLINT NOT NULL, UFFICIO CHARACTER NOT NULL, UNIQUE(CODICE, UFFICIO) )

  29. SQL: DDL • Il vincoloprimary key imponechel’attributo/attributisu cui siaapplica non presentinovaloricomuniin righedifferenti e non sianonulli ossiachel’attributo/isianounachiaveprimaria. • Due sintassi: • AttributoDominio [ValDefault] primary key • Se la chiave e’ un solo attributo. • primary key(Attributo1, Attributo2, ..) • Se la chiave e’ composta da piu’ attributi.

  30. SQL: DDL Il vincoloprimary key imponechel’attributo/attributisu cui siaapplica non presentinovaloricomuniin righedifferenti e non sianonulli ossiachel’attributo/isianounachiaveprimaria. IMPORTANTE: A differenza di unique e not null chepossonoesseredefinitisupiu’ attributidellastessatabella, ilvincoloprimary key puo’ apparireuna sola volta per tabella.

  31. SQL: DDL Esempio: Chiavecomposta da due attributi. IMPIEGATI CREATE TABLE IMPIEGATI ( CODICE SMALLINT NOT NULL, UFFICIO CHARACTER NOT NULL, PRIMARY KEY (CODICE, UFFICIO) )

  32. SQL: DDL I vincolireferencese foreign key consentono di definiredeivincoli di integrita’ referenzialetraivalori di un attributonellatabella in cui e’ definito (tabellainterna) edivalori di un attributo in unasecondatabella (tabellaesterna). NOTA: L’attributo/i cui sifariferimentonellatabellaesternadeve/devonoesseresoggetto/i al vincolo unique.

  33. SQL: DDL CORSI ESAMI CREATE TABLE ESAMI ( CORSO VARCHAR(4)REFERENCES CORSI(CODICE) STUDENTE VARCHAR(20), PRIMARY KEY(CORSO, STUDENTE), … )

  34. SQL: DDL Il costrutto foreign key siutilizzanelcasoilvincolo di integrita’ referenzialeriguardipiu’ di un attributodelletabelle interne/esterne. CREATE TABLE STUDENTE { MATRICOLA CHARACTER(20) PRIMARY KEY, NOME VARCHAR(20), COGNOME VARCHAR(20), DATANASCITA DATE, FOREIGN KEY(NOME,COGNOME,DATANASCITA) REFERENCES ANAGRAFICA(NOME,COGNOME,DATA) )

  35. SQL: DDL CORSI ESAMI Q. Cheaccade se un valorenellatabellaesternavienecancellato o vienemodificato? A. Il vincolo di integrita’ referenzialenellatabellainternapotrebbe non esserepiu’ valido! Cosa fare?

  36. SQL: DDL • E’ possibileassociareazionispecificheda eseguiresullatabellainternain caso di violazioni del vincolo di integrita’ referenziale. • on (delete | update) • (cascade | set null | set default| no action) • cascade  elimina/aggiornarighe (dellatabellainterna) • set null  settaivalori a null • set default  ripristinailvalore di default • no action  non consentel’azione(sullatabellaesterna)

  37. SQL: DDL CORSI ESAMI CREATE TABLE ESAMI ( CORSO VARCHAR(4)REFERENCES CORSI(CODICE) ON DELETE SET NULL ON UPDATE CASCADE STUDENTE VARCHAR(20), PRIMARY KEY(CORSO, STUDENTE), … )

  38. SQL: DDL E’ possibilemodificareglischemi di datiprecedentementecreatitramite le primitive di alter (modifica) e drop (cancellazione). drop (schema|domain|table|view) NomeElemento alterNomeTabella alter column NomeAttributo add column NomeAttributo drop column NomeAttributo add contraintDefVincolo …

More Related