Hvilke typer joins
har du brugt i SQL, og forklar hvordan de virker?
Svar:
INNER JOIN
: Returnerer rækker med matchende data fra begge tabeller.LEFT JOIN
: Returnerer alle rækker fra venstre tabel og matchende rækker fra højre tabel.RIGHT JOIN
: Returnerer alle rækker fra den højre tabel og matchende rækker fra den venstre tabel.FULL JOIN
: Returnerer alle rækker fra begge tabeller, inklusive ikke-matchende rækker.
Forklar ACID-begreberne i SQL og deres rolle i transaktionsstyring
Svar: ACID står for Atomicity, Consistency, Isolation, Durability
. Disse er væsentlige egenskaber i transaktionsstyring i SQL:
Atomicity
sikrer, at en transaktion enten behandles fuldt ud eller slet ikke behandles.Consistency
sikrer, at data skal overholde definerede regler, begrænsninger og betingelser.Isolation
sikrer, at samtidige transaktioner ikke forstyrrer hinanden.Durability
sikrer, at når en transaktion er gennemført, gemmes ændringerne i databasen sikkert og permanent.
Hvad er forskellen mellem ROW_NUMBER(), RANK(), DENSE_RANK()
funktioner i SQL?
Svar: ROW_NUMBER(), RANK(), DENSE_RANK()
bruges alle til at nummerere rækker i et forespørgselsresultat, men de har følgende forskelle:
ROW_NUMBER()
: Tildeler kontinuerlige tal til rækker i forespørgselsresultatet uden at tage dubletter i betragtning.RANK()
: Tildeler tal til rækker i forespørgselsresultatet og springer det næste tal over i tilfælde af uafgjort.DENSE_RANK()
: Tildeler tal til rækker i forespørgselsresultatet og springer ikke det næste tal over i tilfælde af uafgjort.
Sådan bruges window functions
i SQL, og giv et eksempel.
Svar: Window functions
tillad at udføre beregninger på et sæt af relaterede rækker uden at ændre hovedforespørgslens resultat. For eksempel kan vi bruge vinduesfunktioner til at beregne løbende totaler eller hente top N rækker i et resultatsæt.
SELECT ProductID, UnitPrice,
SUM(UnitPrice) OVER(ORDER BY ProductID) AS RunningTotal
FROM Products;
Sådan bruger du regulære udtryk i SQL til mønstermatchning
Svar: Regulære udtryk i SQL bruges til komplekse tekstmønstersøgninger. De bruges ofte med LIKE
operatoren eller funktioner som REGEXP_LIKE
(i Oracle) eller REGEXP_MATCHES
(i PostgreSQL).
SELECT * FROM Employees WHERE LastName LIKE '%son%';
Sådan bruges JSON-funktioner i SQL til at arbejde med JSON-data
Svar: JSON-funktioner i SQL tillader forespørgsel, indsættelse, opdatering og sletning af data i JSON-format i databasen.
For eksempel kan vi bruge funktioner som JSON_VALUE, JSON_QUERY, JSON_MODIFY(i SQL Server), eller operatorer som ->, ->>, #>, #>> osv.(i PostgreSQL) til at manipulere JSON-egenskaber.
SELECT JSON_VALUE(CustomerInfo, '$.Name') AS CustomerName
FROM Customers;
Avancerede teknikker til SQL-forespørgselsoptimering og justering af databaseydeevne
Svar: For at optimere SQL-forespørgsler og databaseydeevne kan vi bruge teknikker som:
- Brug af indekser til hyppigt forespurgte kolonner.
- Optimering
JOIN
ogWHERE
klausuler for effektiv datahentning. - Brug af vinduesfunktioner og paginering, når det er nødvendigt.
- Undgå
SELECT
* for kun at hente nødvendige kolonner. - Brug af forespørgselstip i nogle tilfælde.
- Sikring af datanormalisering og fjernelse af dubletter.
- Anvendelse af præstationsovervågningsværktøjer til at spore og finjustere databasen.
Forklar hvordan man bruger SET
operationer (UNION, INTERSECT, EXCEPT)
i SQL
Svar: SET
operationer (UNION, INTERSECT, EXCEPT)
bruges til at kombinere og manipulere resultatsæt af forskellige forespørgsler.
UNION
: Kombinerer resultaterne af to eller flere forespørgsler til et enkelt datasæt og fjerner dubletter.INTERSECT
: Returnerer rækker, der vises i begge forespørgselsresultatsæt.EXCEPT
: Returnerer rækker, der vises i det første forespørgselsresultatsæt, men ikke i det andet.
Sådan bruger du forespørgselsfunktioner som LEAD, LAG, FIRST_VALUE, LAST_VALUE
i SQL
Svar: Forespørgselsfunktioner som f.eks. LEAD, LAG, FIRST_VALUE, LAST_VALUE
bruges til at hente værdier fra relaterede rækker inden for det samme forespørgselsresultat.
LEAD
: Henter værdien af en kolonne fra den næste række i forespørgselsresultatet.LAG
: Henter værdien af en kolonne fra den forrige række i forespørgselsresultatet.FIRST_VALUE
: Henter den første værdi af en kolonne i forespørgselsresultatet.LAST_VALUE
: Henter den sidste værdi af en kolonne i forespørgselsresultatet.