Basi di dati (6) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. andrea.bulgarelli@gmail.com Argomento: T-SQL (1.



Documenti analoghi
Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM

SQL Server. SQL server e un RDBMS di tipo client/server che utilizza Transact-SQL per gestire la comunicazione fra un client e SQL Server

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

Come trattare il risultato di un comando SQL (relazioni) che

Basi di dati (7) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. andrea.bulgarelli@gmail.com Argomento: stored procedure (1.

Oracle PL/SQL. Motivazioni

Triggers. Basi dati attive. Trigger. Indipendenza della conoscenza

Linee guida per la programmazione di transazioni in PL/SQL

ROUTINE E PROGRAMMAZIONE

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

DAL DIAGRAMMA AL CODICE

PL/SQL PL/SQL. Ordine degli elementi dei triggers di Oracle. Differenze nei triggers. Versione dei trigger e PSM di Oracle

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Capitolo 7. Esercizio 7.1

LA REALIZZAZIONE DI APPLICAZIONI ALCUNE ARCHITETTURE

LA REALIZZAZIONE DI APPLICAZIONI. Quattro parti: Gestione dati. Business rules. Logica applicativa. Interfaccia utente. Molte possibili architetture

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

Stored Procedures. Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.

Lezione 8. Metadati, Viste e Trigger

Basi di dati (8) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. andrea.bulgarelli@gmail.com Argomento: trigger e cursori (1.

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

DBMS (Data Base Management System)

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Introduzione al Python

Laboratorio di Basi di Dati e Web

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Descrizione di un algoritmo

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Funzioni. Il modello console. Interfaccia in modalità console

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Richiesta pagina PHP (es: index.php)

Architettura MVC-2: i JavaBeans

MySQL Command Line Client: operazioni fondamentali

Introduzione. Dicom in Oracle 11g: gestione e vantaggi

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Tecnologia di un Database Server (centralizzato) Introduzione generale

a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati:

Matlab: Strutture di Controllo. Informatica B

Nella relazione CINEMA, Nome è chiave secondaria. Nella relazione FILM, CodRegista, e CodProtagonista sono chiavi esterne sulla tabella PERSONE.

Introduzione al linguaggio C Gli array

PHP e Structured Query Language

GESTIONE INFORMATICA DEI DATI AZIENDALI

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

GERARCHIE RICORSIVE - SQL SERVER 2008

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Nozione ed uso. Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso:

Basi di dati (3) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. Argomento: DML (1.

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Allocazione dinamica della memoria - riepilogo

Trasformazione DB Access In SQL Server. Michele De Nittis

Capitoli 8 e 9. SQL embedded. Applicazioni tradizionali Applicazioni Internet. Sistemi di basi di dati Raghu Ramakrishnan, Johannes Gehrke

Lezione 8. La macchina universale

Structured Query Language parte 1

Sistemi Mobili e Wireless Android - Dati persistenti: SQLite

SQL Sintassi Dei Comandi

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

Corso sul linguaggio SQL

Esercizio 2. Client e server comunicano attraverso socket TCP

Concetto di Funzione e Procedura METODI in Java

2104 volume III Programmazione

Introduzione alla programmazione in C

SQL. Alcune note sulla definizione dei dati

Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5

Gestione delle tabelle

Stored Procedures. Antonella Poggi, Claudio Corona. Dipartimento di informatica e Sistemistica SAPIENZA Università di Roma

SQL PER LA DEFINIZIONE DI BASI DI DATI

SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))

MEZZI CodM Tipo Targa AnnoI Assicurato

Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL. Simona Rotolo

Dispensa di database Access

Corso Online Analista Programmatore Microsoft

I parametri passati sono lo username e la password dell utente.

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Linguaggio SQL. Structured Query Language

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Metodi per la Gestione dei Dati (lezioni di laboratorio)

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

Progetto di Basi di Dati e Multimidia Laboratorio Struttura dell applicazione web

Università degli Studi di Catania Dipartimento di Matematica e Informatica Compilatori 2014/15

RDBMS: panorama attuale. RDBMS: panorama attuale

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014

APPENDICE. Procedure in SQL (1)

Laboratorio di Basi di Dati

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:

Vincoli e Triggers. Vincoli. Tipo di vincoli. Chiavi esterne

Operazioni sui database

I file di dati. Unità didattica D1 1

User Tools: DataBase Manager

Al giorno d oggi, i sistemi per la gestione di database

Transcript:

Università di Modena e Reggio Emilia Basi di dati (6) Docente: andrea.bulgarelli@gmail.com Argomento: T-SQL (1.0) 1

Panoramica T-SQL Variabili Controllo di flusso Trattamento errori Print Operatori e funzioni speciali 2

T-SQL Il T-SQL (Transact-SQL) è l estensione dell SQL standard prevista da Microsoft 3

T-SQL variabili T-SQL dispone unicamente di variabili locali (disponibili nel batch o stored procedure in cui vengono dichiarate) Le variabili hanno tutte obbligatoriamente un tipo associato Le variabili devono essere dichiarate all inizio del batch o procedura: DECLARE @nomevar tipo [, @nomevar2 tipo2 [, ]] I valori delle variabili sono assegnati principalmente in due modi: SET @nomevar = valore SELECT @nomevar = valore [,.] 4

T-SQL variabili (2) Una SET può assegnare una sola variabile declare @v int set @v = 10 print @v Una singola SELECT può assegnare molti valori ad altrettante variabili L assegnazione tramite SELECT deve essere curata in modo da garantire che qualsiasi esecuzione della SELECT produca esattamente un valore per ciascuna variabile Se una SELECT produce più valori, alla fine dell esecuzione l assegnazione a ciascuna variabile riflette l ultimo valore assegnato Se una SELECT non produce alcun valore, allora la variabile mantiene il valore assunto in precedenza declare @cf char(16) select @cf = CF from Cliente print @cf 5

T-SQL variabili (3) Se si accetta un valore (magari qualsiasi tra più valori disponibili), allora si può usare SELECT TOP 1, possibilmente integrato con ORDER BY Si può anche verificare il valore @@ROWCOUNT dopo l esecuzione ed attivare una routine di errore se il valore è maggiore di 1 6

T-SQL variabili (4) L assegnazione di variabili può essere usata anche nel contesto di un UPDATE Esempio: declare @intcounter int set @intcounter = 0 update Yaks SET @intcounter = YakSequenceNumber = @intcounter + 1 Sono disponibili molte funzioni di sistema (ad esempio @@spid), che per motivi storici hanno il nome preceduto da @@ e vengono talvolta indicate come variabili globali 7

Esempio USE pubs GO DECLARE @cost money SELECT @cost = price FROM titles WHERE title_id = 'bu1032' SET context_info @cost GO SELECT convert(money,substring(context_info,1,8)) FROM master..sysprocesses WHERE spid = @@spid 8

T-SQL controllo di flusso Il controllo di flusso viene realizzato mediante alcuni costrutti Definizione di un blocco di istruzioni BEGIN statements END Criteri di esecuzione condizionale IF.ELSE Criteri di esecuzione multivia CASE WHEN THEN. ELSE Trasferimento di esecuzione (non usare, se possibile) GOTO Termine dell esecuzione e ritorno di un valore al chiamante RETURN Ciclo di esecuzione WHILE BREAK CONTINUE 9

T-SQL: IF - ELSE IF ( SELECT AVG(price) FROM titles WHERE type = 'mod_cook' ) < $15 BEGIN PRINT 'The following titles are excellent mod_cook books:' PRINT ' ' SELECT SUBSTRING(title, 1, 35) AS Title FROM titles WHERE type = 'mod_cook' END ELSE PRINT 'Average title price is more than $15.' 10

T-SQL: CASE SELECT Category = CASE type WHEN 'popular_comp' THEN 'Popular Computing' WHEN 'mod_cook' THEN 'Modern Cooking' WHEN 'business' THEN 'Business' WHEN 'psychology' THEN 'Psychology' WHEN 'trad_cook' THEN 'Traditional Cooking' ELSE 'Not yet categorized' END, CAST(title AS varchar(50)) AS 'Shortened Title', price AS Price FROM titles WHERE price IS NOT NULL ORDER BY type, price COMPUTE AVG(price) BY type 11

T-SQL: WHILE Costrutto di base per l esecuzione di cicli in T- SQL Al suo interno una istruzione BREAK causa l uscita immediata dal WHILE più interno che lo circonda Una istruzione CONTINUE implica la terminazione immediata del ciclo corrente del WHILE e l inizio del ciclo successivo DECLARE @counter int SET @counter=1 WHILE (@counter <= 1000) BEGIN INSERT xyz DEFAULT VALUES SET @counter=@counter+1 END 12

T-SQL: RETURN Terminazione incondizionata del codice Opzionalmente può ritornare un valore RETURN n che viene passato al chiamante come esito Usato tipicamente in stored procedures e triggers Può essere usato anche altrove per gestire la terminazione 13

T-SQL: print PRINT 'Hello world' -- output come stringa SELECT 'Hello world' -- output come rowset PRINT 'Data: ' + getdate() -- errore di conversione PRINT 'Data: ' + convert(char(30),getdate ()) 14

T-SQL: raiserror Invia messaggi al client Accetta parametri printf-like Meglio usare questo invece del print RAISERROR ( {msgid msgstr}, severity, state [, args] ) [WITH LOG] Dopo la chiamata, @@ERROR contiene il msgid Severity: Messaggio informativo: 0 o 10 severity 15 warnings, severity 16 errors Errore 20, fatal, disconnessione State: non ha rilevanza. Va bene un numero da 1 a 127 15

T-SQL: raiserror (4) Esempio. E possibile creare dei messaggi predefiniti con un numero univoco. (#6x, visualizza il numero in esadecimale) EC sp_addmessage 50001, 10, 'Hello World, from: %s, process id: %#6x', @replace='replace' DECLARE @parm1 varchar(30), @parm2 int SELECT @parm1=user_name(), @parm2=@@spid RAISERROR(50001, 15, -1, @parm1, @parm2) 16

T-SQL operatori Operatori aritmetici (+ - * / % (modulo) ) (tipi numerici) Operatori bitwise (& and or ^ exor ~ not) (su int) Operatori confronto (= > < >= <= <>) Operatori logici (AND OR NOT) Ordine di precedenza (decrescente) ~ (not bitwise) * / % + - ^ (exor bitwise) & (and bitwise) (or bitwise) NOT AND OR 17

Esempio sui tipi (casting) CREATE TABLE test (a sql_variant,b sql_variant) GO INSERT INTO test VALUES (CAST (111 as int), CAST(222 as money)) GO INSERT INTO test VALUES (CAST (333 as int), CAST(444 as char(3))) GO SELECT * FROM test WHERE a > b Result: a b ---- ---- 333 444 18

T-SQL funzioni Funzioni per la conversione: CONVERT, CAST, STR Funzioni data e ora: DATEADD, DATEDIFF, DATENAME, DATEPART, DAY, MONTH, YEAR, GETDATE, GETUTCDATE Funzioni matematiche Funzioni di manipolazione di stringhe Funzioni di sistema e informazione metadati Altre funzioni (@@ ) 19