Preguntas comunes de la entrevista SQL para Amazon, Apple, Google

SQL se utiliza en una amplia variedad de trabajos de programación. Es importante estar familiarizado con SQL si se va a entrevistar pronto para un puesto de software. Esto es especialmente cierto si va a realizar una entrevista en una empresa de alta tecnología como Amazon, Apple o Google.

Esta guía cubrirá la sintaxis SQL básica como un repaso y luego enumerará algunas preguntas comunes de entrevistas SQL. Se dan las respuestas a todas las preguntas y puede usar esta información para estudiar para su entrevista de programación.

Ejemplo de sintaxis SQL básica

SQL es un estándar internacional (ISO), pero encontrará algunas diferencias entre las implementaciones. Esta guía usa MySQL como ejemplo porque es la implementación más popular de SQL.

Cómo usar una base de datos específica

Aquí está el comando SQL utilizado para seleccionar la base de datos que contiene las tablas para sus declaraciones SQL:

USE fcc_sql_guides_database; 

Cláusulas SELECT y FROM

Use SELECT para determinar qué columnas de los datos desea mostrar en los resultados. También hay opciones que puede utilizar para mostrar datos que no son una columna de tabla.

El siguiente ejemplo muestra dos columnas seleccionadas de la tabla "estudiante" y dos columnas calculadas. La primera de las columnas calculadas es un número sin sentido y la otra es la fecha del sistema.

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

Dónde cláusula

La cláusula WHERE especifica una condición al obtener datos. La cláusula WHERE se usa para limitar el número de filas devueltas. A menudo se usa en una instrucción SELECT, pero también se puede usar en otras instrucciones como UPDATE y DELETE.

Aquí está la sintaxis básica de la cláusula WHERE:

SELECT column1, column2 FROM table_name WHERE [condition]

La condición en una cláusula WHERE puede incluir operadores lógicos como>, <, =, LIKE, NOT, AND, OR.

A continuación, se muestra un ejemplo de una declaración SQL que utiliza la cláusula WHERE. Especifica que si alguno de los alumnos tiene determinadas puntuaciones en el SAT (1000, 1400), no se le presentará:

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

ORDENAR POR (ASC, DESC)

ORDER BY nos brinda una forma de ordenar el conjunto de resultados por uno o más de los elementos en la sección SELECT.

Esta es la misma lista que la anterior, pero ordenada por el nombre completo del estudiante. El orden de clasificación predeterminado es ascendente (ASC), pero para ordenar en el orden opuesto (descendente) se usa DESC, como en el ejemplo siguiente:

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

AGRUPAR Y TENER

GROUP BY nos brinda una forma de combinar filas y agregar datos. La cláusula HAVING es como la cláusula WHERE anterior, excepto que actúa sobre los datos agrupados.

La siguiente declaración SQL responde a la pregunta: "¿Qué candidatos recibieron la mayor cantidad de contribuciones (ordenados por recuento (*)) en 2016, pero solo aquellos que tenían más de 80 contribuciones?"

Ordenar este conjunto de datos en orden descendente (DESC) coloca a los candidatos con el mayor número de contribuciones al principio de la lista.

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

Preguntas comunes de la entrevista SQL

¿Qué es una combinación interna en SQL?

Este es el tipo de combinación predeterminado si no se especifica ninguna combinación. Devuelve todas las filas en las que hay al menos una coincidencia en ambas tablas.

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

¿Qué es una combinación izquierda en SQL?

Una combinación izquierda devuelve todas las filas de la tabla izquierda y las filas coincidentes de la tabla derecha. Las filas de la tabla de la izquierda se devolverán incluso si no hubo coincidencia en la tabla de la derecha. Las filas de la tabla de la izquierda que no coincidan en la tabla de la derecha tendrán los nullvalores de la tabla de la derecha.

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

¿Qué es una combinación derecha en SQL?

Una combinación derecha devuelve todas las filas de la tabla derecha y las filas coincidentes de la tabla izquierda. Al contrario de una combinación de la izquierda, esto devolverá todas las filas de la tabla de la derecha incluso cuando no haya coincidencias en la tabla de la izquierda. Las filas de la tabla de la derecha que no coinciden en la tabla de la izquierda tendrán nullvalores para las columnas de la tabla de la izquierda.

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

¿Qué es una combinación completa o una combinación externa completa en SQL?

Una combinación externa completa y una combinación completa son lo mismo. La combinación externa completa o la combinación completa devuelve todas las filas de ambas tablas, haciendo coincidir las filas siempre que se pueda hacer una coincidencia y colocando NULL en los lugares donde no existe una fila coincidente.

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

¿Cuál es el resultado del siguiente comando?

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

La usuaria rita que fue transferida ahora se está mudando a otra empresa. Dado que los objetos que creó ya no se utilizan, escriba un comando para eliminar este usuario y todos sus objetos.

La opción CASCADE es necesaria para eliminar todos los objetos del usuario en la base de datos.

DROP USER rita CASCADE

Escriba una consulta SQL para encontrar el enésimo "Salario" más alto de la tabla "Empleado".

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

Conclusión

Si cree que puede responder a todas estas preguntas, puede estar listo para su entrevista. ¡Buena suerte!