MS SQL Server Componenti Logici. Implementazione. Prof. Pasquale Basile pabasile@unina.it



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

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

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)

Gestione delle tabelle

Definizione di domini

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

Giovanna Rosone 04/03/ /03/2010 SQL, Istruzioni per la modifica dello schema

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

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

SQL Sintassi Dei Comandi

SQL (STRUCTURED QUERY LANGUAGE)

Le versioni di SQL Server sono state molte; traggo le principali da Wikipedia:

DBMS (Data Base Management System)

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Basi di Dati: Corso di laboratorio

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.

PROGRAMMA DI CLASSE 5AI

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

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

User Tools: DataBase Manager

Microsoft SQL Server

Il linguaggio SQL: DDL di base

Introduzione a SQL Server

Volumi di riferimento

SQL PER LA DEFINIZIONE DI BASI DI DATI

Architettura. Architettura. Introduzione a SQL Server Architettura

Introduzione a SQL Server 2005

Sistemi Mobili e Wireless Android - Dati persistenti: SQLite

Introduzione a SQL Server

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati

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

DUE GRUPPI DI COMANDI

Basi di Dati e Sistemi Informativi. Structured Query Language

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

Domini elementari, 2. Basi di dati. Domini elementari, 4. Domini elementari, 3. Domini definiti dagli utenti. Domini elementari, 5

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

SQL - Tipi di dato Il linguaggio SQL

ROUTINE E PROGRAMMAZIONE

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

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

GERARCHIE RICORSIVE - SQL SERVER 2008

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

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:

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base Variabili, operatori e commenti Array...

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

Linguaggio SQL. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Corso di Laboratorio di Basi di Dati

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

Corso di Informatica Generale 1 IN1. Linguaggio SQL

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

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

Corso sul linguaggio SQL

Corso di Informatica (Basi di Dati)

SQL (STRUCTURED QUERY LANGUAGE)

Basi di Dati Corso di Laura in Informatica Umanistica

IL DAT A B A S E DI ALGE B R A N D O

Vincoli di Integrità

CORSO DI SQL SERVER 7

SQL Server: miti da sfatare

Triggers. Basi dati attive. Trigger. Indipendenza della conoscenza

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

SQL/OLAP. Estensioni OLAP in SQL

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro)

Laboratorio di Basi di Dati e Web

Esercitazione 8 Mercoledì 21 gennaio 2015 (2 ore) DDL e progettazione

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

MS SQL Server Supporto XML. HTTP e SQL Server. SQL Server Over HTTP: Setup. Accesso HTTP verso SQL Server. OpenXML. Updategrams

SQL. Alcune note sulla definizione dei dati

Database per la gestione delle ferrovie dello stato. I treni gestiti sono identificati da un numero. Su ciascun treno sono specificate le classi per

Corso sul linguaggio SQL

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

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

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D

Form Editor. Dove NomeProfilo è personalizzabile.

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment


VIDES. Mariagrazia Rossi

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

Analisi dei dati di Navision con Excel

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3

Basi di Dati prof. Letizia Tanca

SQL: definizione schema

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

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

Introduzione a MySQL

Esame di Stato Istituto Tecnico Industriale Soluzione della Seconda Prova Indirizzo: INFORMATICA Tema: INFORMATICA Anno Scolastico:

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

a) Si progetti uno schema concettuale Entità-Relazioni per lo scenario più sotto descritto.

MAX, SUM, AVG, COUNT)

Basi di Dati Relazionali

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

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere;

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Tool. Basi di Dati e Sistemi Informativi Prof. Marco Di Felice Dott.sa Sara Zuppiroli A.A

Guida all'uso Di mylittleadmin

elicaweb manuali - Vendite: come iniziare - pagina 1 di 9

Transcript:

Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Corso di Complementi di Informatica MS SQL Server Componenti Logici Prof. Pasquale Basile pabasile@unina.it Implementazione Un database è implementato fisicamente mediante due o più files su memoria di massa Implementazione fisica trasparente Solo gli amministratori hanno occasione di lavorare con l implementazione fisica database di sistema (master, tempdb, mdsb, model) Uno o più database utente in funzione del modello aziendale

Tipi di dati binary bigint bit Char datetime decimal Float image Int Money nchar ntext nvarchar Numeric Real smalldatetime Smallint smallmoney sql_variant sysname text timestamp tinyint varbinary varchar uniqueidentifier TABLE nchar, ntext e nvarchar sono le versioni UNICODE timestamp non identifica una data e un orario e non corrisponde allo standard SQL-92 (datetime) Tipi di dati: TABLE e UDF Il tipo TABLE si usa soltanto per variabili TSQL e valori di ritorno delle funzioni utente contiene un result-set di uno statement SQL Valori NULL Assenza di valori Raccomandazione: non far accettare valori nulli UDT (User Defined Types) EXEC sp_addtype datanascita, datetime, 'NULL' CREATE TABLE impiegato ( imp_id char(5), imp_nome char(30), imp_cognome char(40), imp_datanascita datanascita ) Tabelle di Sistema e Temporanee Tabelle di sistema contengono dati relativi alla configurazione del server e dei database Tabelle temporanee locali (#) visibili soltanto alla connessione che le ha create. Rimosse automaticamente globali (##) visibili a tutte le connessioni rimosse manualmente o automaticamente

Viste (View) Tabella virtuale o Query memorizzata (stored query) è una relazione in senso formale i dati non sono memorizzati fisicamente Utilizzo: limitare l accesso a proiezioni, selezioni, join) espandere l accesso ad aggregazioni (union) Aggiornabili Richiamabili in tutte le sintassi ove è prevista una relazione Viste Indicizzate Prestazioni elevate Dati memorizzati fisicamente e aggiornati automaticamente Viste: esempi CREATE VIEW titleview AS SELECT title, au_ord, au_lname, price, ytd_sales, pub_id FROM authors AS a JOIN titleauthor AS ta ON (a.au_id = ta.au_id) JOIN titles AS t ON (t.title_id = ta.title_id) SELECT * FROM titleview CREATE VIEW PartitionedView AS SELECT * FROM dbase.dbo.tabella1 UNION ALL SELECT * FROM Server2.dbase.dbo.Tabella2 UNION ALL SELECT * FROM Server3.dbase.dbo.Tabella3 Stored Procedures Gruppo di istruzioni TSQL compilate in un unico execution plan Ritorno Dati: parametri in OUTPUT (dati o variabile cursore) Codici di ritorno (interi) un result set per ogni SELECT della SP un cursore globale che può essere referenziato al di fuori della procedura Migliorano la codifica della logica Incapsulano operazioni su tabelle delicate Migliorano le prestazioni essendo eseguite dal lato server i risultati intermedi non vengono restituiti al client in caso di confronti con SELECT

Definizione di una stored procedure USE Northwind DROP PROCEDURE OrderSummary CREATE PROCEDURE OrderSummary @MaxQuantity INT OUTPUT AS -- SELECT ritorna la sintesi delle vendite per impiegato SELECT Ord.EmployeeID, SummSales = SUM(OrDet.UnitPrice * OrDet.Quantity) FROM Orders AS Ord JOIN [Order Details] AS OrDet ON (Ord.OrderID = OrDet.OrderID) GROUP BY Ord.EmployeeID ORDER BY Ord.EmployeeID -- SELECT per settare il parametro di ritorno SELECT @MaxQuantity = MAX(Quantity) FROM [Order Details] -- Ritorna il numero di item ordinati RETURN (SELECT SUM(Quantity) FROM [Order Details]) Test -- Test della stored procedure -- DECLARE variabili per il valore di ritorno e il -- parametro di output DECLARE @OrderSum INT DECLARE @LargestOrder INT -- Esegue la procedura che ritorna il result set -- della prima select Execute the procedure EXEC @OrderSum = OrderSummary @MaxQuantity = @LargestOrder OUTPUT -- Utilizziamo il valore di ritorno e il parametro di output PRINT 'The size of the largest single order was: ' + CONVERT(CHAR(6), @LargestOrder) PRINT 'The sum of the quantities ordered was: ' + CONVERT(CHAR(6), @OrderSum) Output EmployeeID SummSales ----------- -------------------------- 1 202,143.71 2 177,749.26 3 213,051.30 4 250,187.45 5 075,567.75 6 078,198.10 7 141,295.99 8 133,301.03 9 082,964.00 The size of the largest single order was: 130 The sum of the quantities ordered was: 51317

Funzioni Built-in User Defined CREATE FUNCTION Consentono parametri di input Ritornano un singolo valore (che può essere di tipo TABLE) Si dichiare una variabile interna di tipo TABLE, la si popola di righe e la si usa come valore di ritorno Alternative alle VIEW Può essere referenziata come una relazione (FROM, etc...) Integrità Data Integrity Referential Integrity Constraints ( Vincoli ) valori permessi nelle colonne Rules Defaults Triggers Contraints Meccanismo standard per imporre l integrità preferibili a trigger, rules e defaults NOT NULL Non consente valori NULL CHECK verifica l integrità di dominio ammessi CHECK multipli per singola colonna... classe int, CONSTRAINT chk_classe CHECK (classe BETWEEN 0 and 5) UNIQUE forza l unicità dei valori di una determinata colonna codice_prodotto char(30) UNIQUE,

Contraints PRIMARY KEY identifica chiave primaria (no NULL, UNIQUE) codice_prodotto char(30) PRIMARY KEY, FOREIGN KEY identifica una chiave che fa riferimento a una candidata di un altra tabella: mag_codice_prodotto char(30) FOREIGN KEY REFERENCES prodotto(codice_prodotto) ON DELETE NO ACTION, ON DELETE ON UPDATE NO ACTION CASCADE VINCOLI DI TABELLA indipendenti dalla dichiarazione di una colonna (es. chiave primaria composta da due colonne) CONSTRAINT p_key PRIMARY KEY (a1, a2) Rules Servono per forzare l integrità di dominio Costrutto retrocompatibile... usare CHECK CREATE RULE cr_chk AS @cr BETWEEN 0 and 100000 CREATE TABLE cust_sample ( cust_id int PRIMARY KEY, cust_name char(50), cust_address char(50), cust_credit_limit money, ) sp_bindrule cr_chk, 'cust_sample.cust_credit_limit' Defaults Specifica i valori di default di una colonna L espressione deve valutare a una costante: Metodi: costante funzione espressione matematica DEFAULT keyword [raccomandato] CREATE DEFAULT [obsoleto]

Triggers Classe di S.P. speciali che vengono eseguite automaticamente in corrispondenza di un INSERT, UPDATE o DELETE Utili per forzare l integrità referenziale, ma è preferibile utilizzare i vincoli (CONSTRAINTS) CREATE TRIGGER (nome) ON (tabella) FOR (operazione) AS... FOR AFTER (default) Il trigger viene eseguito dopo il completamento dell operazione INSTEAD OF Il trigger viene eseguito al posto dell operazione. Funziona sia su tabelle che VIEW e si può utilizzare come metodo per ottenere VIEW aggiornabili anche su più tabelle Indici CLUSTERED Condiziona l organizzazione del data file: i dati sono ordinati secondo l indice NONCLUSTERED Struttura separata dal data file Fattore di riempimento definisce la densità delle pagine associate all indice condiziona le performance dell associazione dati<->indici Indice basso => migliora le prestazioni di INSERT, UPDATE Indice alto => migliora la navigazione riducendo il numero di I/O Indici USE pubs CREATE TABLE emp_sample ( emp_id int PRIMARY KEY CLUSTERED, emp_name char(50), emp_address char(50), emp_title char(25) UNIQUE NONCLUSTERED ) CREATE NONCLUSTERED INDEX sample_nonclust ON emp_sample(emp_name) Index Tuning Wizard

Protezione e sicurezza Login Necessari per la connessione a SQL-Server Users [Utenti] Identifica un utente all interno di un database Roles [Ruoli] Mansioni che possono competere a un utente mansioni di sistema mansioni di database Groups [Gruppi] obsoleti in SQL2000. sostituiti dai gruppi del S.O. Ruoli predefiniti (database) Sysadmin Serveradmin Setupadmin Securityadmin Processadmin Dbcreator Diskadmin bulkadmin Consente di eseguire qualsiasi attività in SQL Server. Consente di impostare opzioni di configurazione valide per tutto il server e di chiudere il server. Consente di gestire i server collegati e le procedure di avvio. Consente di gestire gli account di accesso e le autorizzazioni CREATE DATABASE nonché di leggere i log degli errori e modificare le password. Consente di gestire i processi in esecuzione in SQL Server. Consente di creare, modificare ed eliminare i database. Consente di gestire i file su disco. Consente di eseguire istruzioni BULK INSERT. Ruoli predefiniti (database) db_owner db_accessadmin db_securityadmin db_ddladmin db_backupoperator db_datareader db_datawriter db_denydatareader db_denydatawriter Dispone di tutte le autorizzazioni del database. Consente di aggiungere o rimuovere gli ID utente. Consente di gestire tutte le autorizzazioni, i proprietari degli oggetti, i ruoli e l'appartenenza ai ruoli. Consente di eseguire tutte le istruzioni DDL, ma non le istruzioni GRANT, REVOKE o DENY. Consente di eseguire le istruzioni DBCC, CHECKPOINT e BACKUP. Consente di selezionare tutti i dati di qualsiasi tabella utente del database. Consente di modificare tutti i dati di qualsiasi tabella utente del database. Impedisce di selezionare i dati di tutte le tabelle utente del database. Impedisce di modificare i dati di tutte le tabelle utente del database.