JavaRush /Java-Blog /Random-DE /Entwicklerinterview: Analyse von Datenbankfragen

Entwicklerinterview: Analyse von Datenbankfragen

Veröffentlicht in der Gruppe Random-DE
Hallo zusammen! Wir alle arbeiten hier an einem Ziel: Java-Entwickler zu werden . Der vielleicht wichtigste Schritt auf dem Weg zum Profi ist das technische Vorstellungsgespräch. In der Regel geht der Interviewer die Hauptthemen durch und stellt einige Fragen. In diesem Artikel werden wir über ein solches Schlüsselthema sprechen – Datenbanken . Schauen wir uns die am häufigsten gestellten Fragen an und versuchen, sie zu beantworten, ohne tief in den Stoff einzutauchen, denn in diesem Fall wird uns der Umfang des Buches nicht ausreichen! So lass uns gehen.Entwicklerinterview: Analyse von Datenbankfragen - 1

1. Was sind Datenbanken? In welche Typen werden sie unterteilt?

Was versteht man unter DBMS?

Entwicklerinterview: Analyse von Datenbankfragen - 2Eine Datenbank (DB) ist eine organisierte Struktur zum Speichern, Ändern und Verarbeiten zusammenhängender Informationen, hauptsächlich großer Mengen. Mit anderen Worten: Eine Datenbank ist ein strukturierter Datenspeicher. Zum Beispiel ein Telefonbuch.

Datenbanktypen

  1. Eine relationale Datenbank ist eine Sammlung von Daten mit vordefinierten Beziehungen zwischen ihnen. Daten werden als Tabellensatz gespeichert, der aus Spalten und Zeilen besteht. Tabellen speichern Informationen über die in der Datenbank dargestellten Objekte. Jede Tabellenspalte speichert einen bestimmten Datentyp und jede Zelle speichert einen Attributwert.
  2. Nicht-relationale Systeme (NoSQL) sind Systeme, die für bestimmte Datenmodelle mit flexiblen Schemata entwickelt wurden. Mit anderen Worten handelt es sich um Datenbanken, die Daten nicht in Form von Tabellenschemata, Zeilen und Spalten, sondern in anderen Formaten speichern.
Weitere Informationen zu nicht relationalen Datenbanken finden Sie in diesem Artikel: Ein Leitfaden zu NoSQL für Entwickler . Ein Datenbankverwaltungssystem (DBMS) ist eine Reihe von Software, mit der der Benutzer Datenbanken (DBs) erstellen und verschiedene Vorgänge an ihnen ausführen kann: Ergänzen, Aktualisieren, Löschen, Auswählen usw. Das DBMS garantiert die Sicherheit, Integrität und Sicherheit der Daten Speicher und ermöglicht Ihnen, Zugriff auf die Datenbankverwaltung zu gewähren. Beispielsweise ist MySql ein DBMS, das Zugriff auf eine relationale Datenbank oder MongoDB für eine nicht relationale Datenbank bietet.

2. Was ist Normalisierung? Normalisierte Form? Wie viele Formen der Normalisierung gibt es? Nennen Sie die ersten drei.

Bei der Normalisierung handelt es sich um den Prozess der Organisation und Strukturierung von Daten in einer Datenbank, der eine größere Datenbankflexibilität bietet, indem Redundanz und Inkonsistenz von Abhängigkeiten beseitigt werden. Die Normalform ist eine im Rahmen der Normalisierung betrachtete Eigenschaft einer Tabelle, die die Tabelle hinsichtlich Einfachheit und Korrektheit der Struktur charakterisiert. Unter Normalform versteht man eine Reihe von Anforderungen, die eine Tabelle erfüllen muss. Insgesamt gibt es sechs Normalformen, in der Praxis werden jedoch nur die ersten drei verwendet:
  1. Erste Normalform:
    • Alle Attribute sind einfach (d. h. atomar und unteilbar);
    • Alle Daten sind skalar (d. h. positiv);
    • Es gibt keine doppelten Zeilen (hierfür wird für jede Zeile ein Primärschlüssel erstellt).
  2. Zweite Normalform:
    • Die Bedingungen der ersten Normalform sind erfüllt;
    • Jedes Nichtschlüsselattribut verweist auf einen Primärschlüssel.
  3. Dritte Normalform:
    • Die Bedingungen der zweiten Normalgruppe sind erfüllt;
    • Nichtschlüsselfelder sind unabhängig von anderen Nichtschlüsselfeldern: Sie können nur einem Primärschlüssel zugeordnet werden.

3. Denormalisierung

Unter Denormalisierung versteht man die absichtliche Reduzierung oder Verletzung von Formen der Datenbanknormalisierung, normalerweise um das Lesen aus der Datenbank durch Hinzufügen redundanter Daten zu beschleunigen. Im Allgemeinen ist dies ein zur Normalisierung umgekehrter Prozess. Dies liegt daran, dass die Theorie der Normalformen in der Praxis nicht immer anwendbar ist. Beispielsweise sind nichtatomare Werte nicht immer „böse“, manchmal sogar das Gegenteil. In manchen Fällen sind bei der Ausführung von Abfragen, insbesondere bei der Verarbeitung großer Informationsmengen, zusätzliche Joins erforderlich. Dies kann letztendlich die Leistung verbessern. Für Analysen vorgesehene Datenbanken werden häufig denormalisiert, um die Abfrageausführung zu beschleunigen. Beispielsweise werden Sie häufig einige Daten für Berichte abfragen, in denen Nicht-Schlüsselspalten miteinander verknüpft werden. Sie entfernen absichtlich die dritte Form der Normalisierung und fassen alles in einer Tabelle zusammen, um die Stichprobenerstellung zu vereinfachen – sodass Sie keine zusätzlichen Abfragen an andere Tabellen durchführen müssen.

4. Indizes

Ein Index ist ein sortierter Satz von Werten, die einer Tabelle oder Ansicht mit einer bestimmten Spalte zugeordnet sind und den Datenabruf beschleunigen. Das heißt, es handelt sich um eine Art Index: wie das Alphabet in einem Telefonbuch, das uns bei der Suche nach Nachnamen hilft. Bei richtiger Anwendung kann diese Funktion die Leistung bei der Arbeit mit großen Datenbanken erheblich verbessern. Oder Sie können es stark senken. Um die Suche zu beschleunigen, werden diese Schlüssel in einer ausgewogenen Baumstruktur gespeichert, über die die Suche durchgeführt wird. In der Regel müssen Indizes für die Felder eingegeben werden, die am häufigsten durchsucht werden. Über die Erstellung eines Indexes sollten Sie frühestens dann nachdenken, wenn Sie über mindestens 10.000 Datensätze verfügen. Andernfalls werden Sie kein spürbares Ergebnis sehen, da eine vorzeitige Optimierung SCHLECHT ist . Und wie kann sich ein Index auf die Systemleistung auswirken? Wenn neue Daten eingefügt oder alte Daten gelöscht werden, wird die ausgeglichene Baumstruktur neu berechnet. Tatsächlich gilt: Je mehr Daten und Indizes, desto mehr Bäume müssen gezählt werden. Stellen Sie sich die Situation vor: Sie haben etwa 20.000 Datensätze und 7 Indizes in dieser Tabelle. Das heißt, beim Einfügen von Daten müssen Sie 7 Bäume mit jeweils 20.000 Datensätzen neu berechnen. Streng genommen wird die Verwendung von Indizes für Tabellen, zu denen häufig Daten hinzugefügt/gelöscht werden, überhaupt nicht empfohlen. Abschließend möchte ich darauf hinweisen, dass Indizes für Spalten, in denen der Wert häufig vorkommt, nullnicht so effektiv sind und es sich daher nicht lohnt, sie solchen Spalten hinzuzufügen.

Was ist der Unterschied zwischen Clustered- und Non-Clustered-Indizes in SQL?

Geclustert:

  • Bietet physische Ordnung für das ausgewählte Feld;
  • Wenn eine Tabelle über einen Clustered-Index verfügt, wird sie als Clustered-Index bezeichnet.
  • Es ist nicht mehr als ein Index pro Tabelle erforderlich;
  • In MySQL wird ein Clustered-Index nicht explizit vom Benutzer angegeben, denn wenn Sie keinen PRIMARY KEY für Ihre Tabelle definieren, findet MySQL den ersten Index, UNIQUEin dem sich alle Schlüsselspalten befinden NOT NULL, und InnoDB verwendet ihn als Clustered-Index.

Nicht geclustert:

  • Pro Tabelle sind bis zu 999 Nonclustered-Indizes möglich;
  • Enthält einen Zeiger auf Zeilen mit echten Daten in der Tabelle;
  • Bietet keine physische Ordnung;
  • Für nicht gruppierte Indizes gibt es separate Tabellen mit sortierten Daten, nämlich eine Tabelle für eine Spalte, in der sich der Index befindet. Wenn daher Daten angefordert werden, die nicht Teil eines bestimmten Felds sind, wird die Abfrage zunächst für diese durchgeführt Feld in dieser Tabelle und erst dann die zusätzliche Abfrage für eine Zeile in der Originaltabelle.
Erstellen eines nicht gruppierten Indexes:
CREATE INDEX index_name ON table_name(column_name)

6. Was ist ein zusammengesetzter Index?

Zusammengesetzter Index – wird durch gleichzeitiges Senden an mehrere Spalten erstellt. Mit anderen Worten handelt es sich um einen komplexen Index, der aus mehreren Spalten besteht. Solche Indizes werden verwendet, wenn mehr als eine Spalte in einer Abfrage erscheint. Erstellen eines zusammengesetzten Index:
CREATE INDEX index_name ON table_name(first_column_name, second_column_name, third_column_name)
Typischerweise werden diese Indizes verwendet, wenn Daten in mehreren Spalten logisch verknüpft sind.

7. Was ist ein Deckungsindex? Eindeutiger Index?

Ein abdeckender Index ist ein Index, der ausreicht, um eine Abfrage zu beantworten, ohne auf die Tabelle selbst zuzugreifen. Mit diesem Index können Sie die gesamte Datenzeile abrufen, aber tatsächlich ist dies einfach nicht notwendig. Da Sie nicht direkt zur Quelltabelle gehen müssen und nur mit dem Index antworten können, sind abdeckende Indizes etwas schneller zu verwenden. Vergessen Sie dabei nicht, dass der Index selbst umso umständlicher und langsamer wird, je mehr Spalten vorhanden sind. Sie sollten dies also nicht missbrauchen. Oben haben wir über gruppierte und nicht gruppierte Indizes gesprochen, die eindeutig sein können . Das bedeutet, dass keine zwei Felder den gleichen Wert für den Indexschlüssel haben. Andernfalls ist der Index nicht eindeutig, da mehrere Zeilen denselben Wert enthalten können. Ein Beispiel für die Erstellung eines eindeutigen nicht gruppierten Indexes:
CREATE UNIQUE INDEX index_name ON table_name(column_name)

8. Was ist ein Primärschlüssel?

Der Primärschlüssel ist ein Feld in einer Tabelle, das jede Zeile in einer Datenbanktabelle identifiziert. In einer Tabelle darf es nur ein solches Feld geben und alle Werte müssen eindeutig sein. Hat dich nichts daran erinnert? Entwicklerinterview: Analyse von Datenbankfragen - 3Schließlich ist ein Primärschlüssel nichts anderes als ein eindeutiger, gruppierter Index. In der Regel werden beim Erstellen einer Tabelle Primärschlüssel erstellt:
CREATE TABLE table_name(
column_name int PRIMARY KEY,..)
Dieser Spalte wird automatisch eine Einschränkung hinzugefügt - NOT NULL. Sie können auch einen Schlüssel für eine bereits erstellte Tabelle festlegen:
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
Wenn ein Primärschlüssel auf die oben beschriebene Weise hinzugefügt wird, werden die Werte der als Primärschlüssel ( column_name) angegebenen Felder überprüft, um sicherzustellen, dass sie keine Nullwerte enthalten (es wird auch eine Einschränkung hinzugefügt - NOT NULL).

Was ist ein Fremdschlüssel?

Ein Fremdschlüssel ist eine Eigenschaft, die erstellt wird, um eine Beziehung zwischen Tabellen herzustellen. Normalerweise wird ein Fremdschlüssel für Spalten in einer Untertabelle festgelegt und verweist auf eine der Spalten der Haupttabelle. Kann beim Erstellen einer Tabelle wie folgt angegeben werden:
CREATE TABLE table_name{
column_name int,..
FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name) }
Also nach dem Erstellen der Tabelle:
ALTER TABLE table_name
ADD FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name));
Sie können das Verhalten eines Fremdschlüssels festlegen, wenn er das Feld bearbeitet, auf das er verweist. Manipulationen können folgender ON DELETEArt sein ON UPDATE: Mögliche Verhaltensoptionen:
  • CASCADE— Mit dieser Eigenschaft werden Zeilen aus der abhängigen Tabelle automatisch gelöscht oder geändert, wenn zugehörige Zeilen in der Haupttabelle gelöscht oder geändert werden.
  • SET NULLNULL— Mit dieser Eigenschaft wird der Wert für die Fremdschlüsselspalte festgelegt , wenn eine zugehörige Zeile aus der Haupttabelle gelöscht oder aktualisiert wird .
  • NO ACTION– lehnt Versuche ab, Zeilen in der Haupttabelle zu löschen oder zu ändern, wenn in der abhängigen Tabelle verwandte Zeilen vorhanden sind;
  • RESTRICT- gleichwertig NO ACTION;
  • SET DEFAULT– Wenn mit dieser Eigenschaft eine zugehörige Zeile aus der Haupttabelle gelöscht oder aktualisiert wird, wird der Standardwert (falls vorhanden) für die Fremdschlüsselspalte festgelegt.
Anwendungsbeispiel:
CREATE TABLE table_name{
column_name int,..
FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name) ON UPDATE CASCADE ON DELETE CASCADE }
ON DELETEWenn das Verhalten für und nicht explizit festgelegt ist ON UPDATE, wird das Verhalten auf festgelegt RESTRICT.

10. Arten von Verbindungen zwischen Tabellen (Join)

Die Verbindung zwischen Tabellen wird auf Basis gemeinsamer Daten (Felder) bereitgestellt. Dies geschieht mithilfe eines Operators JOIN, einer Operation, die Zeilen aus einer Tabelle mit Zeilen in einer anderen Tabelle abgleicht. Die Zuordnung erfolgt so, dass die Spalten beider Tabellen benachbart sind, obwohl sie aus separaten Tabellen bezogen werden können. Und wenn wir gemeinsame Felder für drei Tabellen haben, können wir ihre Daten als eine gemeinsame Tabelle anzeigen. Es ist jedoch zu bedenken, dass die Abfrage umso schneller ausgeführt wird, je weniger Tabellen verknüpft werden. Also die Typen JOIN:
  • INNER JOIN– eine Verbindung, die nur die Daten aus der ersten Tabelle anzeigt, die einigen Daten aus der zweiten Tabelle entsprechen. Der Rest geht unter.Entwicklerinterview: Analyse von Datenbankfragen - 4
  • LEFT JOIN- eine Verbindung, die alle Daten aus der ersten Tabelle und die entsprechenden Daten aus der zweiten, falls vorhanden, anzeigt. Wenn keine entsprechenden Daten vorhanden sind, sind die Felder für Daten aus der zweiten Tabelle leer.Entwicklerinterview: Analyse von Datenbankfragen - 5
  • RIGHT JOIN– eine Verbindung, die alle Daten aus der zweiten Tabelle und die entsprechenden Daten aus der ersten, falls vorhanden, anzeigt. Wenn keine entsprechenden Daten vorhanden sind, sind die Felder für die Daten aus der ersten Tabelle leer.Entwicklerinterview: Analyse von Datenbankfragen - 6
  • FULL JOIN- eine Verbindung, die alle Daten aus der ersten und zweiten Tabelle anzeigt. Wenn in der anderen Tabelle keine zugehörigen Daten vorhanden sind, sind die Felder für diese Daten leer.Entwicklerinterview: Analyse von Datenbankfragen - 7
  • CROSS JOIN- ein Cross-Join, bei dem jede Zeile der ersten Tabelle mit jeder Zeile der zweiten Tabelle (jeder mit jedem) verbunden wird. Das heißt, wenn zwei Tabellen jeweils 3 Zeilen haben, erhalten wir nach dieser Verknüpfung ein Ergebnis von 9 Zeilen.Entwicklerinterview: Analyse von Datenbankfragen - 8
Beispiel Join(inner):
SELECT *
FROM first_table
INNER JOIN second_table ON first_table.some_column = second_table.some_column

11. Was ist eine ACID-Eigenschaft in einer Datenbank?

A – Atomicity stellt sicher, dass keine Transaktion teilweise an das System übertragen wird. Entweder werden alle Unteroperationen ausgeführt oder keine. Um beispielsweise Geld von einer Bank auf ein anderes Konto zu überweisen, sind zwei Vorgänge erforderlich:
  1. Überweisen Sie Geld auf ein Bankkonto.
  2. Überweisen Sie Geld von einem Bankkonto auf ein bestimmtes Konto.
Aber alles kann passieren. Sie gehen beispielsweise zur Bank, und dann tritt ein Fehler auf und der zweite Vorgang wird nicht abgeschlossen. Oder umgekehrt: Es wird nur der zweite Vorgang ausgeführt. Daher werden diese Aktionen innerhalb einer Transaktion ausgeführt und das Ergebnis ist entweder alles oder nichts. C – Konsistenz : Bei jeder erfolgreichen Transaktion werden immer nur auflösbare Ergebnisse aufgezeichnet. Dadurch wird sichergestellt, dass alle Einschränkungen erfüllt sind (z. B. NOT NULL), andernfalls wird die Transaktion zurückgesetzt. Und - Isolation : Während der Ausführung einer Transaktion sollten parallele Transaktionen deren Ergebnis nicht beeinflussen. Dies gibt uns die Möglichkeit, nicht endgültige Datenzustände vor allen zu verbergen. Das ist eigentlich der Grund, warum fehlgeschlagene Transaktionen nichts zerstören können. Etwas weiter unten werden wir uns mit den Transaktionsisolationsstufen vertraut machen. D – Haltbarkeit : Wenn eine Transaktion abgeschlossen ist, können Sie sicher sein, dass die vorgenommenen Änderungen nicht aufgrund eines Fehlers abgebrochen werden.

12. Transaktionsisolationsstufen

Jede Isolationsstufe erlaubt/verbietet bestimmte Aktionen (Möglichkeiten):
  • Phantomlesung – innerhalb derselben Transaktion führt dieselbe Datenanforderung zu unterschiedlichen Ergebnissen, was auf die Hinzufügung von Daten durch eine andere (parallele) Transaktion zurückzuführen ist.
  • sich nicht wiederholendes Lesen – innerhalb derselben Transaktion führt dieselbe Datenanforderung zu unterschiedlichen Ergebnissen, was auf die Änderung oder Löschung von Daten durch eine andere (parallele) Transaktion zurückzuführen ist.
  • „Dirty“ Read – Lesen von Daten, die durch eine Transaktion hinzugefügt oder geändert wurden und anschließend nicht zurückgesetzt werden;
  • Verlorene Aktualisierung – wenn verschiedene Transaktionen gleichzeitig denselben Datenblock ändern, gehen alle Änderungen außer der letzten verloren (ähnlich einer „Race Condition“ beim Multithreading).
Der Einfachheit halber betrachten wir die Isolationsstufen und ihre Fähigkeiten in der Tabelle:
Isolationsniveaus Phantomlesung Sich nicht wiederholendes Lesen „schmutzige“ Lektüre Update verloren
SERIALISIERBAR + + + +
REPEATABLE_READ - + + +
READ_COMMITTED - - + +
READ_UNCOMMITTED - - - +

13. Was ist SQL-Injection?

SQL-InjectionGET ist eine der Methoden zum Hacken einer Website, deren Kern darin besteht, durch Abfragen oder Cookies etwas SQL-Code in die Daten einzuschleusen POST. Wenn eine Website solche Injektionen durchführt, besteht die Möglichkeit, Zugriff auf die Datenbank zu erhalten und die Anwendung zu hacken. Beispielsweise kennen wir den Namen einer Variablen. Sagen wir column_namemit type boolean. Wenn das System anfällig für Injektionen ist, können wir OR column_name=truealles, was wir brauchen, hinzufügen und dann aus der Datenbank schreiben. ORwird eine ODER-Bedingung erstellen und unser Ausdruck danach wird immer lauten true, was uns weiterbringen wird. Ein Angriff auf eine Website wie SQL-Injection ist aufgrund einer unsachgemäßen Verarbeitung eingehender Daten, die in SQL-Abfragen verwendet werden, möglich. Wenn Sie über JDBC eine Verbindung zu einer Datenbank herstellen , verwenden Sie verschiedene Statements. Um die Sicherheit zu erhöhen, ist die Verwendung PreparedStatementanstelle des üblichen erforderlich Statement, da bei der Verwendung Statementdie Abfragezeichenfolgen und -werte einfach addiert werden, wodurch Injektionen möglich werden. Im Gegenzug PreparedStatementgibt es eine bestimmte Anforderungsvorlage, in die die Daten mit den Anführungszeichen eingefügt werden. Infolgedessen werden SQL-Injektionen nur als Zeichenfolgendarstellung eines bestimmten Felds wahrgenommen. Zum Schutz vor SQL-Injections können Sie Prüfungen verwenden, die auf regulären Ausdrücken basieren (weitere Informationen zu regulären Ausdrücken finden Sie in diesem Artikel ). Entwicklerinterview: Analyse von Datenbankfragen - 9Eine andere Möglichkeit besteht darin, die Anzahl der Zeichen eingehender Parameter zu begrenzen: Wenn Sie beispielsweise eine Zahl von nicht mehr als 9999 erhalten sollen, reicht eine Beschränkung auf vier eingehende Zeichen aus. Dadurch wird das Risiko von Hackerangriffen mithilfe von SQL-Injections verringert. Weitere Informationen zur Sicherheit in Java finden Sie im Artikel „Sicherheit in Java: Best Practices“ .

14. Was sind gespeicherte Prozeduren? Gespeicherte Funktionen? Auslösen?

Gespeicherte Prozeduren in SQL sind eine Entität in der Datenbank, bei der es sich um eine Reihe von SQL-Anweisungen handelt, die einmal kompiliert und auf dem Server gespeichert werden. Mit einem Wort, dies ist ein Analogon zu Methoden in Java. Gespeicherte Prozeduren können Aktionen für Daten ausführen, sowohl normale Abfragen als auch einige Aktionen, die für normale Abfragen nicht verfügbar sind. Eine Prozedur ist eine SQL-Entität, die einmal erstellt und dann durch Übergabe von Argumenten aufgerufen wird. Der Vorteil dieses Ansatzes besteht darin, dass diese Anweisungen mehr als einmal wiederverwendet werden können. Gespeicherte Prozeduren verbessern die Leistung, erweitern die Programmierfunktionen und unterstützen Datensicherheitsfunktionen. Betrachten wir die Erstellung einer Prozedur:
CREATE PROCEDURE procedure_name (first_param some_type, second_param some_type..)
 begin
……...
 end
Aufruf der Prozedur:
CALL procedure_name (first_param, second_param…..);
Eine gespeicherte Funktion ist eine Art gespeicherte Prozedur. Der Unterschied zwischen einer Funktion besteht darin, dass sie immer nur einen einzelnen Wert zurückgibt, während eine Prozedur immer eine Reihe von Werten zurückgibt. Gespeicherte Prozeduren können nicht mit normalem SQL gemischt werden, eine gespeicherte Funktion hingegen schon – und das ist ihr Vorteil. Andererseits unterliegen gespeicherte Funktionen viel mehr Einschränkungen als Prozeduren. Erstellen einer gespeicherten Funktion:
CREATE FUNCTION function_name (first_param, second_param…..)
RETURNS some_type
 begin
……...
RETURN some_value;
end
Aufrufen einer gespeicherten Funktion:
SELECT function_name(first_param, second_param…..);
Ein Trigger ist eine andere Art von gespeicherter Prozedur, die nicht direkt vom Benutzer aufgerufen wird, sondern aktiviert wird, wenn Daten geändert werden. Das heißt, dieses Verfahren wird aktiviert, wenn bestimmte Bedingungen erfüllt sind, z. INSERTB. oder DELETEoder UPDATEDaten in einer bestimmten Spalte einer bestimmten Tabelle. BEFOREWann ein Trigger ausgelöst wird, wird anhand der Schlüsselwörter (Trigger wird vor dem zugehörigen Ereignis ausgelöst) oder AFTER(nach dem Ereignis) bestimmt .
CREATE TRIGGER trigger_name
ON table_name
AFTER INSERT
 begin
……...
 end

15. Üben

Wie dem auch sei, die häufigste SQL-Frage bei einem Vorstellungsgespräch wird Übung sein – Problemlösung. Es hat keinen Sinn, zu erraten, auf welche Aufgaben Sie stoßen werden, denn alles hängt von der Raffinesse der Vorstellungskraft Ihres Gegenübers ab. Daher wäre die einzige funktionierende Option, bei SQL-Abfragen unterschiedlicher Komplexität besser zu werden. sql-ex.ru kann als Ressource zum Üben verschiedener Aufgaben dienen . Nach den ersten zwanzig erledigten Aufgaben wird es für Ihren Gesprächspartner ziemlich schwierig sein, Sie mit einer SQL-Aufgabe zu erschrecken. Entwicklerinterview: Analyse von Datenbankfragen - 11Das ist alles für heute: Ich hoffe, dass Fragen zu Datenbanken nach der Lektüre dieses Artikels keine Schwierigkeiten oder Probleme bereiten. Vielen Dank für Ihre Aufmerksamkeit und bis bald!
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION