U SQL-u, koje ste vrste joins
koristili i objasnite kako rade?
Odgovor:
INNER JOIN
: Vraća retke s podudarnim podacima iz obje tablice.LEFT JOIN
: Vraća sve retke iz lijeve tablice i odgovarajuće retke iz desne tablice.RIGHT JOIN
: Vraća sve retke iz desne tablice i odgovarajuće retke iz lijeve tablice.FULL JOIN
: Vraća sve retke iz obje tablice, uključujući retke koji se ne podudaraju.
Objasnite ACID koncepte u SQL-u i njihovu ulogu u upravljanju transakcijama
Odgovor: ACID je kratica za Atomicity, Consistency, Isolation, Durability
. Ovo su bitna svojstva u upravljanju transakcijama u SQL-u:
Atomicity
osigurava da je transakcija u potpunosti obrađena ili da se uopće ne obradi.Consistency
osigurava da se podaci moraju pridržavati definiranih pravila, ograničenja i uvjeta.Isolation
osigurava da istodobne transakcije ne ometaju jedna drugu.Durability
osigurava da se nakon završetka transakcije promjene u bazi podataka sigurno i trajno spremaju.
Koja je razlika između ROW_NUMBER(), RANK(), DENSE_RANK()
funkcija u SQL-u?
Odgovor: ROW_NUMBER(), RANK(), DENSE_RANK()
svi se koriste za numeriranje redaka u rezultatu upita, ali imaju sljedeće razlike:
ROW_NUMBER()
: Dodjeljuje kontinuirane brojeve recima u rezultatu upita, bez razmatranja duplikata.RANK()
: Dodjeljuje brojeve recima u rezultatu upita i preskače sljedeći broj u slučaju izjednačenja.DENSE_RANK()
: Dodjeljuje brojeve recima u rezultatu upita i ne preskače sljedeći broj u slučaju izjednačenja.
Kako koristiti window functions
u SQL-u i dati primjer.
Odgovor: Window functions
dopustiti izvođenje izračuna na skupu povezanih redaka bez mijenjanja rezultata glavnog upita. Na primjer, možemo koristiti prozorske funkcije za izračunavanje tekućih ukupnih iznosa ili dohvaćanje prvih N redaka unutar skupa rezultata.
SELECT ProductID, UnitPrice,
SUM(UnitPrice) OVER(ORDER BY ProductID) AS RunningTotal
FROM Products;
Kako koristiti regularne izraze u SQL-u za podudaranje uzoraka
Odgovor: Regularni izrazi u SQL-u koriste se za pretraživanje složenih tekstualnih uzoraka. Često se koriste s LIKE
operatorom ili funkcijama poput REGEXP_LIKE
(u Oracleu) ili REGEXP_MATCHES
(u PostgreSQL-u).
SELECT * FROM Employees WHERE LastName LIKE '%son%';
Kako koristiti JSON funkcije u SQL-u za rad s JSON podacima
Odgovor: JSON funkcije u SQL-u omogućuju postavljanje upita, umetanje, ažuriranje i brisanje podataka u JSON formatu u bazi podataka.
Na primjer, možemo koristiti funkcije kao što su JSON_VALUE, JSON_QUERY, JSON_MODIFY(u SQL Serveru) ili operatore kao što su ->, ->>, #>, #>> itd.(u PostgreSQL) za manipuliranje JSON svojstvima.
SELECT JSON_VALUE(CustomerInfo, '$.Name') AS CustomerName
FROM Customers;
Napredne tehnike za optimizaciju SQL upita i podešavanje performansi baze podataka
Odgovor: Kako bismo optimizirali SQL upite i performanse baze podataka, možemo koristiti tehnike kao što su:
- Korištenje indeksa za stupce koji se često traže.
- Optimizacija
JOIN
iWHERE
klauzule za učinkovito dohvaćanje podataka. - Korištenje funkcija prozora i označavanje stranica kada je potrebno.
- Izbjegavanje
SELECT
* za dohvaćanje samo potrebnih stupaca. - Korištenje savjeta upita u nekim slučajevima.
- Osiguravanje normalizacije podataka i uklanjanje duplikata.
- Korištenje alata za praćenje performansi za praćenje i fino podešavanje baze podataka.
Objasnite kako koristiti SET
operacije (UNION, INTERSECT, EXCEPT)
u SQL-u
Odgovor: SET
operacije (UNION, INTERSECT, EXCEPT)
se koriste za kombiniranje i manipuliranje skupovima rezultata različitih upita.
UNION
: Kombinira rezultate dva ili više upita u jedan skup podataka i uklanja duplikate.INTERSECT
: Vraća retke koji se pojavljuju u oba skupa rezultata upita.EXCEPT
: Vraća retke koji se pojavljuju u prvom skupu rezultata upita, ali ne i u drugom.
Kako koristiti funkcije upita poput LEAD, LAG, FIRST_VALUE, LAST_VALUE
SQL-a
Odgovor: Funkcije upita poput LEAD, LAG, FIRST_VALUE, LAST_VALUE
koriste se za dohvaćanje vrijednosti iz povezanih redaka unutar istog rezultata upita.
LEAD
: Dohvaća vrijednost stupca iz sljedećeg retka u rezultatu upita.LAG
: Dohvaća vrijednost stupca iz prethodnog retka u rezultatu upita.FIRST_VALUE
: Dohvaća prvu vrijednost stupca u rezultatu upita.LAST_VALUE
: Dohvaća posljednju vrijednost stupca u rezultatu upita.