Skip to main content Link Menu Expand (external link) Document Search Copy Copied
RBD Lab 10

SQL - zapytania

Wszystko to, co nie pasowało do wcześniejszych tematów


Podzapytania

Podzapytanie, czyli subquery to mechanizm zagnieżdżania jednego zapytania wewnątrz innego. Podzapytań można użyć w klauzulach FROM, WHERE i SELECT.

SELECT make, model, year, VIN FROM Cars WHERE make IN (SELECT make FROM Cars WHERE year<1973);

Łączenie danych poziomo

Operację JOIN już wszyscy znają. To, czego dotychczas używaliśmy, to INNER JOIN, operacja zwracająca rekordów, występujących w obu podanych tabelach.

LEFT JOIN Zwróci wszystkie rekordy z lewej tabeli oraz pasujące z prawej tabeli

RIGHT JOIN Zwróci wszystkie rekordy z prawej tabeli oraz pasujące z lewej tabeli

FULL JOIN lub FULL OUTER JOIN Zwróci wszystkie rekordy z lewej i prawej tabeli

ALL JOINS

Źródło: medium.com

Łączenie danych pionowo

Klauzula UNION połączy pionowo wyniki dwóch zapytań - w tabeli wynikowej wyniki jednego zapytania zostaną umieszczone bezpośrednio nad drugim

SELECT * FROM Cars WHERE make='Ford'
UNION
SELECT * FROM Cars WHERE year<1993

Każde zapytanie, które w ten sposób łączymy, musi mie tyle samo kolumn o tych samych typach danych

INTERSECT zwróci częśc wspólną obu zapytań

SELECT * FROM Cars WHERE make='Ford'
INTERSECT
SELECT * FROM Cars WHERE year<1993

Widoki

Widok to ‘wirtualna’ tabela, zawierająca wyniki zdefiniowanego przy tworzeniu widoku zapytania. Dzięki temu mechanizmowi nie musimy za każdym razem wpisywa skomplikowanego zapytania, z którego często korzystamy - wystarczy zdefiniowac widok, a następnie odwoływac się jedynie do niego:

CREATE VIEW loty_b777 AS
SELECT * FROM Routes 
JOIN Flights ON Routes.flight_nr = Flights.Routes_flight_nr 
JOIN Aircrafts A on A.ID = Flights.Aircrafts_ID 
WHERE Aircrafts_ID=7;