Indice Introduzione Scopi del libro Lavorare con il database di esempio Organizzazione del libro Convenzioni utilizzate in questo libro PARTE PRIMA 00_SQL_Beginner_indice.indd V XVII XVII XVIII XIX XXIII SQL Server: Concetti di base 1 Capitolo 1 Sistemi di database e SQL Server 1.1 Sistemi di database: panoramica Vasto assortimento di interfacce utente Indipendenza fisica dei dati Indipendenza logica dei dati Ottimizzazione delle query Integrità dei dati Controllo della concordanza Backup e recupero Sicurezza e autorizzazioni 1.2 Sistemi di database relazionali Lavorare con il database di esempio del libro 1.3 SQL: un linguaggio di database relazionale Convenzioni per la sintassi 1.4 Progetto di database Forme normali Il modello Entità-Relazione (ER) 1.5 Conclusione 1.6 Panoramica di Microsoft SQL Server 1.7 Esercizi 3 5 6 6 6 6 7 7 7 8 8 8 11 12 13 14 16 17 18 19 Capitolo 2 SQL Server Management Studio 21 2.1 Il gruppo di programmi SQL Server e Books Online 21 2.2 Introduzione a SQL Server Management Studio 22 11/02/2006 12.00.41 VI INDICE 2.3 2.4 PARTE SECONDA 00_SQL_Beginner_indice.indd VI Utilizzare Management Studio con il Database Engine di SQL Server Gestire i database utilizzando Object Explorer Sviluppare le attività utilizzando SQL Server Management Studio Conclusione Esercizi Linguaggio Transact-SQL 25 29 35 40 40 43 Capitolo 3 Componenti di SQL 3.1 Oggetti di base di SQL Commenti Identificatori Parole chiave riservate 3.2 Tipi di dati Tipi di dati numerici Tipi di dati stringa Specificare data e ora Tipi di dati derivati Tipi di dati vari Tipi di dati definiti dall’utente 3.3 Predicati 3.4 Funzioni aggregate 3.5 Funzioni scalari Funzioni numeriche Funzioni di data Funzioni di stringa Funzioni di testo/immagine Funzioni di sistema 3.6 Operatori scalari Variabili globali 3.7 Valori Null 3.8 Conclusione 3.9 Esercizi 45 45 47 47 48 48 48 49 51 52 52 53 54 54 55 55 56 57 58 59 61 61 62 64 64 Capitolo 4 Linguaggio di definizione dei dati 4.1 Creare gli oggetti del database Creazione di un database CREATE TABLE: la forma base CREATE TABLE: la forma migliorata CREATE TABLE e i vincoli di integrità dichiarativa Vincoli referenziali Creare altri oggetti del database Vincoli di integrità e domini 4.2 Modificare gli oggetti del database Alterare un database 67 67 68 71 72 73 78 82 84 88 89 11/02/2006 12.00.42 INDICE Alterare una tabella: la forma base Alterare una tabella: la forma migliorata Eliminare gli oggetti del database Conclusione Esercizi 90 91 94 95 95 Capitolo 5 Query semplici 5.1 Dichiarazione SELECT: una forma base 5.2 La clausola WHERE Operatori booleani Operatori IN e BETWEEN Query che utilizzano valori null Operatore LIKE 5.3 Sotto query semplici Sotto query e operatori di confronto Sotto query e operatore IN Operatori ANY e ALL Funzione EXISTS Query nella clausola FROM 5.4 Clausola GROUP BY 5.5 Funzioni aggregate Aggregati pratici Aggregati statistici Superaggregati (operatori CUBE e ROLLUP) Funzioni aggregate definite dall’utente 5.6 Clausola HAVING 5.7 Clausola ORDER BY 5.8 Dichiarazione SELECT e proprietà IDENTITY 5.9 Operatori di set 5.10 Espressioni CASE 5.11 Clausola COMPUTE 5.12 Tabelle temporanee 5.13 Colonne calcolate 5.14 Conclusione 5.15 Esercizi 99 99 101 104 107 110 112 116 116 118 119 121 121 122 124 124 129 130 130 131 132 134 135 140 141 144 145 146 146 Capitolo 6 Query complesse 6.1 Operatore di unione Due forme sintattiche per implementare i join Equijoin Prodotto cartesiano Join naturale Thetajoin Unire più di due tabelle Unire una tabella a sé stessa Join esterno 6.2 Sotto query correlate Funzione EXISTS e sotto query 6.3 Meglio utilizzare i join o le sotto query? 4.3 4.4 4.5 00_SQL_Beginner_indice.indd VII VII 149 149 150 151 154 155 157 158 160 161 164 166 169 11/02/2006 12.00.42 VIII INDICE 6.4 6.5 6.6 00_SQL_Beginner_indice.indd VIII Vantaggi delle sotto query Vantaggi delle unioni Common Table Expressions CTE e query non ricorsive CTE e query ricorsive Conclusione Esercizi 170 170 171 171 173 177 178 Capitolo 7 Modifica dei contenuti di una tabella 7.1 Dichiarazione INSERT Inserire una singola riga Inserire più righe 7.2 Dichiarazione UPDATE 7.3 Dichiarazione DELETE 7.4 Conclusione 7.5 Esercizi 181 181 182 183 185 187 189 189 Capitolo 8 Stored procedure e funzioni definite dall’utente 191 8.1 Estensioni SQL 191 Blocco di dichiarazioni 192 Dichiarazione IF 192 Dichiarazione WHILE 193 Variabili locali 194 Dichiarazioni procedurali varie 195 Gestire gli eventi con le dichiarazioni TRY e CATCH 195 8.2 Stored procedure 198 Creazione ed esecuzione delle stored procedure 199 Stored procedure di sistema 202 Stored Procedure e CLR 203 8.3 Funzioni definite dall’utente 207 Creazione ed esecuzione delle funzioni definite dall’utente 207 Funzioni definite dall’utente e CLR 211 8.4 Conclusione 213 8.5 Esercizi 213 Capitolo 9 Indici e ottimizzazione delle query 9.1 Indici Indici raggruppati e non raggruppati Indici e dichiarazioni Transact-SQL corrispondenti Modificare le informazioni degli indici Indici e chiavi Linee guida per la creazione di indici 9.2 Criteri generali per migliorare l’efficienza Unioni e sotto query correlate a confronto 215 215 217 218 224 225 226 227 228 11/02/2006 12.00.43 INDICE 9.3 9.5 9.6 9.7 00_SQL_Beginner_indice.indd IX Dichiarazioni incomplete Operatore LIKE Dichiarazioni Transact-SQL per l’ottimizzazione delle query Ottimizzatore di query Statistiche dell’ottimizzatore Implementare l’operazione di unione Hint dell’ottimizzatore Il comando DBCC e gli indici Conclusione Esercizi IX 229 229 230 232 233 234 236 244 245 245 Capitolo 10 Viste 10.1 Dichiarazioni DDL e viste Creare una vista Alterare ed eliminare le viste 10.2 Dichiarazioni DML e viste Recupero delle viste La dichiarazione INSERT e una vista La dichiarazione UPDATE e una vista La dichiarazione DELETE e una vista 10.3 Viste indicizzate Creare una vista indicizzata Vantaggi delle viste indicizzate Utilizzare le viste indicizzate 10.4 Conclusione 10.5 Esercizi 247 247 248 252 253 253 254 256 258 259 260 262 263 265 265 Capitolo 11 Catalogo di sistema 11.1 Tabelle di sistema Sysobjects Syscolumns Sysindexes Sysusers Sysdatabases Sysdepends Sysconstraints 11.2 Viste di catalogo Sys_objects Sys.database_principals 11.3 Interrogare le viste di catalogo 11.4 Altri modi per accedere alle informazioni del sistema System Procedure unzioni di sistema Funzioni di proprietà Information schema 11.5 Conclusione 11.6 Esercizi 267 267 268 268 269 269 269 269 270 270 271 272 272 274 274 276 277 278 280 281 11/02/2006 12.00.43 X INDICE Capitolo 12 00_SQL_Beginner_indice.indd X Sicurezza di SQL Server 12.1 Autenticazione Policy e meccanismi di cifratura di SQL Server Impostare il livello di sicurezza di SQL Server utilizzando il DDL Impostare la sicurezza di SQL Server utilizzando le system procedure System procedure riguardanti i login 12.2 Schema Divisione tra utente e schema Dichiarazioni DDL riguardanti gli schemi 12.3 Sicurezza del database Impostare l’account utente di database con il DDL Impostare gli account utente di database utilizzando le system procedure Schemi di database predefiniti 12.4 Ruoli Ruoli di server fissi Ruoli di server fissi e loro permessi Ruoli di database fissi Ruoli di database fissi e loro permessi Ruoli dell’applicazione Ruoli di database definiti dall’utente 12.5 Autorizzazione Dichiarazione GRANT Dichiarazione DENY Dichiarazione REVOKE 12.6 Viste e accesso ai dati 12.7 Stored procedure e accesso ai dati 12.8 Conclusione 12.9 Esercizi 283 283 285 286 288 288 289 290 291 293 293 294 295 296 296 297 299 300 302 304 306 306 310 311 312 314 314 315 Capitolo 13 Trigger 317 13.1 Introduzione 317 13.2 Funzionamento dei trigger 318 Aree di applicazione dei trigger AFTER 320 Aree di applicazione dei trigger INSTEAD OF 322 Primo e ultimo trigger 324 Trigger DDL 325 13.3 Trigger e CLR 326 13.4 La clausola OUTPUT 329 13.5 Modificare la struttura del trigger 331 13.6 Conclusione 331 13.7 Esercizi 332 Capitolo 14 Transazioni 14.1 Introduzione 14.2 Dichiarazioni Transact-SQL e transazioni 333 333 335 11/02/2006 12.00.43 INDICE 14.3 14.4 14.5 14.6 14.7 Registro delle transazioni Blocco Granularità del blocco Tipi di blocchi La dichiarazione SELECT e i blocchi Livelli di isolamento Versioning di riga e livello di isolamento snapshot Deadlock Conclusione Esercizi XI 337 338 338 339 342 343 345 347 348 348 Capitolo 15 Ambiente del sistema SQL Server 15.1 Memorizzazione su disco Pagine di dati Oggetti di grandi dimensioni Pagine di indice 15.2 Database di sistema 15.3 Utility Utility bcp Utility osql Utility sqlcmd 15.4 Istanze di SQL Server 15.5 Unicode Codifica dei caratteri 15.6 Architettura di SQL Server Architetture hardware multiprocessore Architettura multithread di SQL Server 15.7 Conclusione 15.8 Esercizi 351 351 352 355 355 355 356 357 358 359 361 362 362 363 363 365 366 367 PARTE TERZA SQL Server: amministrazione del sistema 369 00_SQL_Beginner_indice.indd XI Capitolo 16 Panoramica sull’amministrazione del sistema 371 16.1 Strumenti di amministrazione 371 Il gruppo di programmi di MS SQL Server 2005 372 SQL Computer Manager 373 Viste di gestione dinamiche 374 16.2 Amministratore del sistema 374 16.3 Conclusione 375 Capitolo 17 Pianificazione e installazione di SQL Server 17.1 Pianificazione dell’installazione Scopo di SQL Server 377 377 377 11/02/2006 12.00.43 XII INDICE 17.2 17.3 17.4 17.5 Capitolo 18 00_SQL_Beginner_indice.indd XII Requisiti hardware e software Edizioni di SQL Server Consigli per l’installazione Installazione di SQL Server Inizio dell’installazione Configurazione di SQL Server dopo l’installazione Creazione di gruppi di server e registrazione del server Impostazione delle opzioni del server Avvio e fermata di un’istanza di SQL Server Conclusione Gestione di database e di file di database 18.1 Gestione di filegroup Visualizzazione di filegroup 18.2 Gestione di database Creazione di database Visualizzazione e modifica delle opzioni di database Modifica di database 18.3 Gestione di log di transazioni 18.4 Conclusione 18.5 Esercizi 378 379 380 381 381 386 387 388 389 389 391 391 392 393 393 395 397 399 400 400 Capitolo 19 Gestione della sicurezza 401 19.1 Introduzione 401 Implementazione di una modalità di sicurezza 402 Gestione di login di SQL Server 402 19.2 Permessi di sicurezza per i database 404 Ruoli 404 19.3 Gestione dei permessi 407 19.4 Conclusione 409 19.5 Esercizi 410 Capitolo 20 Backup e recupero 20.1 Introduzione Errori software e hardware Log di transazioni 20.2 Backup Backup di database completo Backup differenziale Backup di log di transazioni Backup di file di database 20.3 Effettuazione di backup Backup mediante l’utilizzo di Management Studio 411 411 411 412 413 413 413 414 415 416 416 11/02/2006 12.00.43 INDICE 20.4 20.5 20.6 Capitolo 21 Capitolo 22 00_SQL_Beginner_indice.indd XIII Backup mediante l’utilizzo di dichiarazioni Transact-SQL Database per cui effettuare il backup Riduzione del tempo di fermo del sistema Alta disponibilità Recupero Recupero automatico Recupero manuale Modelli di recupero Recupero da un contrassegno Conclusione Esercizi Automazione dell’amministrazione di sistema 21.1 Introduzione 21.2 SQL Server Agent Esecuzione e configurazione di SQL Server Agent 21.3 Creazione di processi e operatori Passaggi per il processo Creazione di un processo mediante l’utilizzo di SQL Server Management Studio Creazione di pianificazioni di processo Creazione di operatori per la notifica Visualizzazione del log storico dei processi 21.4 Allarmi Messaggi di errore Log di errori di SQL Server Log di eventi Definizione di allarmi per la gestione di errori di SQL Server Definizione di allarmi per la gestione di errori definiti dall’utente 21.5 Conclusione 21.6 Esercizi Prestazioni e ottimizzazione 22.1 Introduzione 22.2 Fattori che influiscono sulle prestazioni Applicazioni di database e prestazioni Server di database e prestazioni Risorse di sistema e prestazioni CPU 22.3 Strumenti di monitoraggio Strumenti per le prestazioni di applicazioni Monitoraggio specifico di SQL Server Strumenti per il monitoraggio delle risorse di sistema XIII 419 421 423 426 427 428 428 436 439 439 440 441 441 442 443 443 444 445 446 448 449 451 451 452 452 453 455 457 458 459 459 460 460 462 463 464 468 469 473 475 11/02/2006 12.00.44 XIV INDICE 22.4 22.5 Capitolo 23 Capitolo 24 PARTE QUARTA Capitolo 25 00_SQL_Beginner_indice.indd XIV Scelta dello strumento adatto SQL Server Profiler Database Engine Tuning Advisor Conclusione 477 478 479 485 Partizionamento di dati 23.1 Introduzione Metodi per il partizionamento di dati 23.2 Passaggi per la creazione di tabelle partizionate Definizione degli obiettivi di partizionamento Determinazione della chiave di partizione e del numero di partizioni Creazione di un filegroup per ciascuna partizione Creazione di funzione di partizione e di schema di partizione Collocazione di oggetti 23.3 Linee guida per il partizionamento di tabelle e indici 23.4 Conclusione 487 488 488 489 489 Replicazione di dati 24.1 Dati distribuiti Metodi per la distribuzione di dati 24.2 Replicazione di SQL Server: panoramica Publisher, distributor e subscriber Pubblicazioni e articoli Tipi di replicazione Modelli di replicazione 24.3 Gestione della replicazione Configurazione dei server di distribuzione e di pubblicazione Impostazione delle pubblicazioni Impostazione dei server di sottoscrizione 24.4 Conclusione 24.5 Esercizi 497 497 498 499 499 500 502 505 506 Microsoft Analysis Services Data warehousing: introduzione 25.1 Elaborazione di transazioni online e data warehousing Elaborazione di transazioni online Sistemi di data warehouse 25.2 Data warehouse e data mart 25.3 Progettazione di data warehouse Modello dimensionale 490 490 491 494 495 495 506 508 509 510 511 513 515 515 516 517 518 520 520 11/02/2006 12.00.44 INDICE 25.4 25.5 25.6 25.7 25.8 Capitolo 26 523 524 525 526 527 528 528 Microsoft Analysis Services 26.1 BI Development Studio 26.2 Analysis Services e cubi Creazione di un cubo Progettazione dell’aggregazione di memorizzazione ed elaborazione del cubo Spostamento in un cubo 26.3 Conclusione 531 532 537 538 Capitolo 27 Business Intelligence ed SQL 27.1 Estensioni OLAP in Transact-SQL Operatore CUBE Operatore ROLLUP Funzioni di classificazione Clausola TOP n Operatori PIVOT e UNPIVOT 27.2 Conclusione 545 545 546 549 550 555 557 558 Capitolo 28 Microsoft Reporting Services 28.1 Introduzione Gestione report Server report Database di Server report 28.2 Creazione di report Creazione guidata report Report parametrizzati 28.3 Elaborazione e gestione di report 28.4 Accesso e recapito di report Report a richiesta Sottoscrizione a report 28.5 Conclusione 28.6 Esercizi 561 561 562 562 562 563 564 570 572 573 574 575 576 576 PARTE QUINTA Capitolo 29 00_SQL_Beginner_indice.indd XV Cubi e modalità di memorizzazione MOLAP, ROLAP e HOLAP Aggregazione Quanto aggregare? Accesso ai dati Conclusione Esercizi XV 540 542 543 Supporto XML 577 Panoramica di XML 29.1 World Wide Web 29.2 XML e linguaggi relativi 579 579 580 11/02/2006 12.00.44 XVI INDICE 29.3 29.4 Capitolo 30 00_SQL_Beginner_indice.indd XVI XML: concetti fondamentali Document Type Definition (DTD) XML Schema Conclusione 581 584 586 586 SQL Server 2005 e XML 30.1 Memorizzazione di XML in database relazionali 30.2 Il tipo di dati XML Indicizzazione di una colonna XML XML tipizzato e non tipizzato 30.3 Creazione di documenti XML mediante l’utilizzo della clausola FOR XML Modalità RAW Modalità AUTO Modalità EXPLICIT Modalità PATH Specifica di direttiva con modalità diverse 30.4 Linguaggi di query XML 30.5 Conclusione 589 589 591 593 594 Indice analitico 605 596 597 598 599 600 601 603 604 11/02/2006 12.00.44