Intervjuspørsmål for SQL-utviklere: Vanlige spørsmål og svar på SQL-intervjuer- del 3

Hvilke typer joins har du brukt i SQL, og forklar hvordan de fungerer?

Svar:

  • INNER JOIN: Returnerer rader med samsvarende data fra begge tabellene.
  • LEFT JOIN: Returnerer alle rader fra venstre tabell og samsvarende rader fra høyre tabell.
  • RIGHT JOIN: Returnerer alle rader fra høyre tabell og samsvarende rader fra venstre tabell.
  • FULL JOIN: Returnerer alle rader fra begge tabellene, inkludert ikke-matchende rader.

 

Forklar ACID-konseptene i SQL og deres rolle i transaksjonshåndtering

Svar: ACID står for Atomicity, Consistency, Isolation, Durability. Dette er viktige egenskaper i transaksjonsadministrasjon i SQL:

  • Atomicity sikrer at en transaksjon enten er fullstendig behandlet eller ikke behandlet i det hele tatt.
  • Consistency sikrer at data må overholde definerte regler, begrensninger og betingelser.
  • Isolation sikrer at samtidige transaksjoner ikke forstyrrer hverandre.
  • Durability sikrer at når en transaksjon er fullført, lagres endringene i databasen sikkert og permanent.

 

Hva er forskjellen mellom ROW_NUMBER(), RANK(), DENSE_RANK() funksjoner i SQL?

Svar: ROW_NUMBER(), RANK(), DENSE_RANK() brukes alle til å nummerere rader i et spørringsresultat, men de har følgende forskjeller:

  • ROW_NUMBER(): Tildeler kontinuerlige tall til rader i søkeresultatet, uten å vurdere duplikater.
  • RANK(): Tildeler tall til rader i søkeresultatet og hopper over neste tall i tilfelle uavgjort.
  • DENSE_RANK(): Tildeler tall til rader i søkeresultatet og hopper ikke over neste tall i tilfelle uavgjort.

 

Hvordan bruke window functions i SQL, og gi et eksempel.

Svar: Window functions tillat å utføre beregninger på et sett med relaterte rader uten å endre hovedspørringens resultat. For eksempel kan vi bruke vindusfunksjoner til å beregne løpende totaler eller hente topp N rader i et resultatsett.

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

 

Hvordan bruke regulære uttrykk i SQL for mønstermatching

Svar: Regulære uttrykk i SQL brukes for komplekse tekstmønstersøk. De brukes ofte med LIKE operatøren eller funksjoner som REGEXP_LIKE(i Oracle) eller REGEXP_MATCHES(i PostgreSQL).

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

 

Hvordan bruke JSON-funksjoner i SQL for å jobbe med JSON-data

Svar: JSON-funksjoner i SQL tillater spørring, innsetting, oppdatering og sletting av data i JSON-format i databasen.

For eksempel kan vi bruke funksjoner som JSON_VALUE, JSON_QUERY, JSON_MODIFY(i SQL Server), eller operatorer som ->, ->>, #>, #>>, etc.(i PostgreSQL) for å manipulere JSON-egenskaper.

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

 

Avanserte teknikker for SQL-spørringsoptimalisering og justering av databaseytelse

Svar: For å optimalisere SQL-spørringer og databaseytelse kan vi bruke teknikker som:

  • Bruke indekser for ofte spurte kolonner.
  • Optimalisering JOIN og WHERE klausuler for effektiv datainnhenting.
  • Bruker vindusfunksjoner og paginering når det er nødvendig.
  • Unngå SELECT * for å hente kun nødvendige kolonner.
  • Bruk av spørringstips i noen tilfeller.
  • Sikre datanormalisering og fjerne duplikater.
  • Bruke ytelsesovervåkingsverktøy for å spore og finjustere databasen.

 

Forklar hvordan du bruker SET operasjoner (UNION, INTERSECT, EXCEPT) i SQL

Svar: SET operasjoner (UNION, INTERSECT, EXCEPT) brukes til å kombinere og manipulere resultatsett av forskjellige spørringer.

  • UNION: Kombinerer resultatene av to eller flere spørringer til ett enkelt datasett og fjerner duplikater.
  • INTERSECT: Returnerer rader som vises i begge søkeresultatsettene.
  • EXCEPT: Returnerer rader som vises i det første søkeresultatsettet, men ikke i det andre.

 

Hvordan bruke spørringsfunksjoner som LEAD, LAG, FIRST_VALUE, LAST_VALUE i SQL

Svar: Spørringsfunksjoner som LEAD, LAG, FIRST_VALUE, LAST_VALUE brukes til å hente verdier fra relaterte rader innenfor samme spørringsresultat.

  • LEAD: Henter verdien av en kolonne fra neste rad i søkeresultatet.
  • LAG: Henter verdien av en kolonne fra forrige rad i søkeresultatet.
  • FIRST_VALUE: Henter den første verdien av en kolonne i søkeresultatet.
  • LAST_VALUE: Henter den siste verdien av en kolonne i søkeresultatet.