SQL Server 7.0 1
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 2
Strumenti per la gestione Enterprise Manager Query Analyzer 3
Enterprise Manager Registrazione del Server Metodi di autenticazione Creazione di un database Gli strumenti del database 4
Enterprise Manager Creazione di una tabella Tipi base/tipi definiti dall utente Rule» Range» List» Pattern 5
Esempio DATA MAT PROF MATR NOME COG APPELLO (1,N) ESAME (1,1) (1,1) (1,N) STUDENTE RISULTATO NLISTA 6
Query Manager Collegamento al database Inserimento dati nelle tabelle attraverso query Semplici query di selezione 7
Enterprise Manager Uso dei diagrams per creare nuove tabelle e per modificare l architettura del database Creazione di viste 8
Transact-SQL Generalita Le variabili globali: @@variabile_globale Definizione e uso di nuove variabili DECLARE @variabile tipo SET @variabile = valore 9
Stored Procedures Sono supportati 5 tipi si stored procedures: System Stored Procedures (sp_) Local Stored Procedures Temporary Stored Procedures Remote Stored Pocedures Extended Stored Procedures 10
Stored Procedures La sintassi: CREATE PROC[EDURE] procedure_name [;number] [ {@parameter data_type} [VARYING] [= default] [OUTPUT] ] [,...n] [WITH { RECOMPILE ENCRYPTION RECOMPILE, ENCRYPTION } ] [FOR REPLICATION] AS sql_statement [...n] 11
Stored Procedures Esempio: CREATE PROCEDURE [Aggiorna] @data char(10), @materia char(30), @matricola char (10), @numero int AS UPDATE esame set numlista= @numero where esame.data=@data and esame.matricola= @matricola and esame.materia= @materia 12
Trigger CREATE TRIGGER trigger_name ON table [WITH ENCRYPTION] { {FOR { [DELETE] [,] [INSERT] [,] [UPDATE] } [WITH APPEND][NOT FOR REPLICATION] AS sql_statement [...n]} {FOR { [INSERT] [,] [UPDATE] } [WITH APPEND] [NOT FOR REPLICATION] AS { IF UPDATE (column) [{AND OR} UPDATE (column)] [...n] IF (COLUMNS_UPDATED() {bitwise_operator} updated_bitmask) { comparison_operator} column_bitmask [...n] } sql_statement [...n] }} 13
Trigger I Trigger sono reattivi I Constraints sono controllati prima della esecuzione di trigger Le tabelle possono avere molteplici trigger per ogni azione Solo i proprietari delle tabelle possono avere il permesso di gestire i trigger I trigger non possono essere creati ne su viste ne su tabelle temporanee I trigger non dovrebbero ritornare nessun risultato I trigger possono gestire azioni su piu tabelle 14
Trigger di inserimento Puo essere definito un trigger che si attivi a causa di una operazione di INSERT Tabella logica inserted:e una tabella che conserva una copia delle righe che sono state inserite Le righe di una tabella inserted sono sempre dei duplicati di una o piu righe nella tabella del trigger 15
Trigger di cancellazione Quando viene attivato un trigger di cancellazione, le righe cancellate vengono poste nella tabella deleted. La tabella deleted e una tabella logica che conserva una copia di tutte le righe che sono state cancellate La tabella deleted e la tabella del trigger non hanno righe in comune 16
Trigger di update Una operazione di Update puo essere pensata come una operazione a due passi: La fase di DELETE che seleziona le immagini dei dati precedenti all aggiornamento La fase di INSERT che contiene i dati dopo la fase di aggiornamento Il trigger puo esaminare sia la tabella inserted sia la tabella deleted 17
Esempio CREATE TRIGGER [aggiornanumerolistadef] ON dbo.esame FOR INSERT AS DECLARE @maxnum int DECLARE @data char (10) DECLARE @materia char (30) DECLARE @matricola char (10) if (SELECT COUNT (*) from esame) > 1 SELECT @maxnum = (SELECT MAX(numLista)+1 FROM esame) if (SELECT COUNT (*) from esame) = 1 SELECT @maxnum = 1 Select @data = (Select data from esame where numlista is NULL) Select @materia = (Select materia from esame where numlista is NULL) Select @matricola = (Select matricola from esame where numlista is NULL) EXEC Aggiorna @data, @materia, @matricola, @maxnum 18
Esempio CREATE TRIGGER aggiorna ON [Esame] FOR INSERT AS declare @lista int set @lista =( select max (numlista) from Esame where materia = (select mater from inserted ) and data = (select data from inserted )) if @lista is Null set @lista = 0 set @lista = @lista + 1 update Esame set numlista = @lista where materia = (select materia from inserted ) and data = (select data from inserted ) and matr = (select matr from inserted ) 19
Esempio CREATE TRIGGER [delete] ON [Esame] FOR DELETE AS declare @lista int set @lista = (select numlista from deleted where materia = (select materia from deleted ) and data = (select data from deleted )) Update Esame set numlista = numlista -1 where numlista>@lista and materia = (select materia from deleted ) and data = (select data from deleted ) 20