Jakich typów joins
używałeś w SQL i wyjaśnij, jak działają?
Odpowiedź:
INNER JOIN
: Zwraca wiersze z pasującymi danymi z obu tabel.LEFT JOIN
: Zwraca wszystkie wiersze z lewej tabeli i pasujące wiersze z prawej tabeli.RIGHT JOIN
: Zwraca wszystkie wiersze z prawej tabeli i pasujące wiersze z lewej tabeli.FULL JOIN
: zwraca wszystkie wiersze z obu tabel, w tym wiersze niepasujące.
Wyjaśnij pojęcia ACID w SQL i ich rolę w zarządzaniu transakcjami
Odpowiedź: ACID oznacza Atomicity, Consistency, Isolation, Durability
. Oto podstawowe właściwości w zarządzaniu transakcjami w SQL:
Atomicity
gwarantuje, że transakcja zostanie w pełni przetworzona lub nie zostanie w ogóle przetworzona.Consistency
zapewnia, że dane muszą być zgodne z określonymi regułami, ograniczeniami i warunkami.Isolation
zapewnia, że równoległe transakcje nie kolidują ze sobą.Durability
zapewnia, że po zakończeniu transakcji zmiany w bazie danych są bezpiecznie i trwale zapisywane.
Jaka jest różnica między ROW_NUMBER(), RANK(), DENSE_RANK()
funkcjami w SQL?
Odpowiedź: ROW_NUMBER(), RANK(), DENSE_RANK()
wszystkie są używane do numerowania wierszy w wyniku zapytania, ale mają następujące różnice:
ROW_NUMBER()
: przypisuje ciągłe liczby do wierszy w wyniku zapytania, bez uwzględniania duplikatów.RANK()
: Przypisuje liczby do wierszy w wyniku zapytania i pomija następną liczbę w przypadku remisów.DENSE_RANK()
: Przypisuje liczby do wierszy w wyniku zapytania i nie pomija następnej liczby w przypadku powiązania.
Jak używać window functions
w SQL i podaj przykład.
Odpowiedź: Window functions
zezwól na wykonywanie obliczeń na zbiorze powiązanych wierszy bez zmiany wyniku głównego zapytania. Na przykład możemy użyć funkcji okna do obliczenia bieżących sum lub pobrania N pierwszych wierszy w zestawie wyników.
SELECT ProductID, UnitPrice,
SUM(UnitPrice) OVER(ORDER BY ProductID) AS RunningTotal
FROM Products;
Jak używać wyrażeń regularnych w języku SQL do dopasowywania wzorców
Odpowiedź: Wyrażenia regularne w języku SQL są używane do wyszukiwania złożonych wzorców tekstowych. Są często używane z LIKE
operatorem lub funkcjami, takimi jak REGEXP_LIKE
(w Oracle) lub REGEXP_MATCHES
(w PostgreSQL).
SELECT * FROM Employees WHERE LastName LIKE '%son%';
Jak używać funkcji JSON w SQL do pracy z danymi JSON
Odpowiedź: Funkcje JSON w języku SQL umożliwiają odpytywanie, wstawianie, aktualizowanie i usuwanie danych w formacie JSON w bazie danych.
Na przykład możemy użyć funkcji takich jak JSON_VALUE, JSON_QUERY, JSON_MODIFY(w SQL Server) lub operatorów takich jak ->, ->>, #>, #>> itd.(w PostgreSQL) do manipulowania właściwościami JSON.
SELECT JSON_VALUE(CustomerInfo, '$.Name') AS CustomerName
FROM Customers;
Zaawansowane techniki optymalizacji zapytań SQL i dostrajania wydajności baz danych
Odpowiedź: Aby zoptymalizować zapytania SQL i wydajność bazy danych, możemy zastosować takie techniki jak:
- Używanie indeksów dla często używanych kolumn.
- Optymalizacja
JOIN
iWHERE
klauzule dla sprawnego wyszukiwania danych. - Wykorzystywanie funkcji okien i paginacji w razie potrzeby.
- Unikanie
SELECT
* w celu pobrania tylko niezbędnych kolumn. - Korzystanie ze wskazówek dotyczących zapytań w niektórych przypadkach.
- Zapewnienie normalizacji danych i usuwanie duplikatów.
- Stosowanie narzędzi do monitorowania wydajności w celu śledzenia i dostrajania bazy danych.
Wyjaśnij, jak używać SET
operacji (UNION, INTERSECT, EXCEPT)
w SQl
Odpowiedź: SET
operacje (UNION, INTERSECT, EXCEPT)
służą do łączenia i manipulowania zbiorami wyników różnych zapytań.
UNION
: łączy wyniki dwóch lub więcej zapytań w jeden zestaw danych i usuwa duplikaty.INTERSECT
: zwraca wiersze, które pojawiają się w obu zestawach wyników zapytania.EXCEPT
: zwraca wiersze, które pojawiają się w pierwszym zbiorze wyników zapytania, ale nie w drugim.
Jak korzystać z funkcji zapytań, takich jak LEAD, LAG, FIRST_VALUE, LAST_VALUE
w SQL
Odpowiedź: Funkcje zapytań, takie jak, LEAD, LAG, FIRST_VALUE, LAST_VALUE
są używane do pobierania wartości z powiązanych wierszy w ramach tego samego wyniku zapytania.
LEAD
: Pobiera wartość kolumny z następnego wiersza w wyniku zapytania.LAG
: Pobiera wartość kolumny z poprzedniego wiersza w wyniku zapytania.FIRST_VALUE
: pobiera pierwszą wartość kolumny w wyniku zapytania.LAST_VALUE
: Pobiera ostatnią wartość kolumny w wyniku zapytania.