Bazy danych – ściągawka

Szybka, w pełni teoretyczna „ściągawka” z baz danych. Nie wszystkie z prezentowanych tutaj zapytań mają taką samą składnię w każdej bazie danych. Zależy to od implementacji.

Sumy zbiorów wyników

Jeśli dwa zapytania zwracają wyniki w tej samej formie (te same kolumny), możliwe są operacje na zbiorach typu suma, różnica zbiorów.

Zakładając, że:

  • zapytanie nr 1 (Q1) zwraca następujący zestaw danych: A, B, C,
  • zapytanie nr 2 (Q2) zwraca następujący zestaw danych: C, D, E,

z wyników zapytania można złożyć:

Union

Q1 union Q2 – suma zbiorów. Elementy powtarzające się zarówno w Q1 jak i w Q2 zostają usunięte. Wynikiem są pogrubione elementy (tu: A, B, C, D, E)

[A B [C] D E]

Union all

Q1 union all Q2 – pełna suma zbiorów. Powtarzające się elementy nie są usuwane, dzięki czemu działa szybciej niż Union.

[A B C] [C D E]

Except

Q1 except Q2 – różnica zbiorów

[A B] C D E

Intersect

Q1 intersect Q2 – przecięcie, część wspólna zbioru

A B [C] D E

 

Złączenia (join)

W tym przypadku pełne zapytanie będzie następujące:

SELECT * FROM Q1 JOIN Q2 ON (Q1.key = Q2.key)

lub:
SELECT * FROM Q1 JOIN Q2 USING (key)

Left join

SELECT * FROM Q1 LEFT JOIN Q2 USING (key)

Inner join

SELECT * FROM Q1 INNER JOIN Q2 USING (key)

Right join

SELECT * FROM Q1 RIGHT JOIN Q2 USING (key)

Full outer join

SELECT * FROM Q1 FULL OUTER JOIN Q2 USING (key)

Przydatny wpis? Postaw mi kawę :)