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
ogWHERE
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.