Cześć,

Bez zbędnych wstępów zapraszam na kontynuację wpisu Pytania rekrutacyjne z SQL. Jeżeli jesteś w tej sekcji pierwszy raz, koniecznie przeczytaj artykuł, który podlinkowałam, jako pierwszy.

W tym artykule znajdziecie pytania, które przeważnie padają na rozmowach kwalifikacyjnych na stanowiska takie jak BI Developer, Analityk danych, SQL developer etc.

Zapraszam.


Pytania rekrutacyjne – SQL

Jaka jest kolejność wykonywania zapytań w języku SQL?

Poniżej rozpisane jest standardowe zapytanie w SQL, numery oznaczają kolejność wykonywania przez silnik

(5) SELECT
(1) FROM (JOIN jeżeli jest)
(2) WHERE
(3) GROUP BY 
(4) HAVING
(6) ORDER BY

Pierwszą czynnością podczas wykonywania zapytania, jest określenie skąd (z jakiego obiektu) wybrać dane i jak je odfiltrować (FROM, a następnie WHERE). W ten sposób SQL wie jaki jest zakres danych, na których mogą być wykonane pozostałe operacje.

Określony zestaw danych może być następnie grupowany poprzez użycie GROUP BY (jeżeli chcesz użyć funkcji agregującej).
Kiedy do zgrupowanych danych użyta jest klauzula HAVING, dane zgrupowane zostaną odfiltrowane wg zawartego klucza w HAVING.

Następnie wszystkie wypisane w SELECT wyrażenia są obliczne.

Jeżeli została określona kolejność wierszy w klauzuli ORDER BY, wiersze zstaną posortowane wg wskazanych reguł.

Wiedza, o tym jak wykonywane są zapytania w języku SQL pozwoli na optymalne pisanie kwerend i szybsze otrzymanie rezultatów zapytania.


Co oznaczają skróty DML, DDL, DCL. Jakie wyrażenie wchodzą w ich skład?

Są to typy zapytań w języku SQL.

DML – Data Manipulation Language, wyrażenia INSERT, UPDATE, DELETE

DDL – Data Definition Language, wyrażenia CREATE, DROP, ALTER

DCL – Data Control Language, wyrażenia GRANT, REVOKE, DENY

TCL – Transaction Control Language, wyrażenia COMMIT, ROLLBACK, SAVEPOINT

Więcej informacji można przeczytać tutaj – https://pl.wikipedia.org/wiki/SQL
https://www.geeksforgeeks.org/sql-ddl-dml-tcl-dcl/


Jaka jest różnica pomiędzy widokiem a widokiem zmaterializowanym?

Podstawową różnicą jest to, że widok nie jest trzymany fizycznie na bazie danych. Widok zmaterializowany jest kopią danej tabeli i fizycznie jest trzymany na bazie.

Jest to kopia tabeli bazowej.

Więcej informacji o widokach zmaterializowanych można przeczytać tutaj – https://docs.microsoft.com/en-us/sql/t-sql/statements/create-materialized-view-as-select-transact-sql?view=azure-sqldw-latest


Jaka jest różnica pomiędzy widokiem a widokiem indeksowanym?

Widok indeksowany przypomina indeks na tabeli pod względem wydajności pobioru danych. Sprawdzi się podczas pobierania danych z widoku posiadającego agregacje lub dużą ilość złączeń.

Indeks tworzony jako pierwszy na widoku indeksowanych musi być to unikalny indeks klastrowy. Następnie można dodać inne rodzaje indeksów na widoku.

Widok indeksowany zawsze tworzony jest z opcją SCHEMABINDING.


Jak działa opcja SCHEMABINDING?

Opcja SCHEMABINDING wiąże dany widok z danym schematem stworzonym na bazie. SQL Server nie pozwala na usunięcie lub modyfikację powiązanego schematu, jeżeli taka operacja miałaby uszkodzić powiązany widok.

SCHEMABINDING można użyć w widoku, jeżeli w wyrażeniu SELECT nie używamy ” * „.

Więcej informacji na ten temat można znaleźć tutaj – https://docs.microsoft.com/en-us/sql/t-sql/statements/create-view-transact-sql?view=sql-server-ver15


Co to jest Data Mart?

Jest to struktura na bazie danych, czasem tabela, która zawiera konkretne informacje potrzebne pod daną potrzebę raportową.  Jest to wycinek informacji z bazy danych.

Nazywany też tematyczną hurtownią danych.

Więcej informacji można znaleźć tutaj – https://en.wikipedia.org/wiki/Data_mart


Jakie znasz inne wyrażenia do operacji na zbiorach w SQL, oprócz UNION i UNION ALL?

Może to być np. EXCEPT czyli odejmowanie zbiorów, INTERSECT czyli część wspólna zbiorów.

Więcej o operacjach na zbiorach tutaj – https://www.sqlpedia.pl/operacje-na-zbiorach/


Jakie znasz rodzaje indeksów? Kiedy zakładamy indeksy na tabeli?

Indeksy to skruktury, które zakładamy na tabeli lub widoku, aby mieć szybszy dostęp do danych w tabeli. Pomagają one w odpytywaniu dużych tabel.
Te struktury zawierają klucze utworzone na podstawie co najmniej jednej kolumny danej tabeli lub widoku.
Podstawowe tyoy indeksów to: indeks klastrowany, ideks nieklastrowany, indeks kolumnowy (columnstore).

Więcej rodzaji indeksów z ich właściwościami znajdziesz tutaj – https://docs.microsoft.com/en-us/sql/relational-databases/indexes/indexes?view=sql-server-ver15


Czym są tabele tymczasowe? Jaka jest różnica pomiędzy tabelą tymczasową a zmienną tabelaryczną?

Tabele tymczasowe są tworzone na bazie i zachowują się jak standardowe tabele. Możemy na nich stosować wyrażenia DELETE, UPDATE, zakładać indeksy. Zmienne tabelaryczne tworzone są w pamięci i zachowują się jak zmienne. Działają w obrębie danego wywołania zapytania.

Więcej informacji znajdziesz tutaj – https://www.sqlshack.com/when-to-use-temporary-tables-vs-table-variables/


Opowiedz jak działa słowo kluczowe MERGE.

Pomaga ono w pisaniu skomplikowanych zapytań, gdzie jednocześnie chcemy zrobić DELETE, UPDATE, INSERT. Standardowe wykorzystanie wygląda następująco:

MERGE [AS TARGET]
USING [AS SOURCE]
ON
[WHEN MATCHED
THEN ]
[WHEN NOT MATCHED [BY TARGET]
THEN ]
[WHEN NOT MATCHED BY SOURCE
THEN ];

Tam, gdzie zostawiłam możemy wyspecyfikować INSERT, UPDATE, DELETE. Z rekordami, które się nie połączyły lub połączyły może wykonać dla nich dowolną operację.

Więcej w dokumentacji tutaj – https://docs.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql?view=sql-server-ver15


Jak działają funkcje okna OVER () ?

Dzięki użyciu funkcji z OVER() możemy wyniki zapytania podzielić na tzw. okna.  Utworzyć szeregi według zadanych parametrów w funkcji. Dodając do funkcji OVER (PARTITION BY ….) możemy podzielić wyniki zapytania na partycje według zadanych parametrów.


Dziękuję serdecznie, możesz masz w zanadrzu pytanie, które padło u Ciebie na rekrutacji i chciałbyś je omówić? Jeżeli tak to zostaw je w komentarzu 😉 Koniecznie 😀

Dagmara


.