|
Zobacz ciekawe artykuły w języku angielskim: sql count
sql distinct
sql delete
sql group by
sql outer join
sql like
sql database backup
Złączenia tabel w SQL Server
Bardzo często zdarza się, że projektowane bazy danych składają się z wielu powiązanych ze sobą tabel. W takich przypadkach
wysoce proawdopodobne jest, że w aplikacji współpracującej z taką bazą będzie trzeba wykonać zapytanie SQL pobierające
dane z wielu tabel jednocześnie. Aby wykonać to zadanie należy w wykonywanym zapytaniu użyć złączenia.
Rodzaje złączeń
Jeśli chcemy złączyć dwie tabele Tabela1 i Tabela2 w taki sposób aby
w wyniku wykonania zapytania pokazywały się tylko te wiersze, które
mają identyczne wartości w kolumnie, według której robimy złączenie
to wtedy stosujemy złączenia wewnętrzne. Na przykład dla poniższych
tabel:
zapytanie :
SELECT t1.id AS id1,t2.id AS id2 FROM Tabela1 t1 INNER JOIN Tabela t2 ON t1.id=t2.id;
zwróci następujący wynik:
Jeśli chcemy aby w wynikowym zbiorze rekordów pojawiły się wszystkie rekordy z pierwszej tabeli i odpowiadające im
rekordy z drugiej tabeli należy użyć innego typu złączenia. Dla tabel z poprzedniego przykładu zapytanie będzie miało postać
SELECT t1.id AS id1,t2.id AS id2 FROM Tabela1 t1 LEFT OUTER JOIN Tabela2 t2 ON t1.id=t2.id;
Zapytanie to zwróci następujący wynik:
Jeśli chcemy aby w wynikowym zbiorze rekordów pojawiły się wszystkie rekordy z drugiej tabeli i odpowiadające im
rekordy z pierwszej tabeli należy wykonać analogiczne zapytanie jak w poprzednim przypadku:
SELECT t1.id AS id1,t2.id AS id2 FROM Tabela1 t1 RIGHT OUTER JOIN Tabela2 t2 ON t1.id=t2.id;
Zapytanie to zwróci następujący wynik:
Aby w wyniiku złączenia uzyskać wszystkie rekordy z obydwu tabel należy użyć innego rodzaju złączenia.
SELECT t1.id AS id1,t2.id AS id2 FROM Tabela1 t1 FULL OUTER JOIN Tabela2 t2 ON t1.id=t2.id;
Zapytanie to dla naszych przykładowych tabel zwróci następujący wynik:
Poprawienie wydajności zapytań zawierających złączenia
Aby poprawić wydajność zapytań zawierających złączenia można założyć indeksy na kolumnach, które uczestniczą w złączeniu. W naszym
przypadku są to kolumny id w pierwszej i drugiej tabeli. Można także spróbować umieścić tabele Tabela1 i Tabela2
w różnych plikach na różnych dyskach fizycznych (oczywiście jeśli w systemie, w którym działa SQL Server są
przynajmniej dwa dyski fizyczne).
|
|
|