28th Nov 2023 Tempo di lettura: 22 minuti Le 29 migliori domande di intervista su SQL Server Tihomir Babic server sql domande per un colloquio su sql Indice SQL Server e T-SQL: Cosa c'è da sapere Domande generali sui colloqui SQL Server 1. Che cos'è SQL Server? 2. Può spiegare le diverse edizioni di SQL Server? 3. Quali sono i componenti principali di SQL Server? Domande di intervista su SQL/T-SQL 4. Che cos'è il T-SQL? Qual è la differenza tra SQL e T-SQL? 5. Quali sono i diversi tipi di join in SQL Server? 6. Qual è lo scopo delle clausole GROUP BY e HAVING in T-SQL? 7. Che cos'è una subquery in T-SQL? 8. Quali sono i diversi tipi di subquery? 9. Qual è la differenza tra UNION e UNION ALL? 10. Elencare le funzioni più comuni di SQL Server. 11. Qual è lo scopo delle funzioni COALESCE() e NULLIF()? 12. Cosa sono le funzioni Window Functions in SQL Server? 13. Trovare le prime N righe in SQL Server. 14. Che cosa fanno ROLLUP, GROUPING SETS e CUBE in T-SQL? 15. Che cos'è un CTE in SQL Server? 16. Spiegare cos'è una CTE ricorsiva e come scriverne una in SQL Server. Domande intermedie di SQL Server 17. Come si crea una tabella in SQL Server? 18. Che cos'è una chiave primaria? Che cos'è una chiave esterna? 19. Qual è la differenza tra i comandi DELETE e TRUNCATE? 19. Qual è la differenza tra una tabella e una vista in SQL Server? 20. Può spiegare i diversi tipi di indici in SQL Server? 21. Che differenza c'è tra una funzione e una procedura memorizzata? 22. Qual è la differenza tra una tabella temporanea e una variabile di tabella? 23. Che cos'è un trigger? Quando se ne può usare uno? 24. Qual è la differenza tra Commit e Rollback? Advanced SQL Domande di intervista sul server 25. Puoi spiegare i diversi tipi di replica in SQL Server? 26. Spiegate i diversi tipi di lock in SQL Server. 27. Qual è la differenza tra un Deadlock e un Livelock? 28. Qual è la differenza tra una vista materializzata e una non materializzata? 29. Qual è la differenza tra transazioni implicite ed esplicite? Avete capito le domande del colloquio su SQL Server? Siete alla ricerca di un lavoro in SQL Server? Esaminate queste 29 domande di colloquio su SQL Server e sarete ben preparati. E non preoccupatevi di cercare le risposte: ve le forniamo noi! La prima versione di Microsoft SQL Server è stata rilasciata nel 1989 e ha una ricca storia. Da allora ha fatto molta strada, diventando uno dei motori di database più utilizzati nel settore dei dati. Negli ultimi dieci anni, è stato il terzo motore di database più diffuso. Fonte: https://db-engines.com/en/ranking_trend Se il vostro (prossimo) lavoro richiede di lavorare con database relazionali, è molto probabile che dobbiate farlo con SQL Server. Ad esempio, i modellatori di dati progettano e implementano i database con l'aiuto degli amministratori di database. A tal fine, i modellatori di dati utilizzano SQL Server per creare tabelle e relativi attributi, definire le relazioni tra le tabelle, definire vincoli, tipi di dati e così via. Il database deve poi essere riempito di dati, il che è il compito di un ingegnere dei dati. Questi utilizzano SQL Server per interrogare, integrare, trasformare e caricare i dati. Una volta che tutto è pronto, l'amministratore del database garantisce l'accesso e la sicurezza dei dati: fornisce o revoca l'accesso ai dati, mantiene e fa il backup del database, ne monitora le prestazioni, lo aggiorna e lo ripristina quando necessario. Esiste anche un'intera gamma di mansioni relative ai dati, che si occupano principalmente di utilizzare i dati del database. Si tratta di analisti di dati, analisti finanziari, analisti quantitativi, sviluppatori di BI, statistici e data scientist. Questi ultimi devono essere in grado di reperire i dati in modo indipendente, il che richiede competenze in SQL. SQL Server e T-SQL: Cosa c'è da sapere Sebbene le conoscenze di SQL Server richieste varino da un lavoro all'altro, un aspetto comune a tutti è la conoscenza di T-SQL, il dialetto di SQL Server. Per essere pronti al colloquio di lavoro, è necessario conoscere bene il T-SQL. Il modo migliore per raggiungere questo obiettivo è l'esperienza lavorativa, la risoluzione di domande reali al colloquio e l'utilizzo di corsi interattivi di SQL. Per quest'ultima categoria, suggeriamo il nostro percorso di apprendimento SQL from A to Z in MS SQL Server. Si tratta di sette corsi interattivi che coprono tutto, dalle basi del T-SQL alle estensioni GROUP BY, alle query ricorsive e alle Common Table Expressions. Sono disponibili molti corsi validi; ecco i cinque che suggeriamo ai principianti di SQL Server. Oltre a questo, dovreste anche rispolverare le vostre conoscenze tecniche di SQL Server, poiché il colloquio comprenderà anche domande non correlate a SQL. In questa sede tratteremo il maggior numero possibile di domande di colloquio su SQL Server. Tuttavia, nessun lavoro nel settore dei dati richiede solo la conoscenza di SQL Server. Quindi, come prepararsi per le altre parti del colloquio? Il punto di partenza dovrebbe essere sempre la descrizione del lavoro. Leggete attentamente i requisiti. Potrebbero includere altri linguaggi di programmazione (ad esempio, Python), analisi statistica, ETL, progettazione di database, apprendimento automatico e così via. Immaginate il piano d'azione che vi porterà a essere preparati su tutti questi fronti. E utilizzate tutte le fonti disponibili, come articoli, video su YouTube, corsi, dataset di esercitazione, piattaforme con domande per i colloqui e tutorial di ogni tipo. Ora iniziamo con le domande del colloquio SQL Server. Domande generali sui colloqui SQL Server Spesso gli intervistatori amano porre alcune domande generali su SQL Server come riscaldamento. Iniziamo con alcune facili... 1. Che cos'è SQL Server? Risposta: SQL Server è il sistema di gestione dei database relazionali (RDBMS) di Microsoft. Garantisce l'archiviazione, l'integrità, la sicurezza e l'accesso ai dati. In altre parole, consente di creare, memorizzare, aggiornare, cancellare e recuperare i dati. 2. Può spiegare le diverse edizioni di SQL Server? Risposta: Esistono cinque edizioni di SQL Server. La prima è SQL Server Express, un database gratuito per l'apprendimento e la creazione di piccole applicazioni desktop e server. È utilizzato principalmente da privati e piccole organizzazioni che richiedono solo funzionalità RDBMS di base. SQL Server Developer è concesso in licenza a un utente. Viene utilizzato come sistema di sviluppo e di test, non come server di produzione. Dispone di tutte le funzionalità dell'edizione Enterprise, solo in ambiente non di produzione. Viene utilizzata da sviluppatori e tester. SQL Server Web è progettato per gli host Web e i punti di accesso virtuale Web (VAP). Permette loro di condividere (a basso costo) i servizi e le applicazioni che girano su SQL Server. SQL Server Standard offre funzioni fondamentali di gestione dei dati e di Business Intelligence per le piccole organizzazioni con risorse IT minime. Offre quasi tutte le funzionalità di SQL Enterprise, ma con alcune limitazioni. SQL Enterprise è l'edizione ideale per le grandi organizzazioni. Offre virtualizzazione illimitata, accesso al cloud tramite Azure e le migliori prestazioni, analisi dei dati e sicurezza. È anche l'edizione di SQL Server più costosa. 3. Quali sono i componenti principali di SQL Server? Risposta: SQL Server è costituito da diversi componenti. Il motore di database gestisce l'archiviazione, la sicurezza e la trasformazione dei dati. L'applicazione SQL Server avvia, arresta e mette in pausa il lavoro degli altri componenti. Il suo eseguibile è sqlservr.exe. SQL Server Agent è un task scheduler che si attiva con qualsiasi evento. Il suo eseguibile è sqlagent.exe. SQL Server Browser riceve le richieste di SQL Server e fornisce informazioni sulle istanze di SQL Server installate sul computer. Il suo eseguibile è ssqlbrowser.exe. SQL Server Full-Text Search consente di eseguire ricerche full-text sui dati a caratteri memorizzati nelle tabelle del database. Il suo eseguibile è fdlauncher.exe. SQL Server VSS Writer rende possibile il backup e il ripristino dei database creando copie shadow quando il server SQL non è in esecuzione. Il suo eseguibile è sqlwriter.exe. SQL Server Analysis Services (SSAS) è un componente per l'estrazione e l'analisi dei dati, nonché per la creazione di report e la visualizzazione dei dati attraverso la connettività con strumenti quali PowerBI ed Excel. Consente inoltre di utilizzare Python e R per analisi avanzate. Il suo eseguibile è smsmdsrv.exe. SQL Server Reporting Services (SSRS) è un componente di reporting che consente di creare, distribuire e gestire report grafici, mobili e stampati. Il suo eseguibile è ReportingServicesService.exe. SQL Server Integration Services (SSIS) è uno strumento ETL per l'archiviazione, l'estrazione, la trasformazione, il caricamento e l'integrazione dei dati. Il suo eseguibile è MsDtsSrvr.exe. Domande di intervista su SQL/T-SQL Queste sono le domande di SQL Server che riguardano direttamente T-SQL e i suoi comandi. La maggior parte di esse non richiede dimostrazioni di codifica, ma è comunque necessaria una forte conoscenza di T-SQL per fornire una risposta. Se siete interessati a fare un po' di pratica di codifica prima del colloquio, ecco alcune domande di codifica SQL. 4. Che cos'è il T-SQL? Qual è la differenza tra SQL e T-SQL? Risposta: T-SQL è un dialetto SQL utilizzato per comunicare con il database SQL Server. SQL è un linguaggio open-source sviluppato da IBM, mentre T-SQL è stato creato e appartiene a Microsoft. SQL è un linguaggio non procedurale, cioè esegue una query SQL alla volta. T-SQL è invece un linguaggio procedurale. Ciò significa che le query vengono eseguite a blocchi in un ordine logicamente strutturato. Inoltre, T-SQL ha alcune dichiarazioni, parole chiave e funzioni che non esistono nell'SQL standard. Per maggiori dettagli su questi aspetti, date un'occhiata all'articolo che evidenzia le 14 differenze tra SQL e T-SQL. 5. Quali sono i diversi tipi di join in SQL Server? Risposta: JOINs In SQL Server esistono cinque diversi tipi di join: (INNER) JOIN LEFT (OUTER) JOIN RIGHT (OUTER) JOIN FULL (OUTER) JOIN CROSS JOIN JOIN è un join interno che restituisce le righe corrispondenti di entrambe le tabelle unite. LEFT JOIN è una join esterna che restituisce tutte le righe della prima tabella (sinistra) e solo le righe corrispondenti della seconda tabella (destra). RIGHT JOIN fa lo stesso, ma da destra; restituisce tutte le righe della tabella destra e le righe corrispondenti della tabella sinistra. FULL JOIN è una outer join che combina LEFT JOIN e RIGHT JOIN: restituisce tutte le righe della tabella di sinistra e tutte le righe della tabella di destra. CROSS JOIN restituisce un prodotto cartesiano, ossia tutte le combinazioni di tutte le righe delle tabelle unite. Il nostro foglio di istruzioni sulle JOIN SQL spiega in modo esauriente ognuna di queste unioni con degli esempi. Se volete approfondire, ecco 10 domande di intervista su SQL JOIN. 6. Qual è lo scopo delle clausole GROUP BY e HAVING in T-SQL? Risposta: GROUP BY organizza in gruppi le righe con gli stessi valori in una o più colonne. Viene spesso (ma non sempre) utilizzata con le funzioni aggregate. Potete trovare maggiori dettagli in questo articolo su GROUP BY e 5 esempi di GROUP BY in un altro articolo. HAVING si usa per filtrare i gruppi in base a una condizione specifica. Poiché filtra i gruppi, le funzioni aggregate sono consentite in questa clausola. Ecco un articolo che spiega HAVING in modo più dettagliato. 7. Che cos'è una subquery in T-SQL? Risposta: Una subquery o una query interna è una query inserita all'interno di un'altra query (chiamata query esterna). In T-SQL, le subquery possono essere utilizzate nelle istruzioni SELECT, INSERT, UPDATE e DELETE. Vengono inserite nelle clausole FROM, WHERE o HAVING dell'istruzione T-SQL consentita. 8. Quali sono i diversi tipi di subquery? Risposta: Esistono diversi tipi di subquery. Una subquery scalare è una subquery che restituisce esattamente un valore (una riga e una colonna) come risultato. Viene utilizzata nelle clausole FROM, WHERE e HAVING. Una subquery a righe multiple è una subquery che restituisce più righe e una o più colonne. Si usano nelle stesse clausole delle subquery scalari, ma con gli operatori IN, NOT IN, ANY, ALL, EXISTS o NOT EXISTS. Le sottoquery correlate utilizzano un valore della query esterna. Viene valutato una volta per ogni riga della query esterna. Le sottoquery non correlate funzionano indipendentemente dalla query esterna; non dipendono dai risultati della query esterna. È possibile leggere ulteriori informazioni sui diversi tipi di subquery. 9. Qual è la differenza tra UNION e UNION ALL? Risposta: Sia UNION che UNION ALL uniscono i risultati di due o più query in un unico insieme di risultati. La differenza è che UNION non include i duplicati, mentre UNION ALL sì. Per saperne di più sulla sintassi e sull'uso di questi due metodi, consultare l'articolo UNION vs. UNION ALL. 10. Elencare le funzioni più comuni di SQL Server. Risposta: Ecco le categorie di funzioni e le funzioni più utilizzate in SQL Server. Funzioni stringa: CONCAT() - Unisce due o più stringhe. LEFT() RIGHT() e - Restituiscono il numero di caratteri specificato dall'estremità sinistra o destra di una stringa o da una posizione dichiarata nella stringa. SUBSTRING() LEN() - Restituisce il numero di caratteri della stringa. LTRIM(), RTRIM() & TRIM() - Rimuove spazi o altri caratteri dall'estremità sinistra, destra o da una posizione specificata nella stringa. REPLACE() - Sostituisce tutte le occorrenze di una sottostringa specificata con un'altra stringa. LOWER() e UPPER() - Trasforma tutti i caratteri in minuscolo o maiuscolo, rispettivamente. Funzioni numeriche: ABS() - Restituisce il valore assoluto. ROUND() - Arrotonda un numero alla cifra decimale specificata. Funzioni di data e ora: DATEDIFF() - Restituisce la differenza tra due date specificate. CURRENT_TIMESTAMP() - Restituisce la data e l'ora correnti. DATEADD() - Aggiunge una data o un intervallo di tempo a una data e restituisce una nuova data. DAY(), MONTH(), YEAR() - Restituisce il giorno, il mese o l'anno di una data. Funzioni di aggregazione: COUNT() - Conta il numero di righe restituite da una query. SUM() - Restituisce la somma dei valori. AVG() - Restituisce il valore medio. MIN() - Restituisce il valore minimo. MAX() - Restituisce il valore massimo. Altre funzioni: CAST() & CONVERT() - Converte un valore da un tipo di dati a un tipo di dati specificato. COALESCE() - Restituisce il primo valore nonNULL ISNULL() - Restituisce il valore specificato se l'espressione è NULL o se l'espressione è diversa. NULLIF() - Restituisce NULL se due espressioni sono uguali. 11. Qual è lo scopo delle funzioni COALESCE() e NULLIF()? Risposta: COALESCE() restituisce il primo valore nonNULL. NULLIF() restituisce NULL se due espressioni sono uguali. Ecco come utilizzare COALESCE() in SQL. 12. Cosa sono le funzioni Window Functions in SQL Server? Risposta: Queste funzioni eseguono calcoli sull'insieme di righe relative alla riga corrente. Sono simili alle funzioni aggregate, ma a differenza di queste, le funzioni finestra non condensano il risultato in un'unica riga. Ciò consente di visualizzare contemporaneamente i valori aggregati e quelli delle singole righe. Le funzioni finestra in SQL Server sono utilizzate per la classificazione, l'aggregazione e l'analisi. Per ripassare i concetti più importanti sulle funzioni finestra, potete consultare il nostro Cheat Sheet di SQL Window Functions. Potete mettere in pratica quanto appreso con questi 11 esercizi sulle funzioni finestra di SQL. E se volete prepararvi per il colloquio di lavoro, mettete alla prova la vostra conoscenza di queste 10 domande di colloquio sulle funzioni finestra di SQL. 13. Trovare le prime N righe in SQL Server. Risposta: Se vogliamo restituire le 5 righe più importanti della tabella album tabella, si può fare in questo modo: SELECT TOP 5 * FROM albums; 14. Che cosa fanno ROLLUP, GROUPING SETS e CUBE in T-SQL? Risposta: Sono tutte estensioni di GROUP BY. ROLLUP consente di creare più insiemi di raggruppamenti e di aggiungere subtotali e totali generali. Con GROUPING SETS è possibile definire più insiemi di raggruppamenti, il che equivale a combinare diverse clausole di GROUP BY in un'unica query. CUBE consente di creare gruppi per le possibili combinazioni di colonne e di aggiungere subtotali. 15. Che cos'è un CTE in SQL Server? Risposta: Una CTE, o Common Table Expression, è il risultato temporaneo di un'istruzione SELECT. Sono simili alle subquery, ma a differenza di queste ultime, le CTE possono essere utilizzate più volte all'interno della stessa query. Sono anche simili alle tabelle temporanee. Tuttavia, il risultato della CTE non viene memorizzato nella memoria del database; la CTE deve essere eseguita ogni volta che il suo risultato viene utilizzato da una query. I risultati delle CTE possono essere citati nelle istruzioni SELECT, INSERT, UPDATE, DELETE e MERGE. Per maggiori dettagli, consultate l'articolo che spiega le CTE in SQL Server. Per approfondire le conoscenze, ecco sette esempi di CTE da cui imparare. 16. Spiegare cos'è una CTE ricorsiva e come scriverne una in SQL Server. Risposta: Una CTE ricorsiva fa riferimento a se stessa. Come una CTE normale, una CTE ricorsiva in SQL Server viene scritta utilizzando la clausola WITH. La prima parte di una CTE ricorsiva è un membro di ancoraggio, che produce il risultato di base della CTE. Questo risultato viene unito al risultato di un'altra query, che viene chiamata membro ricorsivo perché fa riferimento al membro di ancoraggio. L'unione viene eseguita con UNION ALL. L'uso di UNION non funzionerebbe (a differenza di altri database). La terza parte di una CTE ricorsiva è la condizione di terminazione, che specifica le condizioni che interromperanno la ricorsione, che altrimenti potrebbe continuare all'infinito. Questo articolo sui CTE ricorsivi vi insegnerà come trasformare la risposta precedente in codice. Domande intermedie di SQL Server Vediamo ora le domande per gli utenti intermedi di SQL Server. 17. Come si crea una tabella in SQL Server? Risposta: Le tabelle in SQL Server vengono create con il comando CREATE TABLE. In esso si specificano il nome della tabella, i nomi delle colonne e il tipo di dati accettato da ciascuna colonna. La sintassi è la seguente: CREATE TABLE table_name ( column_1 datatype, column_2 datatype, column_3 datatype, … ); 18. Che cos'è una chiave primaria? Che cos'è una chiave esterna? Risposta: La chiave primaria è una colonna (o una combinazione di colonne) che garantisce l'identificazione univoca delle righe di una tabella. Una chiave esterna è una colonna o una combinazione di colonne di una tabella che fa riferimento alla chiave primaria di un'altra tabella. 19. Qual è la differenza tra i comandi DELETE e TRUNCATE? Risposta: Anche se possono sembrare simili, appartengono a categorie diverse di comandi SQL. DELETE è un comando DML (Data Manipulation Language) utilizzato per eliminare tutte o alcune righe (utilizzando la clausola WHERE ) dalla tabella. TRUNCATE è un comando del linguaggio di definizione dei dati (DDL). Elimina tutte le righe dalla tabella; non è possibile utilizzarlo per eliminare solo alcune righe. Un'altra differenza è che TRUNCATE non registra le modifiche di ogni riga nel registro, quindi è più veloce di DELETE. DELETE cancella riga per riga, con ogni cancellazione registrata nel registro. 19. Qual è la differenza tra una tabella e una vista in SQL Server? Risposta: Una tabella è un oggetto di database che rappresenta l'archiviazione primaria dei dati nei database relazionali. È composta da righe e colonne ed è memorizzata. Una vista è una query memorizzata che dà come risultato una tabella virtuale contenente righe e colonne di dati. Una vista non contiene dati in sé e li produce solo quando viene eseguita. Questo migliora la facilità d'uso e la sicurezza dei dati. Inoltre, consente di risparmiare memoria, poiché il risultato della vista non viene memorizzato. 20. Può spiegare i diversi tipi di indici in SQL Server? Risposta: In SQL Server sono supportati questi indici: Hash Ottimizzato per la memoria e non clusterizzato Arricchito Non raggruppato Unico Deposito di colonne Indice con colonne incluse Indice su colonne calcolate Filtrato Spaziale XML Testo completo Le due categorie principali di indici sono clustered e nonclustered. Gliindici clusterizzati fanno parte della struttura della tabella e determinano l'ordine fisico di memorizzazione e ordinamento in base al valore della chiave dell'indice. Per ogni tabella può esistere un solo indice clusterizzato. Quando si cercano i dati, la query scorre la tabella riga per riga fino a trovare l'indice specificato. Gliindici non clusterizzati contengono valori chiave e ogni valore chiave ha un puntatore alla riga di dati che contiene il valore chiave. Ciò significa che la query va direttamente alla riga di dati con l'indice specificato, senza dover passare attraverso tutti i dati precedenti. Questi indici sono strutturati e memorizzati separatamente dalle tabelle indicizzate. 21. Che differenza c'è tra una funzione e una procedura memorizzata? Risposta: Le funzioni sono routine che restituiscono valori calcolati e non possono apportare modifiche agli oggetti del database. Devono avere almeno un parametro e restituire un risultato. In SQL Server si distingue tra funzioni integrate e funzioni definite dall'utente. Le funzioni integrate vengono fornite con SQL Server e sono suddivise nelle seguenti categorie: Lefunzioni aggregate eseguono un calcolo su un gruppo di righe (ad esempio, utilizzando GROUP BY e i valori delle colonne condivise) e restituiscono un singolo valore per l'intero gruppo. Lefunzioni analitiche eseguono calcoli sull'insieme di righe relative alla riga corrente. Si tratta di funzioni aggregate a finestra. Lefunzioni di manipolazione dei bit rendono più efficiente il lavoro con le informazioni binarie. Lefunzioni di classificazione (cioè le funzioni finestra di classificazione) classificano le righe e/o i dati in un ordine particolare. Le funzioniRowset contengono insiemi di righe con tutti i valori delle colonne. Possono essere referenziate al posto delle tabelle nelle istruzioni T-SQL. Lefunzioni scalari accettano un parametro e restituiscono un valore. Le funzioni definite dall'utente hanno tutte le caratteristiche delle funzioni integrate, solo che sono create dagli utenti. È possibile crearle, memorizzarle e richiamarle in qualsiasi momento. Le stored procedure sono istruzioni SQL precompilate che eseguono ripetutamente una serie di azioni. A differenza delle funzioni, le stored procedure non necessitano di parametri, non devono restituire un risultato e possono modificare gli oggetti del database. INSERTI comandi UPDATE e DELETE sono ammessi nelle stored procedure, ma non nelle funzioni. Le funzioni funzionano con SELECT, WHERE e HAVING; le stored procedure no. Le stored procedure possono usare transazioni e chiamare funzioni. Le funzioni, invece, non possono utilizzare le transazioni né chiamare le stored procedure. 22. Qual è la differenza tra una tabella temporanea e una variabile di tabella? Risposta: Le tabelle temporanee sono la memorizzazione temporanea dei risultati di una query. Sono disponibili solo per la sessione in cui sono state create. Una variabile di tabella è una variabile locale che, come la tabella temporanea, memorizza temporaneamente i dati. Le variabili di tabella sono utilizzate nelle funzioni, nelle stored procedure e nei batch. Poiché le tabelle temporanee sono tabelle vere e proprie, sono più adatte a contenere grandi quantità di dati rispetto alle variabili di tabella. Ciò significa che è possibile utilizzare i comandi SELECT INTO, ALTER TABLE e TRUNCATE con le tabelle temporanee. È possibile creare indici o fare tutto ciò che si farebbe con una tabella "normale". Le tabelle temporanee possono essere utilizzate anche nelle transazioni e nelle stored procedure, ma non nelle funzioni. 23. Che cos'è un trigger? Quando se ne può usare uno? Risposta: Un trigger è un tipo di procedura memorizzata che viene eseguita automaticamente (cioè attivata) quando si verifica un evento specifico. I trigger DML si attivano quando un utente cerca di modificare i dati della tabella utilizzando INSERT, UPDATE o DELETE. I trigger DDL vengono eseguiti quando gli utenti utilizzano CREATE, ALTER o DROP. Esistono anche trigger di accesso che si attivano quando un utente stabilisce una connessione con SQL Server. Un esempio di utilizzo di un trigger DML è quello di una tabella che memorizza i dati dei dipendenti, compreso il loro stipendio. Si potrebbe creare un trigger per ogni volta che qualcuno cambia le informazioni su un dipendente; il trigger memorizzerà le informazioni modificate in una tabella separata. In questo modo, si può avere una panoramica storica delle modifiche alle informazioni di ciascun dipendente. 24. Qual è la differenza tra Commit e Rollback? Risposta: COMMIT TRANSACTION salva in modo permanente tutte le modifiche apportate ai dati da una transazione. ROLLUP TRANSACTION consente di annullare tutte le modifiche avvenute dopo l'ultimo commit delle modifiche alla transazione. Advanced SQL Domande di intervista sul server Approfondiamo la conoscenza di SQL Server e affrontiamo diverse domande avanzate per il colloquio. In questo articolo troverete altre domande avanzate ed esempi di codifica. 25. Puoi spiegare i diversi tipi di replica in SQL Server? Risposta: La replica transazionale è una replica quasi in tempo reale della copia del database principale (publisher) al database su cui viene replicata (subscriber). Nella replica unione, tutte le modifiche apportate offline vengono eseguite ogni volta che i due database sono collegati. È simile alla replica transazionale, ma le modifiche vengono apportate sia al publisher che al subscriber. La replica istantanea esegue uno snapshot della copia del database principale in un determinato momento e replica i dati in un altro database. La replica peer-to-peer è una variante della replica transazionale che consente la replica su un numero qualsiasi di server. La replica transazionale bidirezionale replica i dati tra due server, con entrambi i server che pubblicano e sottoscrivono i dati dell'altro server. La replica con sottoscrizioni aggiornabili è quella in cui, dopo che la modifica è stata apportata al database sottoscrittore, i dati vengono prima passati a una copia del database principale. Solo successivamente vengono replicati agli altri sottoscrittori. 26. Spiegate i diversi tipi di lock in SQL Server. Risposta: Nella gestione dei database, i lock sono un mezzo che consente a SQL Server di garantire la concomitanza delle transazioni in un ambiente in cui più utenti accedono contemporaneamente allo stesso database. Quando SQL Server elabora una query, decide quali risorse di dati saranno utilizzate e come. Durante il completamento di una query, decide anche il tipo di blocco da applicare per proteggere la risorsa dati. Ecco i tipi di blocco di SQL Server: La modalità di bloccocondivisa (S) viene utilizzata per le istruzioni di sola lettura, ad esempio SELECT. Rende i dati disponibili solo per la lettura. Ciò significa che durante l'esecuzione della query non è possibile modificare i dati. La modalità di bloccoUpdate (U) viene utilizzata per i dati che verranno aggiornati. A differenza della modalità di blocco S, solo una transazione può detenere un blocco U; in questo modo si evitano i deadlock. Una volta che la transazione è pronta ad aggiornare i dati, la modalità di blocco passa a X lock. La modalità di bloccoesclusivo (X) viene utilizzata per garantire che solo una transazione possa aggiornare gli stessi dati alla volta. Si usa con comandi come INSERT, UPDATE e DELETE. La modalità di bloccointenzionale (I) assicura che venga stabilita una gerarchia di blocco. Informa le altre transazioni dell'intenzione di imporre un blocco S o X, impedendo così a un'altra transazione di imporli. Esistono tre intenti di lock: intent shared (IS), intent exclusive (IX) e shared with intent exclusive (SIX). La modalità di bloccoSchema (Sch) viene utilizzata per le operazioni dipendenti dallo schema. Il blocco di modifica dello schema (Sch-M) per le istruzioni DDL (CREATE, ALTER, DROP) impedisce l'accesso ai dati durante la modifica della struttura dell'oggetto. Il blocco di stabilità dello schema (Sch-S) viene utilizzato quando vengono eseguite transazioni dipendenti dallo schema. Permette tutti gli altri lock, tranne Sch-M. La modalità di bloccoBulk Update (BU) viene imposta quando i dati vengono copiati in blocco e viene specificato il suggerimento TABLOCK. Lamodalità di blocco Key-range viene utilizzata nei livelli di isolamento delle transazioni serializzabili. Questo impedisce le letture fantasma, cioè quando la stessa query restituisce risultati diversi ogni volta che viene eseguita. 27. Qual è la differenza tra un Deadlock e un Livelock? Risposta: Un deadlock si ha quando due o più processi si bloccano a vicenda nell'acquisizione di un blocco. In altre parole, è quando ogni processo ha un blocco su un pezzo di dati e cerca di acquisire un blocco su un altro pezzo di dati che è bloccato da un altro processo. SQL Server termina uno dei processi. Altrimenti, il deadlock continuerebbe per sempre. Un livelock si verifica quando i lock condivisi si sovrappongono, impedendo a un altro processo di acquisire un lock esclusivo. 28. Qual è la differenza tra una vista materializzata e una non materializzata? Risposta: Le viste materializzate sono viste logiche di dati il cui risultato viene salvato in una tabella, richiedendo così l'esecuzione di una sola query. Aumentano le prestazioni, poiché il risultato può essere indicizzato (è una tabella!). D'altra parte, il risultato potrebbe non essere fresco se l'output della vista materializzata non è stato aggiornato. Anche le viste non materializzate sono viste logiche dei dati, ma il loro output non viene salvato da nessuna parte. Lo svantaggio è che bisogna eseguire la vista ogni volta che si vuole utilizzare il suo risultato. Una nota positiva è che si ha la garanzia di ottenere i dati più recenti. 29. Qual è la differenza tra transazioni implicite ed esplicite? Risposta: Le transazioni esplicite vengono avviate con BEGIN TRANSACTION; la modifica dei dati viene impegnata con COMMIT TRANSACTION. Per le transazioni implicite, SQL Server prende l'iniziativa di iniziarle implicitamente (senza il comando BEGIN TRANSACTION ). Tuttavia, devono essere impegnate o annullate esplicitamente dall'utente. Se la modalità implicita è attivata, queste sono le parole chiave che avviano la transazione implicita: BEGIN TRANSACTION CREATE UPDATE DELETE DROP FETCH INSERT OPEN GRANT REVOKE SELECT ALTER TRUNCATE Avete capito le domande del colloquio su SQL Server? Speriamo proprio di sì! Le 29 domande di intervista che abbiamo presentato (e a cui abbiamo risposto) comprendono domande generali, T-SQL, intermedie e avanzate su SQL Server. La categoria delle domande T-SQL è quella che contiene il maggior numero di domande, il che riflette la sua importanza. Come abbiamo detto all'inizio, la scrittura di query T-SQL è un requisito comune a tutti i lavori che lavorano con i database relazionali in qualsiasi forma. Pertanto, quando ci si prepara per un colloquio, non bisogna ignorare le altre domande come non necessarie. In termini di gestione del tempo, dovreste concentrarvi sulla padronanza di T-SQL. Il sitoSQL from A to Z di MS SQL Server è una piattaforma perfetta per questo! Ora sta a voi fare pratica e vincere il colloquio di lavoro! Tags: server sql domande per un colloquio su sql