SQL SQL (pronunciato anche come l’inglese sequel) è l’acronimo di Structured Query Language (linguaggio di interrogazione strutturato) E’ un linguaggio.

Slides:



Advertisements
Presentazioni simili
TIPI STANDARD DI SQL BOOLEAN Valori: vero, falso CHAR(n)
Advertisements

DB - Modello relazionale dei dati
Structured Query Language
SQL applicato a SQL Server
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Sistemi per il recupero delle informazioni
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
1 SQL come linguaggio di definizione di dati Eugenio Di Sciascio.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Basi di Dati prof. A. Longheu
SCUOLA INTERUNIVERSITARIA SICILIANA DI SPECIALIZZAZIONE PER LINSEGNAMENTO SECONDARIO Classe di Concorso: 42A Massimo Mancino MODULO DIDATTICO - Ambienti.
SQL.
SQL Structured Query Language
Luglio 2004Memorie Tradizionali1 MEMORIE TRADIZIONALI Luglio 2004.
1 IT FOR BUSINESS AND FINANCE ACCESS INTRODUCTION.
Corso di Informatica (Basi di Dati)
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.
Rappresentazione dei numeri reali
Basi di dati. Vantaggi degli archivi digitali Risparmio di spazio: sono facilmente trasferibili e duplicabili Risparmio di tempo: si può accedere ai dati.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Basi di dati Università Degli Studi Parthenope di Napoli
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
SQL: Lezione 7 Nataliya Rassadko
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni PROJCapo (SELStipendio>40 (Supervisione JOIN Impiegato=Matricola Impiegati))
Equivalenza di espressioni
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
sql: esempi di linguaggio sql nell'implementazione mysql
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
SQL.
LINGUAGGIO S Q L breve presentazione curata da Aldo Pappalepore
Modulo 5 Uso delle Basi di dati Paola Pupilli 2.
SQL (IV) Data Definition Language/ Data Manipulation Language.
MODULO 5: Database ITCG “V. De Franchis” - PON FSE Modulo G/1 l’informatica” Lezione 2.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
IV D Mercurio DB Lezione 2
1 Basi di Dati S tructured Q uery L anguage Appunti Matteo Longhi.
Il linguaggio SQL.
SQL (III) Data Definition Language/ Data Manipulation Language.
MySQL Database Management System
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
STRUTTURA DI UN PROGRAMMA C In prima battuta, la struttura di un programma C è definita dalla seguente produzione: ::= { }
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
Claudia Raibulet Basi di dati Claudia Raibulet
Vincoli interrelazionali
Basi di dati I Prof.ssa Rosalba Giugno Prof. Alfredo Pulvirenti SQL: Amministrazione e Viste.
Lezione 6 - SQL. Linguaggi per DB Per interagire con le basi di dati occorre un linguaggio Linguaggio SQL (Structured Query Language), linguaggio standardizzato.
© 2015 Giorgio Porcu - Aggiornamennto 28/03/2015 UdA 1A Database Progettazione Fisica G IORGIO P ORCU
Lezione 5 - SQL. Linguaggi per DB Per interagire con le basi di dati occorre un linguaggio Linguaggio SQL (Structured Query Language), linguaggio standardizzato.
Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
Lezione 4 – Linguaggi ed Interazione. Linguaggi La comunicazione è essenziale tra gli esseri umani Se vogliamo chiedere informazioni stradali ad un passante.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Transcript della presentazione:

SQL SQL (pronunciato anche come l’inglese sequel) è l’acronimo di Structured Query Language (linguaggio di interrogazione strutturato) E’ un linguaggio completo che presenta anche le proprietà di: DDL (Data Definition Language) DML (Data Manipulation Language) Con SQL è quindi possibile: definire schemi di basi di dati eseguire query modificare il contenuto della base di dati

SQL 1986 Prima standardizzazione 1989 SQL-89 1992 SQL-2 (SQL-92): versione attualmente diffusa (e tuttora non completamente implementata) 1998 SQL-3 (SQL-99): nuovo standard proposto con funzionalità avanzate (DB a oggetti, operazioni ricorsive ecc.) 3 implementazioni disponibili: Entry SQL Intermediate SQL Full SQL

Definizione dei dati Esistono 6 domini elementari: Character Bit Tipi numerici esatti Tipi numerici approssimati Data e ora Intervalli temporali

Domini Character character [varying] [(Lunghezza)] rappresenta singoli caratteri o stringhe character [varying] [(Lunghezza)] [character set NomeFamigliaCaratteri] character(20) stringa di lunghezza 20 character varying(100) stringa di lunghezza max. 100 character(20) character set Greek stringa di lunghezza 20 in caratteri greci

Domini Bit Intervalli Temporali bit [varying] [(Lunghezza)] rappresenta attributi o vettori di attributi che possono assumere solo valori 0 o 1. Utilizzato per implementare flag. bit [varying] [(Lunghezza)] Intervalli Temporali interval UnitàDiTempo1[(Precisione)] [to UnitàDiTempo2[(Precisione)]] UnitàDiTempo1 e UnitàDiTempo2 specificano le unità di misura da usare dalla più lunga alla meno lunga NB La definizione è valida nei 2 sottointervalli [year,month] e [day,second]. interval day(4) to second(6) rappresenta l’intervallo [0,10000) giorni e secondi con precisione al milionesimo di s.

Domini Tipi numerici esatti numeric [(Precisione [,Scala])] Valori interi o con parte decimale di lunghezza prefissata numeric [(Precisione [,Scala])] decimal [(Precisione [,Scala])] integer smallint Precisione specifica il numero di cifre significative Scala quante cifre si rappresentano dopo la virgola decimal(4) numeri da -9999 a 9999 numeric(6,3) numeri da -999.999 a 999.999 La precisione degli interi dipende dall’implementazione

Domini Tipi numerici approssimati float [(Precisione)] rappresentano valori reali approssimati float [(Precisione)] double precision real Precisione specifica il numero di cifre dedicato alla mantissa (la precisione dell’esponente dipende dall’implementazione) real e double precision hanno precisione prestabilita, una doppia rispetto all’altra.

Domini Data e ora date time [(Precisione)][with time zone] tipi utilizzati per rappresentare istanti di tempo date time [(Precisione)][with time zone] timestamp [(Precisione)][with time zone] Ciascun tipo è divisibile in campi. date ammette come campi year, month e day time i campi hour, minute, second timestamp tutti i campi da year a second I campi sono divisi da “:” 20:03:04+1:00

Definizione di schemi [[authorization] Autorizzazione]] E’ possibile definire uno schema di base di dati come collezione di oggetti. create schema[NomeSchema] [[authorization] Autorizzazione]] {DefElementoSchema} Autorizzazione rappresenta il nome dell’utente proprietario dello schema

Definizione tabelle create table NomeTabella Una tabella SQL è costituita da una collezione ordinata di attributi e da un insieme di vincoli create table NomeTabella ( NomeAttributo Dominio [ValDefault] [Vincoli] {,NomeAttributo Dominio [ValDefault] [Vincoli] } AltriVincoli ) Una tabella è inizialmente vuota e chi la crea possiede tutti i diritti su di essa

Definizione Tabelle Es. create table Dipartimento ( Nome char(20) primary key, Indirizzo char(50), Città char(20) )

Definizione Domini Come nei linguaggi ad alto livello (es. C) è possibile definire nuovi domini (tipi di dati) a partire da quelli predefiniti, anche se il costruttore è più limitato. create domain NomeDominio as TipodiDato [ValDefault] [Vincolo] Non si possono creare array o strutture poiché il modello relazionale impone attributi definiti su un dominio elementare. E’ però possibile associare dei vincoli ad un dominio definito dall’utente. Se si modifica la definizione di un dominio, la modifica si propaga a tutte le tabelle.

CREATE DOMAIN, esempio CREATE DOMAIN Voto AS SMALLINT DEFAULT NULL CHECK ( value >=18 AND value <= 30 )

Valori di default Si possono specificare valori di default per un attributo quando, al momento della creazione di una nuova tupla, in un campo non viene inserito alcun valore. default < GenericoValore | user | null > GenericoValore è un valore compatibile col dominio user è il nome dell’utente che aggiorna la tabella null corrisponde al valore di default di base

Valori di default Un nuovo default (es. nella definizione di un tipo a partire da un altro) sostituisce il precedente Es. NumeroFigli smallint default 0 impone il valore 0 quando non viene specificato il valore dell’attributo.

Vincoli intrarelazionali I più semplici vincoli intrarelazionali predefiniti sono: not null indica che il valore nullo non è ammesso su uno specifico attributo, cioè che sia inserito in ogni caso un valore, salvo che non sia già definito un valore di default. SQL non distingue i diversi tipi di valore nullo. Se è necessario, bisogna definire opportuni domini. unique(Attributo {, Attributo}) indica che l’insieme di attributi deve essere una superchiave per la tabella. primary key(Attributo {, Attributo}) definisce la chiave primaria. Può essere una sola. Tutti gli attributi sono not null.

Vincoli intrarelazionali Nome character(20) not null, Cognome character(20) not null, unique (Nome, Cognome) impone che non esistano due tuple in cui sia i valori di Nome che di Cognome siano uguali Nome character(20) not null unique, Cognome character(20) not null unique impone che non esistano due tuple che abbiano uguali valori di Nome o di Cognome

Vincoli interrelazionali Vincoli di integrità referenziale In SQL si usa il vincolo di foreign key (chiave esterna) per creare un legame fra i valori di un attributo della tabella corrente (interna) e un attributo di un’altra tabella (esterna). Si impone che per ogni riga della tabella interna il valore dell’attributo sia presente nel corrispondente attributo della tabella esterna. L’attributo della tabella esterna deve essere unique. Se l’attributo è unico allora si usa references. Altrimenti si usa foreign key

Vincoli interrelazionali create table Impiegato ( Matricola character(6) primary key, Nome character(20) not null, Cognome character(20) not null, Dipart character(15) references Dipartimento(NomeDip), Stipendio numeric(9) default 0, unique (Cognome, Nome), foreign key(Nome, Cognome) references Anagrafica(Nome,Cognome) )

Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale, quando la violazione avviene per un cambiamento apportato alla tabella esterna, si deve associare una politica alle operazioni che possono causare inconsistenza: on < delete | update > <cascade|set null|set default|no action> subito dopo la specifica del riferimento

Vincoli Interrelazionali Modifica (comando update): cascade il nuovo valore dell’attributo della tabella esterna viene riportato su tutte le corrispondenti righe della tabella interna. set null all’attributo referente viene assegnato il valore nullo. set default all’attributo referente viene assegnato il valore di default. no action la modifica non viene consentita.

Vincoli Interrelazionali Cancellazione (comando delete): cascade tutte le corrispondenti righe della tabella interna vengono cancellate. set null all’attributo referente viene assegnato il valore nullo. set default all’attributo referente viene assegnato il valore di default. no action la cancellazione non viene consentita.

Modifica degli schemi E’ possibile modificare gli schemi con i comandi alter e drop. alter consente di modificare domini e schemi di tabelle. alter domain NomeDominio < set default ValDefault | drop default | add constraint DefVincolo | drop constraint NomeVincolo >

Modifica degli schemi alter table NomeTabella < alter column NomeAttributo < set default NuovoDefault | drop default > | add constraint DefVincolo | drop constraint NomeVincolo | add column NomeAttributo | drop column NomeAttributo > NB Quando si inserisce un nuovo vincolo, questo deve essere soddisfatto dai dati già presenti

Modifica degli Schemi Il comando drop permette di rimuovere dei componenti drop < schema | domain | table | view | assertion > NomeElemento [ restrict | cascade ] restrict specifica di non eseguire il comando in presenza di oggetti non vuoti. cascade implica che gli oggetti specificati siano rimossi. Inoltre vengono rimossi tutti gli oggetti da essi dipendenti. Quindi, ATTENZIONE!!!!