Az SQL-t sokféle programozási munkában használják. Fontos, hogy ismerje az SQL-t, ha hamarosan interjút fog készíteni egy szoftver pozícióval kapcsolatban. Ez különösen igaz, ha olyan csúcstechnológiával foglalkozó cégnél fog interjút készíteni, mint az Amazon, az Apple vagy a Google.
Ez az útmutató az alapvető SQL-szintaxist fedi fel frissítésként, majd felsorol néhány általános SQL-interjúval kapcsolatos kérdést. Minden kérdésre megadják a választ, és felhasználhatja ezeket az információkat a programozási interjú tanulmányozásához.
Alapszintű SQL szintaxis példa
Az SQL egy nemzetközi szabvány (ISO), de talál néhány különbséget a megvalósítások között. Ez az útmutató a MySQL-t használja példaként, mert ez az SQL legnépszerűbb megvalósítása.
Egy adott adatbázis használata
Az SQL parancsok az SQL utasítások táblázatait tartalmazó adatbázis kiválasztására szolgálnak:
USE fcc_sql_guides_database;
SELECT és FROM záradék
A SELECT segítségével meghatározhatja, hogy az adatok mely oszlopait kívánja megjeleníteni az eredményekben. Vannak olyan lehetőségek is, amelyekkel olyan adatokat jeleníthet meg, amelyek nem táblázatos oszlopok.
Az alábbi példa két, a „hallgató” táblázatból kiválasztott oszlopot és két számított oszlopot mutat. A kiszámított oszlopok közül az első értelmetlen szám, a másik pedig a rendszer dátuma.
SELECT studentID, FullName, 3+2 AS five, now() AS currentDate FROM student;

WHERE záradék
A WHERE záradék megad egy feltételt az adatok lekérése közben. A WHERE záradék a visszaküldött sorok számának korlátozására szolgál. Gyakran használják egy SELECT utasításban, de más utasításokban is, például az UPDATE és a DELETE.
Itt van a WHERE záradék alapvető szintaxisa:
SELECT column1, column2 FROM table_name WHERE [condition]
A WHERE záradékban szereplő feltétel tartalmazhat olyan logikai operátorokat, mint a>, <, =, LIKE, NOT, AND, OR.
Itt van egy példa egy SQL utasításra, amely a WHERE záradékot használja. Meghatározza, hogy ha valamelyik hallgató rendelkezik bizonyos SAT-pontszámokkal (1000, 1400), akkor azokat nem mutatják be:
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);

MEGRENDELÉS (ASC, DESC)
Az ORDER BY lehetőséget nyújt arra, hogy a KIVÁLASZTÁS szakaszban szereplő elemek egy vagy több eleme alapján rendezzük az eredményt.
Itt található a fenti lista, de a hallgató teljes neve szerint rendezve. Az alapértelmezett rendezési sorrend növekvő (ASC), de az ellenkező sorrendbe (csökkenő) történő rendezéshez a DESC-t használja, mint az alábbi példában:
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;

CSOPORTOSÍTANI ÉS VAN
A GROUP BY lehetőséget ad a sorok és adatok összesítésére. A HAVING záradék hasonló a fenti WHERE klauzulához, azzal a különbséggel, hogy a csoportosított adatokra hat.
Az alábbi SQL állítás megválaszolja a kérdést: „Mely jelöltek kapták a legtöbb hozzájárulást (szám szerint rendezve (*)) 2016-ban, de csak azokat, akiknek több mint 80 hozzájárulása volt?”
Ha ezt az adatsort csökkenő (DESC) sorrendben rendezi, akkor a legtöbb hozzászólással rendelkező jelöltek kerülnek a lista elejére.
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;

Gyakori SQL interjúk
Mi az a belső csatlakozás az SQL-ben?
Ez az alapértelmezett típusú csatlakozás, ha nincs megadva csatlakozás. Visszaadja az összes sort, amelyben legalább egy találat van mindkét táblában.
SELECT * FROM A x JOIN B y ON y.aId = x.Id
Mi az a bal oldali csatlakozás az SQL-ben?
A bal oldali csatlakozás az összes sort a bal oldali táblázatból adja vissza, az egyező sorokat pedig a jobb oldali táblázatból. A bal oldali táblázat sorai akkor is visszatérnek, ha a jobb táblázatban nem volt egyezés. A bal oldali táblázat sorai, amelyek nem egyeznek a jobb táblázatban, null
a jobb tábla értékeire vonatkoznak.
SELECT * FROM A x LEFT JOIN B y ON y.aId = x.Id
What is a right join in SQL?
A right join returns all rows from the right table, and the matched rows from the left table. Opposite of a left join, this will return all rows from the right table even where there is no match in the left table. Rows in the right table that have no match in the left table will have null
values for left table columns.
SELECT * FROM A x RIGHT JOIN B y ON y.aId = x.Id
What is a full join or full outer join in SQL?
A full outer join and a full join are the same thing. The full outer join or full join returns all rows from both tables, matching up the rows wherever a match can be made and placing NULLs in the places where no matching row exists.
SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName
What is the result of the following command?
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
Az áthelyezett rita felhasználó most egy másik céghez költözik. Mivel az általa létrehozott objektumokat már nem használják, írjon egy parancsot a felhasználó és az összes objektum eltávolítására.
A CASCADE opció szükséges a felhasználó összes objektumának eltávolításához az adatbázisból.
DROP USER rita CASCADE
Írjon egy SQL-lekérdezést, hogy megtalálja az n-edik legmagasabb "Fizetést" az "Alkalmazott" táblázatból.
SELECT TOP 1 Salary FROM ( SELECT DISTINCT TOP N Salary FROM Employee ORDER BY Salary DESC ) ORDER BY Salary ASC
Következtetés
Ha úgy gondolja, hogy válaszol ezekre a kérdésekre, akkor készen áll az interjúra. Sok szerencsét!