Vilka typer av joins
har du använt i SQL, och förklara hur de fungerar?
Svar:
INNER JOIN
: Returnerar rader med matchande data från båda tabellerna.LEFT JOIN
: Returnerar alla rader från den vänstra tabellen och matchande rader från den högra tabellen.RIGHT JOIN
: Returnerar alla rader från den högra tabellen och matchande rader från den vänstra tabellen.FULL JOIN
: Returnerar alla rader från båda tabellerna, inklusive icke-matchande rader.
Förklara ACID-koncepten i SQL och deras roll i transaktionshantering
Svar: ACID står för Atomicity, Consistency, Isolation, Durability
. Dessa är viktiga egenskaper i transaktionshantering i SQL:
Atomicity
säkerställer att en transaktion antingen behandlas helt eller inte alls.Consistency
säkerställer att data måste följa definierade regler, begränsningar och villkor.Isolation
säkerställer att samtidiga transaktioner inte stör varandra.Durability
säkerställer att när en transaktion är slutförd, sparas ändringarna i databasen säkert och permanent.
Vad är skillnaden mellan ROW_NUMBER(), RANK(), DENSE_RANK()
funktioner i SQL?
Svar: ROW_NUMBER(), RANK(), DENSE_RANK()
används alla för att numrera rader i ett frågeresultat, men de har följande skillnader:
ROW_NUMBER()
: Tilldelar kontinuerliga nummer till rader i frågeresultatet, utan att ta hänsyn till dubbletter.RANK()
: Tilldelar siffror till rader i frågeresultatet och hoppar över nästa nummer vid oavgjort.DENSE_RANK()
: Tilldelar nummer till rader i frågeresultatet och hoppar inte över nästa nummer vid oavgjort.
Hur man använder window functions
i SQL, och ge ett exempel.
Svar: Window functions
tillåt att utföra beräkningar på en uppsättning relaterade rader utan att ändra huvudfrågans resultat. Till exempel kan vi använda fönsterfunktioner för att beräkna löpande summor eller hämta topp N rader inom en resultatuppsättning.
SELECT ProductID, UnitPrice,
SUM(UnitPrice) OVER(ORDER BY ProductID) AS RunningTotal
FROM Products;
Hur man använder reguljära uttryck i SQL för mönstermatchning
Svar: Reguljära uttryck i SQL används för komplexa textmönstersökningar. De används ofta med LIKE
operatören eller funktioner som REGEXP_LIKE
(i Oracle) eller REGEXP_MATCHES
(i PostgreSQL).
SELECT * FROM Employees WHERE LastName LIKE '%son%';
Hur man använder JSON-funktioner i SQL för att arbeta med JSON-data
Svar: JSON-funktioner i SQL gör det möjligt att fråga, infoga, uppdatera och ta bort data i JSON-format i databasen.
Till exempel kan vi använda funktioner som JSON_VALUE, JSON_QUERY, JSON_MODIFY(i SQL Server), eller operatorer som ->, ->>, #>, #>>, etc.(i PostgreSQL) för att manipulera JSON-egenskaper.
SELECT JSON_VALUE(CustomerInfo, '$.Name') AS CustomerName
FROM Customers;
Avancerade tekniker för SQL-frågeoptimering och inställning av databasprestanda
Svar: För att optimera SQL-frågor och databasprestanda kan vi använda tekniker som:
- Använda index för ofta frågade kolumner.
- Optimering
JOIN
ochWHERE
klausuler för effektiv datahämtning. - Använda fönsterfunktioner och paginering vid behov.
- Undviker
SELECT
* för att bara hämta nödvändiga kolumner. - Använda frågetips i vissa fall.
- Säkerställa normalisering av data och ta bort dubbletter.
- Använda prestandaövervakningsverktyg för att spåra och finjustera databasen.
Förklara hur man använder SET
operationer (UNION, INTERSECT, EXCEPT)
i SQL
Svar: SET
operationer (UNION, INTERSECT, EXCEPT)
används för att kombinera och manipulera resultatuppsättningar av olika frågor.
UNION
: Kombinerar resultaten av två eller flera frågor till en enda datamängd och tar bort dubbletter.INTERSECT
: Returnerar rader som visas i båda frågeresultatuppsättningarna.EXCEPT
: Returnerar rader som visas i den första frågeresultatuppsättningen men inte i den andra.
Hur man använder frågefunktioner som LEAD, LAG, FIRST_VALUE, LAST_VALUE
i SQL
Svar: Frågefunktioner som LEAD, LAG, FIRST_VALUE, LAST_VALUE
används för att hämta värden från relaterade rader inom samma frågeresultat.
LEAD
: Hämtar värdet för en kolumn från nästa rad i frågeresultatet.LAG
: Hämtar värdet för en kolumn från föregående rad i frågeresultatet.FIRST_VALUE
: Hämtar det första värdet i en kolumn i frågeresultatet.LAST_VALUE
: Hämtar det sista värdet i en kolumn i frågeresultatet.