Corso baseCorso base
Lorenzo BraidiLorenzo BraidiFormazione e consulenza informaticaFormazione e consulenza informatica
[email protected]@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