Häufige Fragen zu SQL-Interviews für Amazon, Apple, Google

SQL wird in einer Vielzahl von Programmieraufträgen verwendet. Es ist wichtig, mit SQL vertraut zu sein, wenn Sie bald ein Interview für eine Software-Position führen möchten. Dies gilt insbesondere dann, wenn Sie bei einem Top-Tech-Unternehmen wie Amazon, Apple oder Google ein Interview führen.

Dieses Handbuch behandelt die grundlegende SQL-Syntax als Auffrischung und listet dann einige häufig gestellte Fragen zu SQL-Interviews auf. Die Antworten auf alle Fragen werden gegeben und Sie können diese Informationen verwenden, um für Ihr Programmierinterview zu lernen.

Beispiel für eine grundlegende SQL-Syntax

SQL ist ein internationaler Standard (ISO), aber Sie werden einige Unterschiede zwischen den Implementierungen feststellen. In diesem Handbuch wird MySQL als Beispiel verwendet, da es die beliebteste Implementierung von SQL ist.

Verwendung einer bestimmten Datenbank

Hier ist der SQL-Befehl, mit dem Sie die Datenbank auswählen, die die Tabellen für Ihre SQL-Anweisungen enthält:

USE fcc_sql_guides_database; 

SELECT- und FROM-Klauseln

Verwenden Sie SELECT, um zu bestimmen, welche Spalten der Daten in den Ergebnissen angezeigt werden sollen. Es gibt auch Optionen, mit denen Sie Daten anzeigen können, die keine Tabellenspalte sind.

Das folgende Beispiel zeigt zwei aus der Tabelle "student" ausgewählte Spalten und zwei berechnete Spalten. Die erste der berechneten Spalten ist eine bedeutungslose Zahl, und die andere ist das Systemdatum.

SELECT studentID, FullName, 3+2 AS five, now() AS currentDate FROM student; 
Bild-1

WHERE-Klausel

Die WHERE-Klausel gibt eine Bedingung beim Abrufen von Daten an. Die WHERE-Klausel wird verwendet, um die Anzahl der zurückgegebenen Zeilen zu begrenzen. Es wird häufig in einer SELECT-Anweisung verwendet, kann aber auch in anderen Anweisungen wie UPDATE und DELETE verwendet werden.

Hier ist die grundlegende Syntax der WHERE-Klausel:

SELECT column1, column2 FROM table_name WHERE [condition]

Die Bedingung in einer WHERE-Klausel kann logische Operatoren wie>, <, =, LIKE, NOT, AND, OR enthalten.

Hier ist ein Beispiel für eine SQL-Anweisung mit der WHERE-Klausel. Es gibt an, dass Schüler, die bestimmte SAT-Werte (1000, 1400) haben, nicht vorgestellt werden:

SELECT studentID, FullName, sat_score, recordUpdated FROM student WHERE (studentID BETWEEN 1 AND 5 OR studentID = 8 OR FullName LIKE '%Maximo%') AND sat_score NOT IN (1000, 1400); 
Bild-1

BESTELLEN NACH (ASC, DESC)

Mit ORDER BY können wir die Ergebnismenge nach einem oder mehreren Elementen im Abschnitt SELECT sortieren.

Hier ist die gleiche Liste wie oben, jedoch sortiert nach dem vollständigen Namen des Schülers. Die Standardsortierreihenfolge ist aufsteigend (ASC). Um jedoch in umgekehrter Reihenfolge (absteigend) zu sortieren, verwenden Sie DESC wie im folgenden Beispiel:

SELECT studentID, FullName, sat_score FROM student WHERE (studentID BETWEEN 1 AND 5 OR studentID = 8 OR FullName LIKE '%Maximo%') AND sat_score NOT IN (1000, 1400) ORDER BY FullName DESC; 
Bild-1

GRUPPE NACH UND HABEN

Mit GROUP BY können wir Zeilen kombinieren und Daten aggregieren. Die HAVING-Klausel ähnelt der obigen WHERE-Klausel, wirkt sich jedoch auf die gruppierten Daten aus.

Die folgende SQL-Anweisung beantwortet die Frage: „Welche Kandidaten haben 2016 die meisten Beiträge (geordnet nach Anzahl (*)) erhalten, aber nur diejenigen, die mehr als 80 Beiträge hatten?“

Wenn Sie diesen Datensatz in absteigender Reihenfolge (DESC) sortieren, stehen die Kandidaten mit der größten Anzahl von Beiträgen ganz oben auf der Liste.

SELECT Candidate, Election_year, SUM(Total_$), COUNT(*) FROM combined_party_data WHERE Election_year = 2016 GROUP BY Candidate, Election_year HAVING count(*) > 80 ORDER BY count(*) DESC; 
Bild-1

Häufige Fragen zu SQL-Interviews

Was ist ein innerer Join in SQL?

Dies ist der Standard-Join-Typ, wenn kein Join angegeben ist. Es werden alle Zeilen zurückgegeben, in denen in beiden Tabellen mindestens eine Übereinstimmung vorliegt.

SELECT * FROM A x JOIN B y ON y.aId = x.Id

Was ist ein Left Join in SQL?

Ein linker Join gibt alle Zeilen aus der linken Tabelle und die übereinstimmenden Zeilen aus der rechten Tabelle zurück. Zeilen in der linken Tabelle werden zurückgegeben, auch wenn in der rechten Tabelle keine Übereinstimmung vorhanden war. Die Zeilen aus der linken Tabelle ohne Übereinstimmung in der rechten Tabelle haben nullWerte für die rechte Tabelle.

SELECT * FROM A x LEFT JOIN B y ON y.aId = x.Id

Was ist ein richtiger Join in SQL?

Ein rechter Join gibt alle Zeilen aus der rechten Tabelle und die übereinstimmenden Zeilen aus der linken Tabelle zurück. Im Gegensatz zu einem linken Join werden dadurch alle Zeilen aus der rechten Tabelle zurückgegeben, auch wenn in der linken Tabelle keine Übereinstimmung vorhanden ist. Zeilen in der rechten Tabelle, die in der linken Tabelle nicht übereinstimmen, enthalten nullWerte für die Spalten der linken Tabelle.

SELECT * FROM A x RIGHT JOIN B y ON y.aId = x.Id

Was ist ein vollständiger Join oder ein vollständiger äußerer Join in SQL?

Eine vollständige äußere Verknüpfung und eine vollständige Verknüpfung sind dasselbe. Der vollständige äußere Join oder der vollständige Join gibt alle Zeilen aus beiden Tabellen zurück, wobei die Zeilen überall dort abgeglichen werden, wo eine Übereinstimmung hergestellt werden kann, und NULL-Werte an den Stellen platziert werden, an denen keine übereinstimmende Zeile vorhanden ist.

SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName

Was ist das Ergebnis des folgenden Befehls?

DROP VIEW view_name

This will result in an error because you can’t perform a DML operation on a view. A DML operation is any operation that manipulates the data such as DROP, INSERT, UPDATE, and DELETE.

Can we perform a rollback after using ALTER command?

No, because ALTER is a DDL command and Oracle server performs an automatic COMMIT when the DDL statements are executed. DDL statements define data structures such as CREATE table and ALTER table.

Which is the only constraint that enforces rules at column level?

NOT NULL is the only constraint that works at the column level.

What are the pseudocolumns in SQL? Give some examples?

A pseudocolumn behaves like a column, but is not actually stored in the table because it is all generated values. The values of a pseudocolumn can be selected but they cannot be inserted, updated, or deleted.

ROWNUM, ROWID, USER, CURRVAL, NEXTVAL etc.

Create a user "my723acct" with password "kmd26pt". Use the "user_data" and temporary data tablespaces provided by PO8 and provide to this user 10M of storage space in "user_data" and 5M of storage space in "temporary_data".

CREATE USER my723acct IDENTIFIED BY kmd26pt DEFAULT TABLESPACE user_data TEMPORARY TABLESPACE temporary_data QUOTA 10M on user_data QUOTA 5M on temporary_data

Create the role role_tables_and_views.

CREATE ROLE role_tables_and_views

Grant to the role of the previous question the privileges to connect to the database and the privileges to create tables and views.

The privilege to connect to the database is CREATE SESSION The privilege to create table is CREATE TABLE The privilege to create view is CREATE VIEW

 GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO role_tables_and_views

Grant the previous role in the question to the users anny and rita.

 GRANT role_tables_and_views TO anny, rita

Write a command to change the password of the user rita from "abcd" to "dfgh"

 ALTER USER rita IDENTIFIED BY dfgh

The users rita and anny do not have SELECT privileges on the table INVENTORY that was created by scott. Write a command to allow scott to grant the users SELECT privileges on theses  tables.

 GRANT select ON inventory TO rita, anny

User rita has been transferred and no longer needs the privilege that was granted to her through the rolerole_tables_and_views. Write a command to remove her from her previously given privileges. She should still be able to connect to the database.

REVOKE select ON scott.inventory FROM rita REVOKE create table, create view FROM rita

Die übertragene Benutzerin Rita wechselt nun zu einem anderen Unternehmen. Da die von ihr erstellten Objekte nicht mehr verwendet werden, schreiben Sie einen Befehl, um diesen Benutzer und alle ihre Objekte zu entfernen.

Die Option CASCADE ist erforderlich, um alle Objekte des Benutzers in der Datenbank zu entfernen.

DROP USER rita CASCADE

Schreiben Sie eine SQL-Abfrage, um das n-te höchste "Gehalt" aus der Tabelle "Mitarbeiter" zu ermitteln.

 SELECT TOP 1 Salary FROM ( SELECT DISTINCT TOP N Salary FROM Employee ORDER BY Salary DESC ) ORDER BY Salary ASC

Fazit

Wenn Sie glauben, alle diese Fragen beantworten zu können, sind Sie möglicherweise bereit für Ihr Interview. Viel Glück!