Zurück zur Artikelliste Artikel
21 Leseminuten

Die 29 wichtigsten SQL Server-Interview-Fragen

Suchen Sie eine Stelle mit SQL Server? Lesen Sie diese 29 Fragen, die Sie bei einem Vorstellungsgespräch mit SQL Server unbedingt wissen müssen, und Sie sind bestens vorbereitet. Und machen Sie sich keine Sorgen, wenn Sie die Antworten nachschlagen müssen - wir haben sie auch!

Die erste Version von Microsoft SQL Server wurde 1989 veröffentlicht und kann auf eine lange Geschichte zurückblicken. Seitdem hat er einen langen Weg zurückgelegt und sich zu einer der meistgenutzten Datenbank-Engines in der Datenbranche entwickelt. In den letzten zehn Jahren war er die drittbeliebteste Datenbank-Engine.

Die 29 wichtigsten SQL Server-Interview-Fragen

Quelle: https://db-engines.com/en/ranking_trend

Wenn Ihr (nächster) Job die Arbeit mit relationalen Datenbanken erfordert, ist die Wahrscheinlichkeit groß, dass Sie das in SQL Server tun müssen. Datenmodellierer entwerfen und implementieren zum Beispiel Datenbanken mit Hilfe von Datenbankadministratoren. Dazu verwenden sie SQL Server, um Tabellen und ihre Attribute zu erstellen, Beziehungen zwischen den Tabellen zu definieren, Einschränkungen, Datentypen usw. festzulegen. Die Datenbank muss dann mit Daten gefüllt werden, was die Aufgabe eines Dateningenieurs ist. Sie verwenden SQL Server, um Daten abzufragen, zu integrieren, zu transformieren und zu laden.

Sobald alles eingerichtet ist, sorgt der Datenbankadministrator für den Datenzugriff und die Sicherheit: Er gewährt oder entzieht den Zugriff auf die Daten, pflegt und sichert die Datenbank, überwacht ihre Leistung und aktualisiert sie und stellt sie bei Bedarf sogar wieder her.

Es gibt auch eine ganze Reihe von Datenberufen, die sich hauptsächlich mit der Nutzung der Daten aus der Datenbank befassen. Dazu gehören Datenanalysten, Finanzanalysten, quantitative Analysten, BI-Entwickler, Statistiker und Datenwissenschaftler. Von ihnen wird erwartet, dass sie in der Lage sind, die Daten selbständig abzurufen - was SQL-Kenntnisse voraussetzt.

SQL Server und T-SQL: Was Sie wissen müssen

Die erforderlichen SQL-Server-Kenntnisse variieren zwar von Stelle zu Stelle, aber eines haben sie alle gemeinsam: Kenntnisse in T-SQL - dem SQL-Server-Dialekt von SQL. Um für das Vorstellungsgespräch gerüstet zu sein, sollten Sie T-SQL fließend beherrschen. Dies erreichen Sie am besten durch Arbeitserfahrung, das Lösen von Fragen aus dem Vorstellungsgespräch und die Nutzung interaktiver SQL-Kurse. Für die letztgenannte Kategorie empfehlen wir unseren SQL von A bis Z in MS SQL Server Learning Track. Er besteht aus sieben interaktiven Kursen, die alles von den Grundlagen von T-SQL bis zu GROUP BY-Erweiterungen, rekursiven Abfragen und Common Table Expressions abdecken.

Es sind viele gute Kurse verfügbar; hier sind die fünf, die wir für SQL Server-Einsteiger empfehlen.

Außerdem sollten Sie Ihr technisches Wissen über SQL Server auffrischen, denn im Vorstellungsgespräch werden auch Fragen gestellt, die nicht mit SQL zu tun haben.

Wir werden hier so viele SQL-Server-Fragen wie möglich behandeln. Für eine Stelle im Datenbereich sind jedoch nicht nur SQL-Server-Kenntnisse erforderlich.

Wie bereiten Sie sich also auf die anderen Teile des Vorstellungsgesprächs vor? Der Ausgangspunkt sollte immer die Stellenbeschreibung sein. Lesen Sie die Anforderungen sorgfältig durch. Sie könnten andere Programmiersprachen (z. B. Python), statistische Analysen, ETL, Datenbankdesign, maschinelles Lernen usw. umfassen. Stellen Sie sich einen Aktionsplan vor, mit dem Sie auf all diese Aspekte vorbereitet sind. Und nutzen Sie alle verfügbaren Quellen - wie Artikel, YouTube-Videos, Kurse, Übungsdatensätze, Plattformen mit Interviewfragen und alle Arten von verschiedenen Tutorials.

Beginnen wir nun mit den SQL Server-Interviewfragen.

Allgemeine SQL Server-Interview-Fragen

Interviewer stellen Ihnen zum Aufwärmen gerne einige allgemeine Fragen zu SQL Server. Beginnen wir mit einigen einfachen Fragen.

1. Was ist SQL Server?

Antwort: SQL Server: SQL Server ist das relationale Datenbankmanagementsystem (RDBMS) von Microsoft. Es gewährleistet die Speicherung, Integrität, Sicherheit und den Zugriff auf Daten. Mit anderen Worten, er ermöglicht das Erstellen, Speichern, Aktualisieren, Löschen und Abrufen von Daten.

2. Können Sie die verschiedenen Editionen von SQL Server erläutern?

Antwort: Es gibt fünf Editionen von SQL Server. Die Einstiegsversion ist SQL Server Express, eine kostenlose Datenbank zum Erlernen und Erstellen kleiner Desktop- und Serveranwendungen. Sie wird hauptsächlich von Einzelpersonen und kleinen Organisationen verwendet, die nur grundlegende RDBMS-Funktionen benötigen.

SQL Server Developer ist auf einen Benutzer lizenziert. Er wird als Entwicklungs- und Testsystem verwendet, nicht als Produktionsserver. Er verfügt über alle Funktionen der Enterprise Edition, nur in der Nicht-Produktionsumgebung. Er wird von Entwicklern und Testern verwendet.

SQL Server Web ist für Webhosts und virtuelle Webzugriffspunkte (VAPs) konzipiert. Er ermöglicht es ihnen, ihre Dienste und Anwendungen, die auf SQL Server laufen, (zu geringen Kosten) gemeinsam zu nutzen.

SQL Server Standard bietet grundlegende Datenverwaltungs- und Business Intelligence-Funktionen für kleine Unternehmen mit minimalen IT-Ressourcen. Sie bietet fast alles, was auch SQL Enterprise bietet, allerdings mit einigen Einschränkungen.

SQL Enterprise ist die bevorzugte Edition für große Unternehmen. Sie bietet unbegrenzte Virtualisierung, Zugriff auf die Cloud über Azure und die beste Leistung, Datenanalyse und Sicherheit. Sie ist auch die teuerste SQL Server-Edition.

3. Was sind die Hauptkomponenten von SQL Server?

Antwort: SQL Server besteht aus mehreren Komponenten.

  1. Die Datenbank-Engine ist für die Speicherung, Sicherheit und Umwandlung von Daten zuständig.
  2. Die SQL Server-Anwendung startet, stoppt und pausiert die Arbeit der anderen Komponenten. Ihre ausführbare Datei ist sqlservr.exe.
  3. Der SQL Server Agent ist ein Aufgabenplaner, der bei jedem Ereignis aktiviert wird. Seine ausführbare Datei ist sqlagent.exe.
  4. SQL Server Browser nimmt die eingehenden Anfragen für SQL Server entgegen und liefert Informationen über die auf dem Computer installierten SQL Server-Instanzen. Seine ausführbare Datei ist ssqlbrowser.exe.
  5. SQL Server Full-Text Search ermöglicht die Durchführung von Volltextsuchen in den zeichenbasierten Daten, die in den Datenbanktabellen gespeichert sind. Die ausführbare Datei ist fdlauncher.exe.
  6. SQL Server VSS Writer ermöglicht die Sicherung und Wiederherstellung von Datenbanken durch die Erstellung von Schattenkopien, wenn der SQL-Server nicht läuft. Die ausführbare Datei ist sqlwriter.exe.
  7. SQL Server Analysis Services (SSAS) ist eine Komponente zur Datengewinnung und -analyse sowie zur Berichterstellung und Datenvisualisierung durch Konnektivität mit Tools wie PowerBI und Excel. Es ermöglicht auch die Verwendung von Python und R für erweiterte Analysen. Die ausführbare Datei ist smsmdsrv.exe.
  8. SQL Server Reporting Services (SSRS) ist eine Berichtskomponente, mit der Sie grafische, mobile und gedruckte Berichte erstellen, bereitstellen und verwalten können. Die ausführbare Datei ist ReportingServicesService.exe.
  9. SQL Server Integration Services (SSIS) ist ein ETL-Tool zum Lagern, Extrahieren, Transformieren, Laden und Integrieren von Daten. Die ausführbare Datei ist MsDtsSrvr.exe.

SQL/T-SQL-Interview-Fragen

Dies sind die SQL Server-Interviewfragen, die sich direkt auf T-SQL und seine Befehle beziehen. Für die meisten Fragen müssen Sie keine Programmierkenntnisse nachweisen, aber Sie brauchen dennoch gute T-SQL-Kenntnisse, um sie beantworten zu können. Wenn Sie vor dem Vorstellungsgespräch das Programmieren üben möchten, finden Sie hier einige Fragen zum Programmieren von SQL im Vorstellungsgespräch.

4. Was ist T-SQL? Was ist der Unterschied zwischen SQL und T-SQL?

Antwort: T-SQL: T-SQL ist ein SQL-Dialekt, der für die Kommunikation mit der SQL Server-Datenbank verwendet wird.

SQL ist eine Open-Source-Sprache, die von IBM entwickelt wurde, während T-SQL von Microsoft entwickelt wurde und in dessen Besitz ist. SQL ist eine nicht-prozedurale Sprache, d.h. sie führt eine SQL-Abfrage nach der anderen aus. T-SQL hingegen ist eine prozedurale Sprache. Das heißt, die Abfragen werden als Block in einer logisch strukturierten Reihenfolge ausgeführt. Außerdem verfügt T-SQL über einige Anweisungen, Schlüsselwörter und Funktionen, die es in Standard-SQL nicht gibt. Weitere Einzelheiten dazu finden Sie in dem Artikel mit den 14 Unterschieden zwischen SQL und T-SQL.

5. Was sind die verschiedenen Arten von Joins in SQL Server?

Antwort: Es gibt fünf verschiedene JOINs in SQL Server:

  • (INNER) JOIN
  • LEFT (OUTER) JOIN
  • RIGHT (OUTER) JOIN
  • FULL (OUTER) JOIN
  • CROSS JOIN

JOIN ist ein innerer Join, der die übereinstimmenden Zeilen aus beiden verbundenen Tabellen zurückgibt.

LEFT JOIN ist eine äußere Verknüpfung, die alle Zeilen aus der ersten (linken) Tabelle und nur die übereinstimmenden Zeilen aus der zweiten (rechten) Tabelle zurückgibt. RIGHT JOIN macht das Gleiche, aber von rechts; es gibt alle Zeilen aus der rechten Tabelle und übereinstimmende Zeilen aus der linken Tabelle zurück.

FULL JOIN ist eine äußere Verknüpfung, die LEFT JOIN und RIGHT JOIN kombiniert: Sie gibt alle Zeilen aus der linken Tabelle und alle Zeilen aus der rechten Tabelle zurück.

CROSS JOIN gibt ein kartesisches Produkt zurück, d. h. alle Kombinationen aller Zeilen aus den verbundenen Tabellen.

Unser SQL JOIN Cheat Sheet erklärt jede dieser Verknüpfungen anhand von Beispielen. Wenn Sie tiefer einsteigen wollen, finden Sie hier 10 SQL JOIN Interviewfragen.

6. Was ist der Zweck der GROUP BY und HAVING Klauseln in T-SQL?

Antwort: GROUP BY organisiert Zeilen mit den gleichen Werten in einer oder mehreren Spalten in Gruppen. Er wird oft (aber nicht immer) mit Aggregatfunktionen verwendet.

Weitere Details finden Sie in diesem GROUP BY Artikel, und es gibt 5 GROUP BY Beispiele in einem anderen Artikel.

HAVING wird zum Filtern von Gruppen auf der Grundlage einer bestimmten Bedingung verwendet. Da sie Gruppen filtert, sind Aggregatfunktionen in dieser Klausel zulässig.

Hier ist ein Artikel, der HAVING detaillierter erklärt.

7. Was ist eine Unterabfrage in T-SQL?

Die Antwort: Eine Subquery oder innere Abfrage ist eine Abfrage, die innerhalb einer anderen Abfrage (genannt äußere Abfrage) steht. In T-SQL können Subqueries in SELECT, INSERT, UPDATE und DELETE Anweisungen verwendet werden. Sie werden in den Klauseln FROM, WHERE oder HAVING der zulässigen T-SQL-Anweisung platziert.

8. Was sind die verschiedenen Arten von Subqueries?

Antwort: Es gibt mehrere Arten von Unterabfragen.

Eine skalare Subquery ist eine Subquery, die genau einen Wert (eine Zeile und eine Spalte) als Ergebnis zurückgibt. Sie wird in den Klauseln FROM, WHERE und HAVING verwendet.

Eine mehrzeilige Unterabfrage ist eine Unterabfrage, die mehrere Zeilen und eine oder mehrere Spalten zurückgibt. Sie werden in denselben Klauseln wie skalare Unterabfragen verwendet, jedoch mit den Operatoren IN, NOT IN, ANY, ALL, EXISTS oder NOT EXISTS.

Korrelierte Unterabfragen verwenden einen Wert aus der äußeren Abfrage. Sie wird für jede Zeile der äußeren Abfrage einmal ausgewertet.

Nicht-korrelierte Unterabfragen arbeiten unabhängig von der äußeren Abfrage; sie sind nicht von den Ergebnissen der äußeren Abfrage abhängig.

Sie können mehr über die verschiedenen Arten von Unterabfragen lesen.

9. Was ist der Unterschied zwischen UNION und UNION ALL?

Antwort: Sowohl UNION als auch UNION ALL fassen die Ergebnisse von zwei oder mehr Abfragen in einer Ergebnismenge zusammen. Der Unterschied besteht darin, dass UNION keine Duplikate einbezieht, während UNION ALL dies tut.

In diesem Artikel über UNION vs. UNION ALL erfahren Sie mehr über deren Syntax und Verwendung.

10. Nennen Sie die gebräuchlichsten Funktionen in SQL Server.

Antwort: Hier sind die am häufigsten verwendeten Funktionskategorien und Funktionen in SQL Server.

String-Funktionen:

  • CONCAT() - Führt zwei oder mehr Strings zusammen.
  • LEFT() RIGHT() & - Gibt die angegebene Anzahl von Zeichen vom linken oder rechten Ende einer Zeichenkette oder von einer bestimmten Position in der Zeichenkette zurück. SUBSTRING()
  • LEN() - Gibt die Anzahl der Zeichen in der Zeichenkette zurück.
  • LTRIM() RTRIM() & - Entfernt Leerzeichen oder andere Zeichen vom linken, rechten oder einer angegebenen Position in der Zeichenfolge. TRIM()
  • REPLACE() - Ersetzt alle Vorkommen einer angegebenen Teilzeichenkette durch eine andere Zeichenkette.
  • LOWER() und UPPER() - Schaltet alle Zeichen in Klein- bzw. Großbuchstaben um.

Numerische Funktionen:

  • ABS() - Gibt den absoluten Wert zurück.
  • ROUND() - Rundet eine Zahl auf eine angegebene Dezimalstelle.

Datums- und Zeitfunktionen:

  • DATEDIFF() - Gibt die Differenz zwischen zwei angegebenen Daten zurück.
  • CURRENT_TIMESTAMP() - Gibt das aktuelle Datum und die aktuelle Uhrzeit zurück.
  • DATEADD() - Fügt ein Datum oder Zeitintervall zu einem Datum hinzu und gibt ein neues Datum zurück.
  • DAY() MONTH(), - Gibt den Tag, den Monat oder das Jahr eines Datums zurück. YEAR()

Aggregat-Funktionen:

  • COUNT() - Zählt die Anzahl der von einer Abfrage zurückgegebenen Zeilen.
  • SUM() - Gibt die Summe der Werte zurück.
  • AVG() - Gibt den Durchschnittswert zurück.
  • MIN() - Gibt den Mindestwert zurück.
  • MAX() - Gibt den Maximalwert zurück.

Andere Funktionen:

  • CAST() & CONVERT() - Konvertiert einen Wert von einem Datentyp in einen angegebenen Datentyp.
  • COALESCE() - Gibt den ersten Nicht-Wert zurück.NULL
  • ISNULL() - Gibt den angegebenen Wert zurück, wenn der Ausdruck NULL ist oder der Ausdruck anders lautet.
  • NULLIF() - Gibt NULL zurück, wenn zwei Ausdrücke gleich sind.

11. Was ist der Zweck der Funktionen COALESCE() und NULLIF()?

Antwort: COALESCE() gibt den ersten Wert zurück, der nichtNULL ist. NULLIF() gibt NULL zurück, wenn die beiden Ausdrücke gleich sind.

Hier erfahren Sie , wie Sie COALESCE() in SQL verwenden können.

12. Was sind Fensterfunktionen in SQL Server?

Antwort: Diese Funktionen führen Berechnungen über den Satz von Zeilen durch, die mit der aktuellen Zeile zusammenhängen. Sie ähneln den Aggregatfunktionen, aber im Gegensatz zu ihnen fassen die Fensterfunktionen das Ergebnis nicht in einer Zeile zusammen. Dies ermöglicht die gleichzeitige Anzeige der Werte der aggregierten und der einzelnen Zeilen.

Fensterfunktionen in SQL Server werden für die Einstufung, Aggregation und Analyse verwendet.

Die wichtigsten Konzepte der Fensterfunktionen können Sie mit unserem SQL Fensterfunktionen Cheat Sheet nachschlagen. Sie können das dort Gelernte in diesen 11 SQL-Fensterfunktionsübungen üben. Und wenn Sie sich auf ein Vorstellungsgespräch vorbereiten wollen, testen Sie Ihr Wissen mit diesen 10 Fragen zu SQL-Fensterfunktionen.

13. Finden Sie die obersten N Zeilen in SQL Server.

Antwort: Wenn wir die obersten 5 Zeilen einer Tabelle zurückgeben wollen album Tabelle zurückgeben wollen, können wir das so machen:

SELECT TOP 5 *
FROM albums;

14. Was bewirken ROLLUP, GROUPING SETS und CUBE in T-SQL?

Antwort: Sie sind allesamt Erweiterungen von GROUP BY. Mit ROLLUP können Sie mehrere Gruppierungsgruppen erstellen und Zwischensummen und Gesamtsummen hinzufügen. Mit GROUPING SETS können Sie mehrere Gruppierungssätze definieren, was einer Kombination mehrerer GROUP BY Klauseln in einer Abfrage entspricht. Mit CUBE können Sie Gruppen für mögliche Kombinationen von Spalten erstellen und Zwischensummen hinzufügen.

15. Was ist ein CTE in SQL Server?

Antwort: Ein CTE oder ein Common Table Expression ist das benannte temporäre Ergebnis einer SELECT Anweisung. Sie sind ähnlich wie Unterabfragen, aber im Gegensatz zu diesen können CTEs mehrfach in derselben Abfrage verwendet werden. Sie sind auch mit temporären Tabellen vergleichbar. Allerdings wird das CTE-Ergebnis nicht im Datenbankspeicher gespeichert; das CTE muss jedes Mal ausgeführt werden, wenn sein Ergebnis von einer Abfrage verwendet wird.

Auf CTE-Ergebnisse kann in den Anweisungen SELECT, INSERT, UPDATE, DELETE und MERGE Bezug genommen werden.

Weitere Einzelheiten finden Sie in dem Artikel, der CTEs in SQL Server erklärt. Um Ihr Wissen zu vertiefen, finden Sie hier sieben CTE-Beispiele, von denen Sie lernen können.

16. Erklären Sie, was eine rekursive CTE ist und wie man sie in SQL Server schreibt.

Antwort: Eine rekursive CTE verweist auf sich selbst. Wie eine reguläre CTE wird eine rekursive CTE in SQL Server mit der WITH Klausel geschrieben.

Der erste Teil einer rekursiven CTE ist ein Ankerelement, das das Basisergebnis der CTE ausgibt.

Dieses Ergebnis wird mit dem Ergebnis einer anderen Abfrage zusammengeführt, die als rekursives Element bezeichnet wird, weil sie auf das Ankerelement verweist. Diese Zusammenführung wird mit UNION ALL durchgeführt. Die Verwendung von UNION würde nicht funktionieren (anders als in einigen anderen Datenbanken).

Der dritte Teil einer rekursiven CTE ist die Abbruchbedingung, die die Bedingungen angibt, unter denen die Rekursion beendet wird; andernfalls könnte sie unendlich fortgesetzt werden.

In diesem Artikel über rekursive CTEs erfahren Sie, wie Sie die obige Antwort in Code umsetzen können.

SQL Server-Interviewfragen für Fortgeschrittene

Wir sehen uns nun Fragen für fortgeschrittene SQL Server-Benutzer an.

17. Wie erstellen Sie eine Tabelle in SQL Server?

Antwort: Tabellen in SQL Server werden mit dem Befehl CREATE TABLE erstellt. Darin geben Sie den Tabellennamen, die Spaltennamen und den Datentyp an, den jede Spalte akzeptieren soll.

Die Syntax sieht wie folgt aus:

CREATE TABLE table_name (
   column_1 datatype,
   column_2 datatype,
   column_3 datatype,
   …
);

18. Was ist ein Primärschlüssel? Was ist ein Fremdschlüssel?

Antwort: Der Primärschlüssel ist eine Spalte (oder eine Kombination von Spalten), die die eindeutige Identifizierung von Zeilen in einer Tabelle gewährleistet. Ein Fremdschlüssel ist eine Spalte oder eine Kombination von Spalten in einer Tabelle, die auf den Primärschlüssel in einer anderen Tabelle verweist.

19. Was ist der Unterschied zwischen den Befehlen DELETE und TRUNCATE?

Antwort: Sie mögen zwar ähnlich erscheinen, gehören aber zu unterschiedlichen Kategorien von SQL-Befehlen. DELETE ist ein DML-Befehl (Data Manipulation Language), mit dem alle oder einige Zeilen (unter Verwendung der Klausel WHERE ) aus der Tabelle gelöscht werden.

TRUNCATE ist ein DDL-Befehl (Data Definition Language). Er löscht alle Zeilen aus der Tabelle; Sie können ihn nicht verwenden, um nur einige Zeilen zu löschen. Ein weiterer Unterschied besteht darin, dass TRUNCATE nicht die Änderungen jeder Zeile im Protokoll aufzeichnet, so dass es schneller ist als DELETE. DELETE löscht Zeile für Zeile, wobei jede Löschung im Protokoll aufgezeichnet wird.

19. Was ist der Unterschied zwischen einer Tabelle und einem View in SQL Server?

Antwort: Eine Tabelle ist ein Datenbankobjekt, das die primäre Speicherung von Daten in relationalen Datenbanken darstellt. Sie besteht aus Zeilen und Spalten und wird im Speicher abgelegt.

Ein View ist eine gespeicherte Abfrage, die zu einer virtuellen Tabelle führt, die Zeilen und Spalten mit Daten enthält. Ein View enthält selbst keine Daten und gibt sie nur aus, wenn er ausgeführt wird. Dies verbessert die Benutzerfreundlichkeit und die Datensicherheit. Außerdem spart es Speicherplatz, da das Ergebnis der Ansicht nicht im Speicher abgelegt wird.

20. Können Sie die verschiedenen Arten von Indizes in SQL Server erläutern?

Antwort: Diese Indizes werden in SQL Server unterstützt:

  • Hash
  • Speicheroptimiert Nicht geclustert
  • Geclustert
  • Nicht geclustert
  • Eindeutig
  • Spaltenspeicher
  • Index mit eingeschlossenen Spalten
  • Index auf berechnete Spalten
  • Gefiltert
  • Räumlich
  • XML
  • Volltext

Die beiden wichtigsten Indexkategorien sind geclusterte und nicht geclusterte Indizes.

Geclusterte Indizes sind Teil der Tabellenstruktur und bestimmen die physische Reihenfolge der Speicherung und Sortierung auf der Grundlage des Indexschlüsselwerts. Es kann nur einen geclusterten Index pro Tabelle geben. Bei der Suche nach den Daten geht die Abfrage Zeile für Zeile durch die Tabelle, bis sie den angegebenen Index findet.

Nicht geclusterte Indizes enthalten Schlüsselwerte, wobei jeder Schlüsselwert einen Zeiger auf die Datenzeile hat, die den Schlüsselwert enthält. Das bedeutet, dass die Abfrage direkt zu der Datenzeile mit dem angegebenen Index führt und nicht erst alle Daten durchlaufen werden müssen. Diese Indizes werden getrennt von den indizierten Tabellen strukturiert und gespeichert.

21. Was ist der Unterschied zwischen einer Funktion und einer Stored Procedure?

Antwort: Funktionen sind Routinen, die berechnete Werte zurückgeben und keine Änderungen an Datenbankobjekten vornehmen können. Sie müssen mindestens einen Parameter haben und ein Ergebnis zurückgeben.

In SQL Server wird zwischen eingebauten Funktionen und benutzerdefinierten Funktionen unterschieden. Eingebaute Funktionen werden mit SQL Server geliefert; sie sind in die folgenden Kategorien unterteilt:

  • Aggregatfunktionen führen eine Berechnung für eine Gruppe von Zeilen durch (d. h. unter Verwendung von GROUP BY und gemeinsamen Spaltenwerten) und geben einen einzigen Wert für die gesamte Gruppe zurück.
  • Analytische Funktionen führen Berechnungen für die gesamte Gruppe von Zeilen durch, die mit der aktuellen Zeile zusammenhängen. Dies sind aggregierte Fensterfunktionen.
  • Bitmanipulationsfunktionen machen die Arbeit mit binären Informationen effizienter.
  • Ranking-Funktionen (d. h. Ranking-Fensterfunktionen) ordnen Zeilen und/oder Daten in einer bestimmten Reihenfolge.
  • Rowset-Funktionen enthalten Sätze von Zeilen mit allen Spaltenwerten. Sie können in T-SQL-Anweisungen anstelle von Tabellen referenziert werden.
  • Skalare Funktionen nehmen einen Parameter und geben einen Wert zurück.

Benutzerdefinierte Funktionen haben alle Eigenschaften der eingebauten Funktionen, nur werden sie von Benutzern erstellt. Sie können sie erstellen, speichern und jederzeit wieder aufrufen.

Stored Procedures sind vorkompilierte SQL-Anweisungen, die wiederholt eine Reihe von Aktionen ausführen. Im Gegensatz zu Funktionen benötigen Stored Procedures keine Parameter, müssen kein Ergebnis zurückgeben und können Datenbankobjekte verändern.

INSERTDie Befehle UPDATE und DELETE sind in Stored Procedures erlaubt, nicht aber in Funktionen.

Funktionen arbeiten mit SELECT, WHERE, und HAVING, Stored Procedures nicht.

Stored Procedures können Transaktionen verwenden und Funktionen aufrufen. Funktionen können jedoch weder Transaktionen verwenden, noch können sie Stored Procedures aufrufen.

22. Was ist der Unterschied zwischen einer temporären Tabelle und einer Tabellenvariablen?

Antwort: Temporäre Tabellen sind die temporäre Speicherung eines Abfrageergebnisses. Sie sind nur für die Sitzung verfügbar, in der sie erstellt wurden.

Eine Tabellenvariable ist eine lokale Variable, die, wie die temporäre Tabelle, Daten temporär speichert. Tabellenvariablen werden in Funktionen, gespeicherten Prozeduren und Batches verwendet.

Da temporäre Tabellen echte Tabellen sind, eignen sie sich besser für größere Datenmengen als Tabellenvariablen. Das bedeutet, dass Sie die Befehle SELECT INTO, ALTER TABLE und TRUNCATE mit temporären Tabellen verwenden können. Sie können Indizes erstellen oder alles tun, was Sie mit einer "normalen" Tabelle tun würden. Temporäre Tabellen können auch in Transaktionen und gespeicherten Prozeduren verwendet werden, aber nicht in den Funktionen.

23. Was ist ein Trigger? Wann würden Sie einen verwenden?

Antwort: Ein Trigger ist eine Art von gespeicherter Prozedur, die automatisch ausgeführt wird (d.h. ausgelöst wird), wenn ein bestimmtes Ereignis eintritt.

DML-Trigger werden aktiviert, wenn ein Benutzer versucht, die Daten in der Tabelle mithilfe von INSERT, UPDATE oder DELETE zu ändern. DDL-Trigger werden ausgeführt, wenn Benutzer CREATE, ALTER oder DROP verwenden. Es gibt auch Anmelde-Trigger, die aktiviert werden, wenn ein Benutzer eine Verbindung mit SQL Server herstellt.

Ein Beispiel für die Verwendung eines DML-Triggers ist eine Tabelle, in der Daten über Mitarbeiter, einschließlich ihres Gehalts, gespeichert sind. Sie könnten einen Trigger erstellen, der jedes Mal ausgelöst wird, wenn jemand Informationen über einen Mitarbeiter ändert; der Trigger speichert die geänderten Informationen in einer separaten Tabelle. Auf diese Weise erhalten Sie einen historischen Überblick über die Änderungen der Daten jedes Mitarbeiters.

24. Was ist der Unterschied zwischen Commit und Rollback?

Antwort: COMMIT TRANSACTION speichert dauerhaft alle Datenänderungen, die eine Transaktion vornimmt.

ROLLUP TRANSACTION ermöglicht es Ihnen, alle Änderungen rückgängig zu machen, die seit dem letzten Commit von Transaktionsänderungen aufgetreten sind.

Fortgeschrittenes SQL Server-Interview-Fragen

Lassen Sie uns das Wissen über SQL Server vertiefen und einige fortgeschrittene Interviewfragen behandeln. Weitere Fragen für Fortgeschrittene und Programmierbeispiele finden Sie in diesem Artikel.

25. Können Sie die verschiedenen Arten der Replikation in SQL Server erläutern?

Antwort: Die transaktionale Replikation ist eine nahezu in Echtzeit erfolgende Replikation der Hauptdatenbankkopie (Publisher) in die Datenbank, in die sie repliziert wird (Subscriber).

Bei der Merge-Replikation werden alle offline vorgenommenen Änderungen immer dann vorgenommen, wenn die beiden Datenbanken verbunden sind. Sie ähnelt der transaktionalen Replikation, aber die Änderungen werden sowohl im Publisher als auch im Subscriber vorgenommen.

Bei der Snapshot-Replikation wird ein Snapshot der Hauptdatenbankkopie zu einem bestimmten Zeitpunkt erstellt und die Daten werden in eine andere Datenbank repliziert.

Peer-to-Peer-Replikation ist eine Variante der Transaktionsreplikation, die eine Replikation über eine beliebige Anzahl von Servern ermöglicht.

Bei der bidirektionalen Transaktionsreplikation werden Daten zwischen zwei Servern repliziert, wobei beide Server die Daten des jeweils anderen Servers veröffentlichen und abonnieren.

Bei der aktualisierbaren Abonnementreplikation werden die Daten nach einer Änderung in der Abonnentendatenbank zunächst an eine Kopie der Hauptdatenbank weitergeleitet. Erst danach werden sie an andere Abonnenten repliziert.

26. Erklären Sie die verschiedenen Arten von Sperren in SQL Server.

Antwort: In der Datenbankverwaltung sind Sperren ein Mittel für SQL Server, um die Gleichzeitigkeit von Transaktionen in einer Umgebung zu gewährleisten, in der mehrere Benutzer gleichzeitig auf dieselbe Datenbank zugreifen. Wenn SQL Server eine Abfrage verarbeitet, entscheidet er, welche Datenressourcen auf welche Weise verwendet werden. Während des Abschlusses einer Abfrage entscheidet er auch über die Art der Sperre, die zum Schutz der Datenressource angewendet wird.

Im Folgenden werden die Arten von Sperrmodi in SQL Server beschrieben:

  • Der SperrmodusShared (S) wird für schreibgeschützte Anweisungen verwendet, z. B. SELECT. Er macht Daten nur zum Lesen verfügbar. Das heißt, während die Abfrage ausgeführt wird, können die Daten nicht geändert werden.
  • Der SperrmodusUpdate (U) wird für Daten verwendet, die aktualisiert werden sollen. Im Gegensatz zum S-Sperrmodus kann eine U-Sperre nur von einer Transaktion gehalten werden; dadurch werden Deadlocks vermieden. Sobald die Transaktion bereit ist, Daten zu aktualisieren, wechselt der Sperrmodus zu X-Sperre.
  • Derexklusive (X) Sperrmodus wird verwendet, um sicherzustellen, dass nur eine Transaktion dieselben Daten zur gleichen Zeit aktualisieren kann. Er wird mit Befehlen wie INSERT, UPDATE und DELETE verwendet.
  • Der SperrmodusIntent (I) stellt sicher, dass eine Sperrhierarchie eingerichtet wird. Er informiert andere Transaktionen über die Absicht, eine S- oder X-Sperre aufzuerlegen, und verhindert so, dass eine andere Transaktion diese auferlegen kann. Es gibt drei Intent-Sperren: gemeinsam genutzte Sperren (IS), exklusive Sperren (IX) und gemeinsam genutzte Sperren mit exklusiver Absicht (SIX).
  • Der SperrmodusSchema (Sch) wird für schemaabhängige Operationen verwendet. Die Schema-Modifikations-Sperre (Sch-M) für DDL-Anweisungen (CREATE, ALTER, DROP) verhindert den Datenzugriff, während die Struktur des Objekts geändert wird. Die Schemastabilitätssperre (Sch-S) wird verwendet, wenn schemaabhängige Transaktionen ausgeführt werden. Sie lässt alle anderen Sperren außer Sch-M zu.
  • Der SperrmodusBulk Update (BU) wird verwendet, wenn Daten in großen Mengen kopiert werden und der Hinweis TABLOCK angegeben ist.
  • Der SperrmodusKey-Range wird in serialisierbaren Transaktionsisolationsebenen verwendet. Dies verhindert Phantomlesevorgänge, d.h. wenn dieselbe Abfrage bei jeder Ausführung unterschiedliche Ergebnisse liefert.

27. Was ist der Unterschied zwischen einem Deadlock und einem Livelock?

Antwort: Ein Deadlock liegt vor, wenn zwei oder mehr Prozesse sich gegenseitig daran hindern, eine Sperre zu erlangen. Mit anderen Worten: Jeder Prozess hat eine Sperre für einen Teil der Daten und versucht, eine Sperre für einen anderen Teil der Daten zu erhalten, der von einem anderen Prozess gesperrt ist. SQL Server beendet dann einen der Prozesse. Andernfalls würde der Deadlock ewig andauern.

Ein Livelock tritt auf, wenn sich die gemeinsam genutzten Sperren überschneiden und einen anderen Prozess daran hindern, eine exklusive Sperre zu erlangen.

28. Was ist der Unterschied zwischen einer materialisierten und einer nicht-materialisierten Ansicht?

Antwort: Materialisierte Ansichten sind logische Ansichten von Daten, deren Ausgabe in einer Tabelle gespeichert wird, so dass eine Abfrage nur einmal ausgeführt werden muss. Sie erhöhen die Leistung, da das Ergebnis indiziert werden kann (es ist eine Tabelle!). Andererseits ist das Ergebnis möglicherweise nicht mehr aktuell, wenn die Ausgabe der materialisierten Ansicht nicht aktualisiert wurde.

Nicht materialisierte Ansichten sind ebenfalls logische Ansichten von Daten, aber ihre Ausgabe wird nirgendwo gespeichert. Ein Nachteil ist, dass Sie die Ansicht jedes Mal ausführen müssen, wenn Sie ihr Ergebnis verwenden möchten. Positiv zu vermerken ist, dass Sie garantiert die neuesten Daten erhalten.

29. Was ist der Unterschied zwischen impliziten und expliziten Transaktionen?

Antwort: Explizite Transaktionen werden mit BEGIN TRANSACTION eingeleitet; die Änderung der Daten wird mit COMMIT TRANSACTION bestätigt.

Bei impliziten Transaktionen ergreift SQL Server die Initiative, um sie implizit zu starten (ohne den Befehl BEGIN TRANSACTION ). Sie müssen jedoch vom Benutzer explizit bestätigt oder rückgängig gemacht werden.

Wenn der implizite Modus aktiviert ist, sind dies die Schlüsselwörter, mit denen die implizite Transaktion gestartet wird:

  • BEGIN TRANSACTION
  • CREATE
  • UPDATE
  • DELETE
  • DROP
  • FETCH
  • INSERT
  • OPEN
  • GRANT
  • REVOKE
  • SELECT
  • ALTER
  • TRUNCATE

Haben Sie den Dreh bei den SQL Server-Interviewfragen raus?

Wir hoffen, dass Sie es sind! Die 29 Interviewfragen, die wir vorgestellt (und beantwortet) haben, umfassen allgemeine, T-SQL-, mittlere und fortgeschrittene SQL Server-Interviewfragen.

Die Kategorie der T-SQL-Fragen enthält die meisten Fragen, was ihre Bedeutung widerspiegelt. Wie wir eingangs sagten, ist das Schreiben von T-SQL-Abfragen eine gemeinsame Anforderung für alle Datenjobs, die mit relationalen Datenbanken in irgendeiner Form arbeiten.

Wenn Sie sich also auf ein Vorstellungsgespräch vorbereiten, sollten Sie andere Fragen nicht als unnötig abtun. Was das Zeitmanagement angeht, so sollten Sie sich auf die Beherrschung von T-SQL konzentrieren. Die SQL von A bis Z in MS SQL Server ist eine perfekte Plattform dafür!

Jetzt liegt es an Ihnen, zu üben und das Vorstellungsgespräch zu meistern!