Almindelige SQL Interview-spørgsmål til Amazon, Apple, Google

SQL bruges i en lang række programmeringsjob. Det er vigtigt at være fortrolig med SQL, hvis du snart skal interviewe for en softwareposition. Dette gælder især, hvis du skal interviewe i et topteknologisk firma som Amazon, Apple eller Google.

Denne vejledning dækker grundlæggende SQL-syntaks som en opdatering og lister derefter nogle almindelige SQL-interviewspørgsmål. Svarene på alle spørgsmål gives, og du kan bruge disse oplysninger til at studere til dit programmeringsinterview.

Grundlæggende SQL-syntakseksempel

SQL er en international standard (ISO), men du finder nogle forskelle mellem implementeringer. Denne guide bruger MySQL som et eksempel, fordi det er den mest populære implementering af SQL.

Sådan bruges en bestemt database

Her er SQL-kommandoen, der bruges til at vælge den database, der indeholder tabellerne til dine SQL-udsagn:

USE fcc_sql_guides_database; 

VÆLG og FRA klausuler

Brug VÆLG til at bestemme, hvilke kolonner af data du vil vise i resultaterne. Der er også muligheder, du kan bruge til at vise data, der ikke er en tabelkolonne.

Følgende eksempel viser to kolonner valgt fra "student" -tabellen og to beregnede kolonner. Den første af de beregnede kolonner er et meningsløst tal, og den anden er systemdatoen.

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

HVOR klausul

WHERE-klausulen specificerer en betingelse under hentning af data. WHERE-klausulen bruges til at begrænse antallet af rækker, der returneres. Det bruges ofte i en SELECT-sætning, men kan også bruges i andre udsagn som UPDATE og DELETE.

Her er den grundlæggende syntaks for WHERE-klausulen:

SELECT column1, column2 FROM table_name WHERE [condition]

Betingelsen i en WHERE-klausul kan omfatte logiske operatorer som>, <, =, LIKE, NOT, AND, OR.

Her er et eksempel på en SQL-sætning, der bruger WHERE-klausulen. Det specificerer, at hvis nogen af ​​de studerende har visse SAT-scores (1000, 1400), vil de ikke blive præsenteret:

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

BESTIL EFTER (ASC, DESC)

ORDER BY giver os en måde at sortere resultatsættet på et eller flere af elementerne i SELECT-sektionen.

Her er den samme liste som ovenfor, men sorteret efter den studerendes fulde navn. Standardsorteringsrækkefølgen er stigende (ASC), men for at sortere i den modsatte rækkefølge (faldende) bruger du DESC, som i eksemplet nedenfor:

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

GROUP BY og HAVE

GROUP BY giver os en måde at kombinere rækker og samlede data på. HAVING-klausulen er som ovenstående WHERE-klausul, bortset fra at den virker på de grupperede data.

SQL-sætningen nedenfor svarer på spørgsmålet: “Hvilke kandidater modtog det største antal bidrag (bestilt efter antal (*)) i 2016, men kun dem, der havde mere end 80 bidrag?”

Bestilling af dette datasæt i en faldende (DESC) rækkefølge placerer kandidaterne med det største antal bidrag øverst på listen.

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

Almindelige SQL Interview-spørgsmål

Hvad er en indre sammenføjning i SQL?

Dette er standardtilslutningstypen, hvis der ikke er angivet nogen sammenkædning. Den returnerer alle rækker, hvor der er mindst et match i begge tabeller.

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

Hvad er en venstre deltagelse i SQL?

En venstre sammenføjning returnerer alle rækker fra venstre tabel, og de matchede rækker fra højre tabel. Rækker i venstre tabel returneres, selvom der ikke var nogen match i højre tabel. Rækkerne fra den venstre tabel uden match i den højre tabel har de nullrigtige tabelværdier.

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

Hvad er en ret tilslutning i SQL?

En højre sammenføjning returnerer alle rækker fra højre tabel, og de matchede rækker fra venstre tabel. Overfor en venstre sammenføjning returnerer dette alle rækker fra højre tabel, selv hvor der ikke er nogen match i venstre tabel. Rækker i højre tabel, der ikke matcher i venstre tabel, har nullværdier for venstre tabelkolonner.

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

Hvad er en fuld sammenføjning eller fuld ydre sammenføjning i SQL?

En fuld ydre sammenføjning og en fuld sammenføjning er den samme ting. Den fulde ydre sammenføjning eller den fulde sammenføjning returnerer alle rækker fra begge tabeller, matcher rækkerne, hvor der kan laves et match, og placerer NULL'er på de steder, hvor der ikke findes nogen matchende række.

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

Hvad er resultatet af følgende kommando?

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

Brugeren rita, der blev overført, flytter nu til et andet firma. Da de objekter, hun oprettede, ikke længere bruges, skal du skrive en kommando for at fjerne denne bruger og alle hendes objekter.

Muligheden CASCADE er nødvendig for at fjerne alle brugerens objekter i databasen.

DROP USER rita CASCADE

Skriv en SQL-forespørgsel for at finde den niende højeste "Løn" fra "Medarbejder" -tabellen.

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

Konklusion

Hvis du tror, ​​du kan besvare alle disse spørgsmål, er du muligvis klar til dit interview. Held og lykke!