1 / 43

Corso di Basi di Dati

Corso di Basi di Dati. Il Linguaggio SQL Home page del corso : http:// www.cs.unibo.it /~ difelice / dbsi /. Linguaggi per DBMS. Il modello relazionale definisce i concetti generali ed i vincoli per modellare e strutturare i dati di

hector
Download Presentation

Corso di Basi di Dati

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. Corso di Basi di Dati Il Linguaggio SQL Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

  2. Linguaggi per DBMS Il modellorelazionaledefinisceiconcettigenerali edivincoliper modellare e strutturareidati di unacertaapplicazione o dominiod’interesse. Q. Come implementareilmodellorelazionale di un DB all’interno di un RDBMS? Q.1 Come costruire lo schema del DB? Q.2 Come manipolare le istanze? A. Attraversoopportunilinguaggi data-oriented!

  3. Linguaggi per DBMS LINGUAGGIsupportatidaiRDBMS 1.Interfaccegrafiche Creare un nuovo DB Crearetabelle Definirevincoli Inserireistanze Rimuovereistanze Cercareistanze …

  4. Linguaggi per DBMS LINGUAGGIsupportatidaiRDBMS • 2.Linguaggibasatisulleproprieta’ algebrico/ • logiche del modellorelazionale. • Calcolorelazionale sui domini • Algebra relazionale

  5. Il Linguaggio SQL LINGUAGGIsupportatidaiRDBMS • 3. SQL (Structured Query Language) • 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

  6. Il Linguaggio SQL SQL e’ un linguaggio per basi di datibasatesulmodellorelazionale. • Valgonoiconcettigenerali del modellorelazionale • visto fin qui, ma con qualchedifferenza: • Si parla di tabelle(e non relazioni). • Le tabellepossonoavererighe duplicate. • Il sistemadeivincolie’ piu’ espressivo. • Il vincolo di integrita’ referenziale (chiaveesterna) • e’ menostringente.

  7. 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.

  8. 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.

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

  10. 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

  11. 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.

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

  13. 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)

  14. 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]

  15. 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.

  16. 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

  17. 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).

  18. 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 )

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

  20. 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.

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

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

  23. 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

  24. 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).

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

  26. 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

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

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

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

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

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

  32. 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) )

  33. 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.

  34. 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.

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

  36. 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 vincolounique.

  37. 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). CORSI ESAMI

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

  39. 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) );

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

  41. 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)

  42. 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), … )

  43. 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