Otázky k pohovoru pro vývojáře SQL: Běžné otázky a odpovědi v pohovoru SQL – část 3

Jaké typy joins jste v SQL použili a vysvětlete, jak fungují?

Odpovědět:

  • INNER JOIN: Vrátí řádky s odpovídajícími daty z obou tabulek.
  • LEFT JOIN: Vrátí všechny řádky z levé tabulky a odpovídající řádky z pravé tabulky.
  • RIGHT JOIN: Vrátí všechny řádky z pravé tabulky a odpovídající řádky z levé tabulky.
  • FULL JOIN: Vrátí všechny řádky z obou tabulek, včetně neodpovídajících řádků.

 

Vysvětlete koncepty ACID v SQL a jejich roli ve správě transakcí

Odpověď: ACID znamená Atomicity, Consistency, Isolation, Durability. Toto jsou základní vlastnosti při správě transakcí v SQL:

  • Atomicity zajišťuje, že transakce je buď plně zpracována, nebo není zpracována vůbec.
  • Consistency zajišťuje, že data musí splňovat definovaná pravidla, omezení a podmínky.
  • Isolation zajišťuje, že souběžné transakce se navzájem neovlivňují.
  • Durability zajišťuje, že jakmile je transakce dokončena, změny v databázi jsou bezpečně a trvale uloženy.

 

Jaký je rozdíl mezi ROW_NUMBER(), RANK(), DENSE_RANK() funkcemi v SQL?

Odpověď: ROW_NUMBER(), RANK(), DENSE_RANK() všechny se používají pro číslování řádků ve výsledku dotazu, ale mají následující rozdíly:

  • ROW_NUMBER(): Přiřadí souvislá čísla k řádkům ve výsledku dotazu bez zohlednění duplicit.
  • RANK(): Přiřadí čísla k řádkům ve výsledku dotazu a v případě remíz přeskočí další číslo.
  • DENSE_RANK(): Přiřadí čísla k řádkům ve výsledku dotazu a nepřeskočí další číslo v případě remíz.

 

Jak používat window functions v SQL a uvést příklad.

Odpověď: Window functions povolit provádění výpočtů na sadě souvisejících řádků bez změny výsledku hlavního dotazu. Můžeme například použít funkce okna k výpočtu průběžných součtů nebo načtení prvních N řádků v sadě výsledků.

SELECT ProductID, UnitPrice,   
       SUM(UnitPrice) OVER(ORDER BY ProductID) AS RunningTotal  
FROM Products;  

 

Jak používat regulární výrazy v SQL pro porovnávání vzorů

Odpověď: Regulární výrazy v SQL se používají pro komplexní vyhledávání textových vzorů. Často se používají s LIKE operátorem nebo funkcemi jako REGEXP_LIKE(v Oracle) nebo REGEXP_MATCHES(v PostgreSQL).

SELECT * FROM Employees WHERE LastName LIKE '%son%';

 

Jak používat funkce JSON v SQL pro práci s daty JSON

Odpověď: Funkce JSON v SQL umožňují dotazování, vkládání, aktualizaci a mazání dat ve formátu JSON v databázi.

K manipulaci s vlastnostmi JSON můžeme například použít funkce jako JSON_VALUE, JSON_QUERY, JSON_MODIFY(v SQL Server) nebo operátory jako ->, ->>, #>, #>> atd.(v PostgreSQL).

SELECT JSON_VALUE(CustomerInfo, '$.Name') AS CustomerName  
FROM Customers;  

 

Pokročilé techniky pro optimalizaci dotazů SQL a ladění výkonu databáze

Odpověď: K optimalizaci SQL dotazů a výkonu databáze můžeme použít techniky jako:

  • Použití indexů pro často dotazované sloupce.
  • Optimalizace JOIN a WHERE klauzule pro efektivní získávání dat.
  • V případě potřeby využití funkcí okna a stránkování.
  • Vyhněte se SELECT *, abyste získali pouze nezbytné sloupce.
  • V některých případech použití nápovědy k dotazu.
  • Zajištění normalizace dat a odstranění duplicit.
  • Používání nástrojů pro sledování výkonu pro sledování a dolaďování databáze.

 

Vysvětlete, jak používat SET operace (UNION, INTERSECT, EXCEPT) v SQL

Odpověď: SET Operace (UNION, INTERSECT, EXCEPT) se používají ke kombinování a manipulaci se sadami výsledků různých dotazů.

  • UNION: Kombinuje výsledky dvou nebo více dotazů do jedné datové sady a odstraňuje duplikáty.
  • INTERSECT: Vrátí řádky, které se objevují v obou sadách výsledků dotazu.
  • EXCEPT: Vrátí řádky, které se objevují v první sadě výsledků dotazu, ale ne ve druhé.

 

Jak používat funkce dotazu jako LEAD, LAG, FIRST_VALUE, LAST_VALUE v SQL

Odpověď: Funkce dotazu LEAD, LAG, FIRST_VALUE, LAST_VALUE se používají k načtení hodnot ze souvisejících řádků ve stejném výsledku dotazu.

  • LEAD: Získá hodnotu sloupce z dalšího řádku ve výsledku dotazu.
  • LAG: Získá hodnotu sloupce z předchozího řádku ve výsledku dotazu.
  • FIRST_VALUE: Načte první hodnotu sloupce ve výsledku dotazu.
  • LAST_VALUE: Načte poslední hodnotu sloupce ve výsledku dotazu.