Levinumad SQL-i intervjuuküsimused Amazonile, Apple'ile, Google'ile

SQL-i kasutatakse mitmesugustes programmeerimistöödes. Oluline on SQL-iga tuttav olla, kui kavatsete peagi tarkvara asjus intervjuusid teha. See kehtib eriti juhul, kui kavatsete intervjueerida tipptehnoloogiaettevõttes nagu Amazon, Apple või Google.

Selles juhendis käsitletakse värskendusena põhilist SQL-süntaksit ja seejärel loetletakse mõned levinumad SQL-intervjuu küsimused. Kõigile küsimustele antakse vastused ja saate seda teavet kasutada programmeerimisintervjuu uurimiseks.

Põhiline SQL-süntaksinäide

SQL on rahvusvaheline standard (ISO), kuid juurutamise vahel leiate mõningaid erinevusi. Selles juhendis kasutatakse näiteks MySQL-i, kuna see on SQL-i kõige populaarsem juurutus.

Konkreetse andmebaasi kasutamine

Siin on käsk SQL, mida kasutatakse SQL-i lausete tabeleid sisaldava andmebaasi valimiseks:

USE fcc_sql_guides_database; 

Klauslid SELECT ja FROM

Valige SELECT, et määrata, milliseid andmete veerge soovite tulemustes kuvada. Samuti on võimalusi, mida saate kasutada andmete kuvamiseks, mis pole tabeli veerg.

Järgmine näide näitab kahte tabelit „õpilane” valitud kahte veergu ja kahte arvutatud veergu. Esimene arvutatud veergudest on mõttetu arv ja teine ​​on süsteemi kuupäev.

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

KUS klausel

Klausel WHERE täpsustab tingimuse andmete hankimisel. Klauslit WHERE kasutatakse tagastatavate ridade arvu piiramiseks. Seda kasutatakse sageli SELECT-lauses, kuid seda saab kasutada ka teistes lausetes, näiteks UPDATE ja DELETE.

Siin on klausli WHERE põhisüntaks:

SELECT column1, column2 FROM table_name WHERE [condition]

Klausli WHERE tingimus võib sisaldada loogilisi operaatoreid nagu>, <, =, LIKE, NOT, AND, OR.

Siin on näide SQL-i avaldusest, kus kasutatakse klauslit WHERE. Selles täpsustatakse, et kui kellelgi õpilastest on teatud SAT-skoor (1000, 1400), siis neid ei esitata:

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

TELLIGE (ASC, DESC)

ORDER BY annab meile võimaluse sorteerida määratud tulemus ühe või mitme jaotises SELECT oleva üksuse järgi.

Siin on sama loend nagu ülal, kuid sorteeritud õpilase täisnime järgi. Vaikimisi sorteerimisjärjestus on tõusev (ASC), kuid vastupidises järjekorras (kahanevas) sortimiseks kasutate DESC-d, nagu allpool toodud näites:

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

RÜHM JÄRGI ja omab

GROUP BY annab meile võimaluse ridade ja andmete koondamiseks. HAVING-klausel on nagu ülaltoodud WHERE-klausel, välja arvatud see, et see toimib rühmitatud andmetel.

Allpool olev SQL-i lause vastab küsimusele: "Millised kandidaadid said 2016. aastal kõige rohkem kaastöid (järjestatud loenduse järgi (*)), kuid ainult need, kellel oli rohkem kui 80 kaastööd?"

Selle andmekogumi järjestamine kahanevas järjestuses (DESC) seab nimekirja ette kandidaadid, kellel on kõige rohkem kaastöid.

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

Levinud SQL-intervjuu küsimused

Mis on SQL-i sisemine liitumine?

Kui liitumist pole määratud, on see vaiketüüp. See tagastab kõik read, milles mõlemas tabelis on vähemalt üks vaste.

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

Mis on vasakpoolne liitumine SQL-is?

Vasak liitumine tagastab kõik read vasakult tabelilt ja sobivad read paremalt tabelilt. Vasakpoolse tabeli read tagastatakse ka siis, kui paremas tabelis vastet ei olnud. Ridad vasakpoolsest tabelist, kus paremas tabelis pole ühtegi vastet, on nullparempoolse tabeli väärtuste jaoks.

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

Mis on õige liitumine SQL-is?

Parem liitumine tagastab kõik parempoolse tabeli read ja vasakusse tabelisse sobivad read. Vasakpoolse liitumise vastas tagastab see kõik paremast tabelist pärinevad read ka siis, kui vasakus tabelis pole vastet. Parema tabeli ridadel, millel vasakul tabelil pole ühtegi vastet, on nullvasaku tabeli veergude väärtused.

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

Mis on täielik liitumine või täielik välimine liitumine SQL-is?

Täielik välimine liitumine ja täielik ühendamine on sama asi. Täielik välimine liitumine või täielik liitmine tagastab mõlema tabeli kõik read, sobitades read kõikjal, kus saab sobitada, ja asetades NULL-id kohtadesse, kus ühtivat rida pole.

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

Mis on järgmise käsu tulemus?

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

Teisaldatud kasutaja rita kolib nüüd teise ettevõttesse. Kuna tema loodud objekte enam ei kasutata, kirjutage käsk selle kasutaja ja kõigi tema objektide eemaldamiseks.

Suvand CASCADE on vajalik kõigi kasutaja andmebaasis olevate objektide eemaldamiseks.

DROP USER rita CASCADE

Kirjutage SQL-päring tabeli „Töötaja“ n-nda kõrgeima „Palk“ leidmiseks.

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

Järeldus

Kui arvate, et oskate kõigile neile küsimustele vastata, võite olla intervjuuks valmis. Edu!