Corso base Lorenzo Braidi Formazione e consulenza informatica Lorenzo@braidi.com .

Post on 02-May-2015

213 views 0 download

Transcript of Corso base Lorenzo Braidi Formazione e consulenza informatica Lorenzo@braidi.com .

Corso baseCorso base

Lorenzo BraidiLorenzo BraidiFormazione e consulenza informaticaFormazione e consulenza informatica

Lorenzo@braidi.comLorenzo@braidi.comhttp://www.braidi.comhttp://www.braidi.com

AgendaAgenda

Installazione di SQL ServerInstallazione di SQL Server

I database relazionaliI database relazionali

Mictosoft SQL Server 2000Mictosoft SQL Server 2000

Il linguaggio Transact SQLIl linguaggio Transact SQL

Parte PrimaParte Prima

Installazione di SQL ServerInstallazione di SQL Server

VersioniVersioni

Microsoft SQL Server 2000Microsoft SQL Server 2000 Enterprise editionEnterprise edition Standard editionStandard edition Personal editionPersonal edition Developer editionDeveloper edition

Microsoft SQL Server 7.0Microsoft SQL Server 7.0 Enterprise editionEnterprise edition Standard editionStandard edition Desktop editionDesktop edition Developer editionDeveloper edition

ComponentiComponenti

Database serverDatabase server

OLAP server (o Analysis service)OLAP server (o Analysis service)

English queryEnglish query

Setup e upgradeSetup e upgrade

Parte SecondaParte Seconda

I database relazionaliI database relazionali

I database relazionaliI database relazionali

Indipendenza dei dati:Indipendenza dei dati:

La grande differenza tra il modello relazionale e quelli reticolari e La grande differenza tra il modello relazionale e quelli reticolari e gerarchicigerarchici

Modello logicoModello logicoL’operatore conosce la struttura logica dei datiL’operatore conosce la struttura logica dei dati

Modello fisicoModello fisicoNon è necessario sapere dove i dati risiedano per accederviNon è necessario sapere dove i dati risiedano per accedervi

I database relazionaliI database relazionali

Tabelle:Tabelle:

E’ la rappresentazione del concetto matematico di “Insieme”E’ la rappresentazione del concetto matematico di “Insieme”

TuplaTuplaE’ l’elemento base di una tabellaE’ l’elemento base di una tabella

CampoCampoE’ una colonna di un elementoE’ una colonna di un elemento

I database relazionaliI database relazionali

Relazioni:Relazioni:

E’ la rappresentazione del concetto matematico di “Prodotto di E’ la rappresentazione del concetto matematico di “Prodotto di insiemi”insiemi”

Prodotto di dominiProdotto di dominiA= {1,2,3}A= {1,2,3} B={h,k}B={h,k} A x B={(1,h),(2,h),(3,h),(1,k),(2,k),(3,k)}A x B={(1,h),(2,h),(3,h),(1,k),(2,k),(3,k)}

Univocità della tuplaUnivocità della tuplaNon esistono dati dupplicati in un insiemeNon esistono dati dupplicati in un insieme

I database relazionaliI database relazionali

Valore null:Valore null:

Valore sconosciuto Valore sconosciuto

Valore inesistente Valore inesistente

Senza informazione Senza informazione CittàCittà Indirizzo prefetturaIndirizzo prefettura

RomaRoma Via Quattro Via Quattro NovembreNovembre

FirenzeFirenze NullNull

TivoliTivoli NullNull

PratoPrato NullNull

I database relazionaliI database relazionali

Vincoli di integrità:Vincoli di integrità:

ExtrarelazionaliExtrarelazionaliRelazione tra i dati di due tabelleRelazione tra i dati di due tabelle

IntrarelazionaliIntrarelazionaliRelazioni interne ad una tabella o ad una tuplaRelazioni interne ad una tabella o ad una tupla

Vincoli di dominioVincoli di dominio( voto >= 18 ) and ( voto <= 30 )( voto >= 18 ) and ( voto <= 30 )

Vincoli di tuplaVincoli di tupla( not ( lode =vero ) ) or ( voto = 30 ( not ( lode =vero ) ) or ( voto = 30

))

I database relazionaliI database relazionali

Chiavi:Chiavi:

Identifica l’univocità di una tuplaIdentifica l’univocità di una tuplaNon possono esistere tuple doppie in una stessa tabellaNon possono esistere tuple doppie in una stessa tabella

Obbligatoria per relazionare la tabellaObbligatoria per relazionare la tabellaNon è possibile mettere in relazione un’informazione di una Non è possibile mettere in relazione un’informazione di una tabella se ad essa non è asociata una chiavetabella se ad essa non è asociata una chiave

I database relazionaliI database relazionali

… … in pratica …in pratica …Ordine n. 2451Data 22/02/2002

OrdinanteRagione sociale: Ipermercato centro TorriVia/Piazza: Tangenziale n. 242

43100 Parma PRPartita IVA: 27585624

Dettagli ordine

Codice prodotto Descrizione articolo

Presso unitario Quantità

Importo totale

002744 Penne rigate 0,30 100 30,00854215 Spaghetti 0,25 200 50,00545425 Pane precotto 1,00 50 50,00232125 Preparato per Pizza 2,00 30 60,00

TOTALE 380 190,00

Stato ordineRicevuto EvasoDa: Da:In data: In data:

Parte TerzaParte Terza

Microsoft SQL Server 2000Microsoft SQL Server 2000

Strumenti di baseStrumenti di base

Cos’è un database?Cos’è un database?

Cos’è un DBMS?Cos’è un DBMS?

Strumenti di baseStrumenti di base

Configurazione di rete clentConfigurazione di rete clent Configurazione di rete di SQL Configurazione di rete di SQL

ServerServer Gestione serviziGestione servizi Importazione ed esportazione Importazione ed esportazione

datidati ProfilerProfiler Query AnalyzerQuery Analyzer Enterprise ManagerEnterprise Manager

Creazione di un databaseCreazione di un database

NomeNome LinguaLingua File dati e dimensioniFile dati e dimensioni File log e dimensioniFile log e dimensioni OpzioniOpzioni

Creazione di una tabellaCreazione di una tabella

NomeNome ColonneColonne ChiaviChiavi RelazioniRelazioni IndiciIndici VincoliVincoli

Le viste logicheLe viste logiche

Visualizzazione parziale delle colonne di Visualizzazione parziale delle colonne di una tabellauna tabella

Visualizzazione parziale delle righe di Visualizzazione parziale delle righe di una tabellauna tabella

Aggiunta, modifica o mascheratura di Aggiunta, modifica o mascheratura di colonne di una tabellacolonne di una tabella

Visualizzazione di colonne di differenti Visualizzazione di colonne di differenti tabelletabelle

Creazione di una vistaCreazione di una vista

NomeNome TabelleTabelle ColonneColonne RelazioniRelazioni RestrizioniRestrizioni

Creazione di una vista: la Creazione di una vista: la sintassi T-SQLsintassi T-SQL

CREATE VIEW VW_AssegniCREATE VIEW VW_Assegni

((

Code,Code,

[...][...]

DataEmissioneDataEmissione

) )

ASAS

SELECT SELECT

A.Code,A.Code,

[...][...]

A.DataEmissioneA.DataEmissione

FROM FROM Assegni AS AAssegni AS A

[…][…]

Gestione di un databaseGestione di un database

Backup e restoreBackup e restore

Import ed export di datiImport ed export di dati

Compattazione degli spaziCompattazione degli spazi

Backup e restoreBackup e restore

Salvataggio e ripristino di informazioniSalvataggio e ripristino di informazioni Salvataggio e ripristino di codice Salvataggio e ripristino di codice

sorgentesorgente Trasporto di informazioniTrasporto di informazioni Trasporto di dati e logicheTrasporto di dati e logiche

Importazione ed Importazione ed esportazione di datiesportazione di dati

Importazione di dati da diverse fontiImportazione di dati da diverse fonti Creazione di strutture atte Creazione di strutture atte

all’accoglimento dei datiall’accoglimento dei dati Esportazione di dati per usi diversi (file Esportazione di dati per usi diversi (file

di testo, ecc.)di testo, ecc.) Schedulazione delle operazioniSchedulazione delle operazioni

Compattazione degli spaziCompattazione degli spazi

Politiche di allocazione degli spaziPolitiche di allocazione degli spazi

… … e se svuoto il database?e se svuoto il database?

Compattazione degli spazi allocatiCompattazione degli spazi allocati

Parte QuartaParte Quarta

Il linguaggio Transact-SQLIl linguaggio Transact-SQL

SELECTSELECT

ColonneColonne Clausola INTOClausola INTO Clausola FROMClausola FROM Clausola WHEREClausola WHERE Operatori e funzioniOperatori e funzioni

COUNTCOUNT DISTINCTDISTINCT SUMSUM MAXMAX ……

SELECT – Clausole avanzateSELECT – Clausole avanzate

JOINJOIN

UNIONUNION

GROUP BYGROUP BY

ORDER BYORDER BY

INSERTINSERT

TabellaTabella

ColonneColonne

ValoriValori

UPDATEUPDATE

TabellaTabella

ColonneColonne

ValoriValori

CondizioniCondizioni

DELETEDELETE

TabellaTabella

CondizioniCondizioni

Le stored procedureLe stored procedure

Interfaccia di accesso al databaseInterfaccia di accesso al database Facilitazione di utilizzo per l’utenteFacilitazione di utilizzo per l’utente Gestione delle variazioni della base datiGestione delle variazioni della base dati Logiche di estrazione delle informazioniLogiche di estrazione delle informazioni Miglioramento delle prestazioniMiglioramento delle prestazioni

Perché una SP?Perché una SP?

SP: La sintassiSP: La sintassi

CREATE PROCEDURE EsempioCREATE PROCEDURE Esempio

@Param1 VARCHAR (15)@Param1 VARCHAR (15)

ASAS

[…][…]

GOGO

Le FunctionLe Function

Logiche di presentazione dei dati Logiche di presentazione dei dati personalizzatepersonalizzate

NON moltiplicazione del codiceNON moltiplicazione del codice

Superamento delle problematiche di Superamento delle problematiche di regional settingsregional settings

Perché le Function?Perché le Function?

Function: La sintassiFunction: La sintassi

CREATE FUNCTION EsempioCREATE FUNCTION Esempio

(@param1VARCHAR(15))(@param1VARCHAR(15))

RETURNS VARCHAR(20)RETURNS VARCHAR(20)

ASAS

BEGINBEGIN

[…][…]

RETURN @sumRETURN @sum

ENDEND

GOGO

I triggerI trigger

Automazione di procedure di controlloAutomazione di procedure di controllo Automazione di procedure collegateAutomazione di procedure collegate Gestione di integrità interne o esterneGestione di integrità interne o esterne Aggancio di strati applicativi esterni a Aggancio di strati applicativi esterni a

SQL ServerSQL Server

Perché i trigger?Perché i trigger?

Trigger: Le tipologieTrigger: Le tipologie

Trigger “classici”Trigger “classici” FOR INSERTFOR INSERT FOR UPDATEFOR UPDATE FOR DELETEFOR DELETE

Trigger “INSTED OF”Trigger “INSTED OF”

Trigger con “COLUMNS_UPDATED”Trigger con “COLUMNS_UPDATED”

Trigger con “IF UPDATE”Trigger con “IF UPDATE”

Trigger: La sintassiTrigger: La sintassi

CREATE TRIGGER EsempioCREATE TRIGGER Esempio

ON TabellaEsempioON TabellaEsempio

FOR DELETE, INSERT, UPDATE FOR DELETE, INSERT, UPDATE

AS AS

BEGINBEGIN

[…][…]

ENDEND

GOGO