Questions d'entrevue SQL courantes pour Amazon, Apple, Google

SQL est utilisé dans une grande variété de travaux de programmation. Il est important de se familiariser avec SQL si vous allez bientôt passer un entretien pour un poste logiciel. Cela est particulièrement vrai si vous allez interviewer une entreprise de haute technologie telle qu'Amazon, Apple ou Google.

Ce guide couvrira la syntaxe SQL de base à titre de rappel, puis listera quelques questions d'entretien SQL courantes. Les réponses à toutes les questions sont données et vous pouvez utiliser ces informations pour étudier pour votre entretien de programmation.

Exemple de syntaxe SQL de base

SQL est une norme internationale (ISO), mais vous trouverez quelques différences entre les implémentations. Ce guide utilise MySQL comme exemple car c'est l'implémentation la plus populaire de SQL.

Comment utiliser une base de données spécifique

Voici la commande SQL utilisée pour sélectionner la base de données contenant les tables de vos instructions SQL:

USE fcc_sql_guides_database; 

Clauses SELECT et FROM

Utilisez SELECT pour déterminer les colonnes des données que vous souhaitez afficher dans les résultats. Il existe également des options que vous pouvez utiliser pour afficher des données qui ne sont pas une colonne de table.

L'exemple suivant montre deux colonnes sélectionnées dans le tableau «étudiant» et deux colonnes calculées. La première des colonnes calculées est un nombre sans signification, et l'autre est la date système.

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

Clause WHERE

La clause WHERE spécifie une condition lors de l'obtention des données. La clause WHERE est utilisée pour limiter le nombre de lignes renvoyées. Il est souvent utilisé dans une instruction SELECT mais peut également être utilisé dans d'autres instructions telles que UPDATE et DELETE.

Voici la syntaxe de base de la clause WHERE:

SELECT column1, column2 FROM table_name WHERE [condition]

La condition dans une clause WHERE peut inclure des opérateurs logiques tels que>, <, =, LIKE, NOT, AND, OR.

Voici un exemple d'instruction SQL utilisant la clause WHERE. Il précise que si l'un des élèves a certains scores SAT (1000, 1400), il ne sera pas présenté:

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); 
image-1

ORDER BY (ASC, DESC)

ORDER BY nous donne un moyen de trier le jeu de résultats par un ou plusieurs des éléments de la section SELECT.

Voici la même liste que ci-dessus, mais triée par nom complet de l'élève. L'ordre de tri par défaut est croissant (ASC), mais pour trier dans l'ordre opposé (décroissant), vous utilisez DESC, comme dans l'exemple ci-dessous:

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; 
image-1

GROUP BY et HAVING

GROUP BY nous donne un moyen de combiner des lignes et d'agréger des données. La clause HAVING est similaire à la clause WHERE ci-dessus, sauf qu'elle agit sur les données groupées.

L'instruction SQL ci-dessous répond à la question: «Quels candidats ont reçu le plus grand nombre de contributions (classés par nombre (*)) en 2016, mais uniquement ceux qui ont eu plus de 80 contributions?»

Le classement de cet ensemble de données dans un ordre décroissant (DESC) place les candidats ayant le plus grand nombre de contributions en haut de la 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; 
image-1

Questions d'entrevue SQL courantes

Qu'est-ce qu'une jointure interne dans SQL?

Il s'agit du type de jointure par défaut si aucune jointure n'est spécifiée. Il renvoie toutes les lignes dans lesquelles il y a au moins une correspondance dans les deux tables.

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

Qu'est-ce qu'une jointure gauche dans SQL?

Une jointure à gauche renvoie toutes les lignes de la table de gauche et les lignes correspondantes de la table de droite. Les lignes de la table de gauche seront renvoyées même s'il n'y avait aucune correspondance dans la table de droite. Les lignes de la table de gauche sans correspondance dans la table de droite auront des nullvaleurs de table de droite.

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

Qu'est-ce qu'une jointure droite dans SQL?

Une jointure à droite renvoie toutes les lignes de la table de droite et les lignes correspondantes de la table de gauche. À l'opposé d'une jointure gauche, cela renverra toutes les lignes de la table de droite même s'il n'y a pas de correspondance dans la table de gauche. Les lignes de la table de droite qui n'ont pas de correspondance dans la table de gauche auront des nullvaleurs pour les colonnes de la table de gauche.

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

Qu'est-ce qu'une jointure complète ou une jointure externe complète dans SQL?

Une jointure externe complète et une jointure complète sont la même chose. La jointure externe complète ou la jointure complète renvoie toutes les lignes des deux tables, en faisant correspondre les lignes partout où une correspondance peut être faite et en plaçant NULL aux endroits où aucune ligne correspondante n'existe.

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

Quel est le résultat de la commande suivante?

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

L'utilisateur rita qui a été transféré déménage maintenant dans une autre entreprise. Puisque les objets qu'elle a créés ne sont plus utilisés, écrivez une commande pour supprimer cet utilisateur et tous ses objets.

L'option CASCADE est nécessaire pour supprimer tous les objets de l'utilisateur dans la base de données.

DROP USER rita CASCADE

Écrivez une requête SQL pour trouver le nième "Salaire" le plus élevé de la table "Employé".

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

Conclusion

Si vous pensez pouvoir répondre à toutes ces questions, vous êtes peut-être prêt pour votre entretien. Bonne chance!