Podobnie jak wywołania funkcji w innych funkcjach, zapytania możemy zagnieżdżać w innych zapytaniach. Podzapytanie musi zostać zapisane w nawiasie.

Wielkość: px
Rozpocząć pokaz od strony:

Download "Podobnie jak wywołania funkcji w innych funkcjach, zapytania możemy zagnieżdżać w innych zapytaniach. Podzapytanie musi zostać zapisane w nawiasie."

Transkrypt

1 W tym odcinku poznasz odpowiednik zmiennych i funkcji znanych z proceduralnych języków programowania podzapytania. Dowiesz się, w jaki sposób MySQL wykonuje podzapytania niepowiązane i powiązane, oraz nauczysz się korzystać z podzapytań przy wybieraniu danych. Wprowadzenie Podzapytania lub zapytania zagnieżdżone to instrukcje SELECT umieszczone wewnątrz innych instrukcji SELECT. Podzapytanie może być użyte w dowolnej klauzuli w klauzuli FROM będziemy je wykorzystywać jako źródła danych, w klauzuli SELECT jako odpowiedniki zmiennych lub funkcji, w klauzuli WHERE do wybierania danych itd. Stosując podzapytania, możemy osiągnąć efekt podobny do tego, jaki osiągamy przez wprowadzenie zmiennych w proceduralnych językach programowania. Zamiast wykonania instrukcji i przechowania jej w zmiennej, wykonywane jest drugie wyrażenie wykorzystujące poprzedni wynik, co daje efekt zagnieżdżania pierwszej instrukcji w drugiej. Podobnie jak wywołania funkcji w innych funkcjach, zapytania możemy zagnieżdżać w innych zapytaniach. Podzapytanie musi zostać zapisane w nawiasie. Serwer baz danych wykonuje podzapytania, zaczynając od najbardziej wewnętrznej instrukcji SELECT, po to aby wynik tej instrukcji wykorzystać do wykonania zapytań zewnętrznych. W zależności od typu zwracanych przez wewnętrzne zapytania wartości, podzapytania dzieli się na: 1. podzapytania zwracające pojedynczą wartość skalarną, np. nazwisko sprzedawcy, który sprzedał najwięcej towarów; 2. podzapytania zwracające listę wartości, np. identyfikatory sprzedanych w danym miesiącu towarów; 3. podzapytania zwracające dane tabelaryczne, np. dane sprzedawców uzupełnione o liczbę i wartość zrealizowanych przez nich zamówień. Niezależnie od typu zwracanych wartości, podzapytania mogą być powiązane lub niepowiązane: 1. W podzapytaniach niepowiązanych wewnętrzne zapytanie jest wykonywane tylko raz, a więc zwraca jeden wynik. 2. W podzapytaniach powiązanych wewnętrzne zapytanie jest wykonywane dla każdego wiersza zwróconego przez zewnętrzne zapytanie, a więc zwraca tyle wyników, ile wierszy liczy wynik zewnętrznego zapytania. Podzapytania niepowiązane Podzapytania niepowiązane wykonywane są następująco: 1. Wykonana zostaje wewnętrzna instrukcja SELECT. 2. Jej wyniki są przekazywane do zapytania zewnętrznego. 3. Otrzymane dane pozwalają wykonać zapytanie zewnętrzne. Podzapytania jako źródła danych 1 / 17

2 Wynik podzapytania może być zbiorem danych źródłowych dla innego zapytania. W takim przypadku podzapytanie znajduje się w klauzuli FROM zapytania nadrzędnego. Pozwala to: 1. uprościć zapytanie i poprawić jego czytelność ponieważ zapytanie wewnętrzne wykonywane jest jako pierwsze, zdefiniowane w nim aliasy kolumn mogą być używane w każdej klauzuli zapytania zewnętrznego; 2. dynamicznie filtrować wiersze i wyliczać dane bazowe dla zapytań zewnętrznych (listing 7.1). Listing 7.1. Podzapytanie jako źródło danych, czyli w roli dynamicznego widoku SELECT * FROM ( SELECT title, fname, lname FROM customer) AS t WHERE title ='Mr'; title fname lname Mr Andrew Stones Mr Adrian Matthew Mr Simon Cozens Mr Neil Matthew Mr Richard Stones Mr Mike Howard Mr Dave Jones Mr Richard Neill Mr Bill Neill Mr David Hudson MySQL, wykonując tę instrukcję, najpierw wykonał wewnętrzne zapytanie (listing 7.2) i nazwał wynik >t, a następnie odczytał z tymczasowej tabeli >t te wiersze, dla których spełniony był warunek title ='Mr'. 2 / 17

3 Tabela pochodna to nic innego jak wynik zapytania wewnętrznego zdefiniowanego w klauzuli FROM zewnętrznego zapytania. Tabele pochodne są dostępne tylko w ramach tych podzapytań, w których były zdefiniowane, i po zakończeniu ich wykonywania są automatycznie usuwane. Listing 7.2. Charakterystyczne dla zapytań niepowiązanych jest to, że zapytanie wewnętrzne można wykonać jako osobną instrukcję SELECT title, fname, lname FROM customer; title fname lname Miss Jenny Stones Mr Andrew Stones Miss Alex Matthew Mr Adrian Matthew Mr Simon Cozens Mr Neil Matthew Mr Richard Stones Mrs Anna Stones Mrs Christine Hickman Mr Mike Howard Mr Dave Jones Mr Richard Neill Mrs Laura Hendy Mr Bill Neill Mr David Hudson Wolski Podzapytania jako zmienne W proceduralnych i obiektowych językach programowania zmienne są pojemnikami o określonych nazwach, w których można przechowywać wartości pewnych typów. Nazwę i typ zmiennej najczęściej określa się podczas jej deklarowania, a wartość początkowa nadawana jest zmiennej podczas jej inicjowania. 3 / 17

4 Dwie najważniejsze wykonywane na zmiennych operacje to: 1. przypisanie wartości, pozwalające zmieniać wartość zmiennej w trakcie działania programu; 2. odczytanie wartości, czyli posłużenie się nazwą zmiennej w celu pobrania jej aktualnej wartości. Podzapytania zwracające pojedynczą wartość są odpowiednikami zmiennych typów prostych, a podzapytania zwracające listę wartości zmiennych tabelarycznych. Najwyraźniej widać to podobieństwo na przykładzie podzapytań niepowiązanych. Wynik podzapytania może zostać potraktowany jak zmienna z ustawioną w wyniku wykonania podzapytania wartością. Również w tym przypadku wewnętrzne zapytanie-wyrażenie jest wykonywane tylko raz podczas wykonywania całej instrukcji SELECT (listing 7.3). Listing 7.3. Podzapytanie jako wyrażenie. W tym przypadku podzapytanie posłużyło nam do wyliczenia średniej ceny towarów SELECT description, sell_price, (SELECT AVG(sell_price) ) ; description sell_price (SELECT AVG(sell_price) ) Wood Puzzle Rubik Cube Linux CD Tissues Picture Frame Fan Small Fan Large Toothbrush Roman Coin Carrier Bag Speakers SQL Server 2005 NULL / 17

5 Skoro wartością wyrażenia (SELECT AVG(sell_price) ) jest po prostu średnia cena produktów, nic nie stoi na przeszkodzie, żeby użyć tego wyrażenia w operacjach matematycznych (listing 7.4). Listing 7.4. Zapytanie zwracające różnice pomiędzy ceną danego produktu a średnią ceną wszystkich towarów SELECT description, sell_price, sell_price (SELECT AVG(sell_price) ) ; description sell_price sell_price - (SELECT AVG(sell_price) ) Wood Puzzle Rubik Cube Linux CD Tissues Picture Frame Fan Small Fan Large Toothbrush Roman Coin Carrier Bag Speakers SQL Server 2005 NULL NULL Kolejny przykład pokazuje sposób użycia podzapytania niepowiązanego w klauzuli WHERE (listing 7.5). Listing 7.5. Zapytanie zwracające nazwę najdroższego towaru. Ten sam wynik można uzyskać za pomocą klauzuli HAVING SELECT description, sell_price 5 / 17

6 WHERE sell_price = (SELECT MAX(sell_price) ); description sell_price Speakers Raz jeszcze przeanalizujmy wykonanie instrukcji przez MySQL: 1. Najpierw zostaje wykonana wewnętrzna instrukcja SELECT max(sell_price). 2. W jej wyniku otrzymujemy najwyższą cenę sprzedaży (25,32). Następnie wykonywana jest instrukcja SELECT description, sell_price nazwę najdroższego towaru. Podzapytania powiązane WHERE sell_price=25,32;, po której zrealizowaniu otrzymamy Wykonanie poprzednio opisanych podzapytań sprowadza się do wykonania wewnętrznej instrukcji SELECT i zwrócenia obliczonego wyniku do zapytania zewnętrznego. Podzapytania drugiego typu, podzapytania powiązane, wykonywane są według innego schematu. W tym wypadku podzapytanie wykonywane jest dla każdego wiersza wyniku zapytania zewnętrznego i może być z nim porównywane. Podzapytanie powiązane jest przykładem dynamicznego złączenia wyniku zapytania z każdym kolejnym wierszem wyniku zapytania zewnętrznego. Podzapytanie powiązane jako przykład dynamicznego złączenia można łatwo rozpoznać po tym, że kolumna (kolumny) wyniku podzapytania jest porównywana z kolumną (kolumnami) wyniku zapytania zewnętrznego. Niezależne wykonanie wewnętrznego zapytania jest w tym przypadku niemożliwe. Podzapytania jako złączenia Z opisu wykonywania przez serwer baz danych podzapytań powiązanych wynika, że mogą być one używane jako funkcjonalne odpowiedniki złączenia tabel. Takie zastosowanie podzapytania pokazuje przykład z listingu 7.6. Listing 7.6. Zapytanie zwracające dane o towarach, których mamy mało w magazynie. Warunek sprawdzany jest przez podzapytanie SELECT * WHERE item_id IN (SELECT item_id FROM stock WHERE quantity <3); item_id description cost_price sell_price / 17

7 2 Rubik Cube Carrier Bag W tym przypadku podzapytanie zostało użyte do wybrania identyfikatorów tych produktów, których w magazynie jest mniej niż trzy, a zapytanie zewnętrzne odczytało dane o produktach o znalezionych identyfikatorach. Równoważne zapytanie wykorzystujące złączenie pokazuje listing 7.7. Listing 7.7. Złączenie zwracające te same wyniki SELECT * JOIN stock USING (item_id) WHERE quantity <3; item_id description cost_price sell_price quantity Rubik Cube Carrier Bag Podsumujmy: podzapytania powiązane wykonywane są podobnie jak złączenia w obu przypadkach serwer bazodanowy porównuje każdy wiersz jednej tabeli z każdym wierszem drugiej tabeli. Jednak do porównania używane są inne operatory, przede wszystkim w podzapytaniach można zastosować operator IN. Obie techniki mają też unikatowe zalety: 1. W podzapytaniach można używać funkcji grupujących i porównywać ich wyniki z wartościami pojedynczych wierszy. 2. Wyniki złączeń mogą zawierać dane ze wszystkich połączonych tabel. Podzapytania z operatorem EXISTS Za pomocą operatorów EXISTS i NOT EXISTS możemy ograniczyć wynik zapytania zewnętrznego do wierszy odpowiednio zwróconych (lub nie) przez podzapytanie powiązane. Operator EXIST zwraca wartość logiczną 1 (prawda), jeżeli określony wiersz istnieje w wyniku podzapytania; operator NOT EXISTS jeżeli wynik podzapytania nie zawiera określonego wiersza. Podzapytania z operatorem EXISTS lub NOT EXISTS nie zwracają żadnych danych, a jedynie wartości 1 lub 0. Operator EXISTS jest jednym z dwóch używanych w języku SQL operatorów, które zwracają prawdę lub fałsz, nigdy wartość nieznaną (drugim jest IS NULL, służący do sprawdzania, czy dana wartość jest nieznana; jeżeli tak, zwraca prawdę, w przeciwnym razie zwraca fałsz). Wynika to ze sposobu jego działania wewnętrzne zapytanie może albo zwrócić przynajmniej jedną wartość (wtedy EXIST będzie prawdziwy), albo nie zwrócić 7 / 17

8 żadnych danych (wtedy EXISTS będzie fałszywy). Pokazane na listingu 7.8 podzapytanie powiązane wyświetla wszystkie informacje o klientach mających to samo imię i nazwisko, ale różne ID, a więc dane, które pomyłkowo mogły zostać kilkakrotnie wprowadzone do bazy. Listing 7.8. Przykład zastosowania podzapytań do wyszukiwania duplikatów danych SELECT customer_id, fname, lname FROM customer AS T1 WHERE EXISTS (SELECT customer_id FROM customer AS T2 WHERE T1.fname=T2.fname AND T1.customer_id<>T2.customer_id); customer_id fname lname Richard Stones 12 Richard Neill Wykonując tę instrukcję, MySQL odczytuje jeden wiersz z tabeli customer i sprawdza, czy w całej tabeli nie ma zapisanych danych o kliencie, który miałby to samo imię, ale inny identyfikator. Jeżeli osoba o tym samym imieniu, ale różnym identyfikatorze zostanie znaleziona, operator EXISTS zwraca prawdę i dane klienta dołączane są do wyniku. Następnie odczytywany jest drugi wiersz z tabeli >customer i cały proces powtarza się aż do sprawdzenia wszystkich wierszy. W tym przypadku nie wystarczyło pogrupować dane według nazwisk i wyeliminować z wyniku grupy liczące dokładnie jeden wiersz (a więc te, w których nazwisko było unikatowe) w ten sposób nie jesteśmy w stanie sprawdzić, czy osoby o tym samym nazwisku mają różne identyfikatory (listing 7.9). Listing 7.9. Proste wyszukanie powtórzonych wartości we wskazanej kolumnie SELECT COUNT(customer_id), lname FROM customer GROUP BY lname HAVING COUNT(customer_id)>1; COUNT(customer_id) lname Matthew 8 / 17

9 2 Neill 4 Stones Podzapytania zwracające jeden wiersz Podzapytania tego typu można traktować jak zwykłe wyrażenia. W szczególności podzapytania tego typu mogą być używane ze standardowymi operatorami porównań. Dlatego, jeśli chcemy znaleźć, powiedzmy, te towary, które zostały kupione za cenę niższą od średniej ceny zakupu towarów, należy wykonać polecenie (listing 7.10): Listing Kolejny przykład zastosowania podzapytania jako wyrażenia. MySQL najpierw obliczy średnią cenę zakupu towarów, a potem wykorzysta ją do sprawdzenia warunku zewnętrznego zapytania SELECT description WHERE cost_price < (SELECT AVG(cost_price) ); description Linux CD Tissues Toothbrush Roman Coin Carrier Bag Podzapytania zwracające wiele wierszy Przyjrzyjmy się poniższemu podzapytaniu (listing 7.11). Listing Podzapytanie zwracające dane o zamówieniach złożonych przez klienta o podanym nazwisku SELECT * FROM orderinfo WHERE customer_id = (SELECT customer_id FROM customer 9 / 17

10 WHERE lname = 'Hudson'); orderinfo_id customer_id date_placed date_shipped shipping Co by było, gdyby zostało ono użyte do odczytania zamówień złożonych przez klienta o nazwisku Stones? Ponieważ wewnętrzne zapytanie zwróciłoby listę wartości (mamy kilku klientów o takim nazwisku), a nie pojedynczy wiersz, MySQL nie mógłby poprawnie obliczyć wyniku zapytania zewnętrznego (niemożliwe jest sprawdzenie, czy identyfikator klienta jest równy zbiorowi wartości) i zamiast listy zamówień otrzymalibyśmy komunikat o błędzie. Przekształceniem tej instrukcji tak, aby podzapytanie mogło zwrócić dowolną liczbę wartości (włączając w to 0), a przy tym działało zgodnie z naszymi oczekiwaniami, zajmiemy się w kolejnym punkcie. Podzapytania zwracające listę wartości mogą być wykorzystane w wyrażeniach typu IN, NOT IN, EXISTS oraz łącznie ze słowami kluczowymi ANY lub ALL. Podzapytania z wyrażeniem IN Wyrażenie IN jest wykorzystywane do sprawdzenia, czy wartość należy do pewnego zbioru. Podzapytanie może być zastosowane do wybrania tego zbioru wartości. Przekształćmy naszą instrukcję tak, aby w podzapytaniu użyć operatora IN (listing 7.12). Listing Lepszy, bo bardziej uniwersalny sposób sformułowania podzapytania SELECT * FROM orderinfo WHERE customer_id IN (SELECT customer_id FROM customer WHERE lname = 'Stones'); orderinfo_id customer_id date_placed date_shipped shipping Podzapytania z wyrażeniem NOT IN Wyniki podzapytań mogą być również porównywane za pomocą operatora NOT IN. Wartość logiczna takiego wyrażenia jest prawdziwa, gdy wartość testowana nie należy do listy wartości zwróconych przez podzapytanie 10 / 17

11 (listing 7.13). Nie zaleca się stosować wyrażeń NOT IN w podzapytaniach z powodu ich niskiej wydajności. W większości wypadków można zamiast tego użyć zapytania wykorzystującego złączenie zewnętrzne. Listing Podzapytanie zwracające dane klientów, którzy nie złożyli żadnego zamówienia SELECT fname, lname FROM customer WHERE customer_id NOT IN (SELECT customer_id FROM orderinfo); fname lname Jenny Stones Andrew Stones Adrian Matthew Simon Cozens Neil Matthew Richard Stones Christine Hickman Mike Howard Dave Jones Richard Neill Bill Neill Wolski Podzapytania z wyrażeniem EXIST W przypadku podzapytań czasami chcemy jedynie sprawdzić, czy wiersz spełniający podane warunki istnieje w bazie danych. Prostą metodą sprawdzenia, czy dany wiersz występuje w podanej tabeli, jest użycie znanego nam już wyrażenia EXIST (listing 7.14). Ponieważ operator EXIST zwraca wartość logiczną True, gdy wewnętrzne podzapytanie zwróci jakikolwiek wynik, a False, gdy zwróci pusty zbiór, nie ma znaczenia, co znajdzie się w klauzuli SELECT wewnętrznego podzapytania. Listing Zapytania zwracają informacje o towarach, które mają przypisane kody 11 / 17

12 SELECT * WHERE EXISTS (SELECT * FROM barcode WHERE item.item_id = barcode.item_id); item_id description cost_price sell_price Wood Puzzle Rubik Cube Linux CD Tissues Picture Frame Fan Small Fan Large Toothbrush Roman Coin Speakers Podzapytania z wyrażeniem NOT EXIST Jeżeli interesuje nas brak jakichś danych, a nie ich istnienie, możemy sprawdzić to za pomocą wyrażenia NOT EXIST. Aby za pomocą tego operatora znaleźć towary, które nie mają przypisanego kodu, napiszemy (listing 7.15): Listing Lista towarów bez kodów SELECT * WHERE NOT EXISTS (SELECT * FROM barcode WHERE item.item_id = barcode.item_id); 12 / 17

13 item_id description cost_price sell_price Carrier Bag SQL Server 2005 NULL NULL Podzapytania z wyrażeniem ANY W przypadku użycia operatora ANY wartość bieżącego wiersza zwróconego przez zapytanie zewnętrzne jest porównywana z każdą wartością zwróconą przez zapytanie wewnętrzne. Wystarczy, że jedno z tych porównań będzie prawdziwe (czyli wiersz z wyniku zapytania zewnętrznego przynajmniej raz spełni warunek logiczny), i całe porównanie będzie traktowane jako spełnione. Innymi słowy, wiersz zostanie wybrany, jeżeli wyrażenie jest zgodne z co najmniej jedną wartością zwróconą przez zapytanie wewnętrzne. Jeżeli jest to warunek równościowy, operator ANY z reguły jest zastępowany operatorem (listing 7.16). Listing Podzapytanie zwracające identyfikatory towarów, które zostały zamówione w ilości równej zapasowi tego towaru w magazynie SELECT item_id FROM stock WHERE quantity IN (SELECT quantity FROM orderline); item_id Ten sam wynik możemy uzyskać, sprawdzając, czy zapas któregoś towaru jest równy ilości sprzedanego towaru w ramach dowolnego zamówienia (listing 7.17). Listing Gdybyśmy skasowali operator ANY, to próba wykonania podzapytania skończyłaby się błędem spowodowanym tym, że wewnętrzne zapytanie zwraca więcej niż jeden wiersz, a my próbujemy porównać jego wynik za pomocą operatora = SELECT item_id FROM stock 13 / 17

14 WHERE quantity = ANY (SELECT quantity FROM orderline); item_id Aby z pomocą operatora ANY wybrać towary, których cena zakupu jest większa niż cena zakupu jakiegokolwiek towaru, należy wykonać instrukcję z listingu Listing Lista wszystkich towarów z wyjątkiem najtaniej kupionego. Należy zwrócić uwagę, że na liście nie znalazł się również towar o nieznanej cienie zakupu SELECT * WHERE cost_price > ANY (SELECT cost_price ); item_id description cost_price sell_price Wood Puzzle Rubik Cube Linux CD Tissues Picture Frame Fan Small Fan Large Toothbrush / 17

15 9 Roman Coin Speakers Podzapytania z wyrażeniem ALL Operator ALL jest prawdziwy, jeżeli wszystkie dane zwrócone przez wewnętrzne zapytanie spełniają poprzedzający go warunek logiczny. Pozwala on np. odczytać nazwy towarów droższych niż jakikolwiek towar, którego mamy w magazynie więcej niż 5 sztuk (listing 7.19). Listing Wewnętrzne zapytanie zwróciło ceny wszystkich towarów, których w magazynie jest więcej niż 5 sztuk; najdroższy z takich towarów kosztował 21,95, a więc operator ALL zwrócił dane tylko tych towarów, których cena przekracza 21,95 SELECT description, sell_price WHERE sell_price > ALL (SELECT sell_price JOIN stock USING (item_id) WHERE quantity >5 ) ORDER BY sell_price; description sell_price Speakers SQL. Praktyczny kurs Operator ALL nie jest w praktyce używany do porównań równościowych. Warunek = ALL oznacza równy ze wszystkimi danymi zwróconymi przez wewnętrzne zapytanie, czyli w rzeczywistości identyczny z jego wynikiem. Wykorzystuje się go natomiast do wyszukiwania danych różnych od wszystkich danych zwróconych przez wewnętrzne zapytanie. W przypadku użycia operatora ALL warunek musi być spełniony przez wszystkie wartości wybrane w podzapytaniu. Innymi słowy, jeśli wykonujemy porównanie oparte na równości, to wartość z lewej strony równania musi być równa każdej wartości wyniku podzapytania, żeby wynik całego porównania też był prawdziwy (listing 7.20). Listing Dane najdrożej kupionego towaru 15 / 17

16 SELECT * WHERE cost_price >= ALL (SELECT cost_price ); item_id description cost_price sell_price Speakers Zagnieżdżanie podzapytań Możliwe jest wielokrotne zagnieżdżanie podzapytań podzapytanie może być zagnieżdżone zarówno w standardowym zapytaniu, jak i w innym podzapytaniu. Jedyne ograniczenie liczby poziomów zagnieżdżeń wynika z wydajności zapytania. W praktyce zamiast zagnieżdżać podzapytania, znacznie lepiej jest rozbić je na osobne instrukcje czas ich wykonania przez MySQL będzie wielokrotnie krótszy. Przypuśćmy, że chcemy za pomocą podzapytania odczytać nazwiska i imiona osób, które kiedykolwiek kupiły dany produkt. 1. Najpierw musimy odczytać identyfikator produktu o podanej nazwie. 2. Następnie numery zamówień, w ramach których produkt o tym identyfikatorze został sprzedany. 3. Na podstawie identyfikatorów zamówień odczytamy, łącząc odpowiednie tabele, imiona i nazwiska osób, które je złożyły (listing 7.21). Listing Zagnieżdżone zapytanie zwracające dane osób, które kiedykolwiek kupiły wybrany produkt SELECT fname, lname FROM customer JOIN orderinfo USING (customer_id) WHERE orderinfo_id IN (SELECT orderinfo_id FROM orderline WHERE item_id IN (SELECT item_id WHERE description = 'Tissues')); 16 / 17

17 fname lname Alex Matthew Anna Stones / 17

E.14 Bazy Danych cz. 14 SQL Podzapytania

E.14 Bazy Danych cz. 14 SQL Podzapytania Wprowadzenie Podzapytania niepowiązane Podzapytania jako źródła danych Podzapytania jako zmienne Podzapytania powiązane Podzapytania jako złączenia Podzapytania z operatorem EXISTS Podzapytania zwracające

Bardziej szczegółowo

Pobieranie danych z wielu tabel i łączenie wyników zapytań

Pobieranie danych z wielu tabel i łączenie wyników zapytań W tym odcinku nauczysz się odczytywać dane zapisane w różnych tabelach, poznasz różnice pomiędzy złączeniem wewnętrznym a złączeniami zewnętrznymi i dowiesz się, jak przeprowadzać na tabelach operacje

Bardziej szczegółowo

Wprowadzenie. Tworzenie widoków

Wprowadzenie. Tworzenie widoków Widoki Wprowadzenie...2 Tworzenie widoków...2 Złączenie zewnętrzne w definicji widoków...4 Porządkowanie danych przez widoki...5 Modyfikowanie danych przez widoki...6 Ograniczenie zakresu modyfikowania

Bardziej szczegółowo

E.14 Bazy Danych cz. 13 SQL Grupowanie danych i funkcje grupujące

E.14 Bazy Danych cz. 13 SQL Grupowanie danych i funkcje grupujące Funkcje grupujące Funkcja COUNT() Funkcja SUM() Funkcja AVG() Funkcje MIN() i MAX() Funkcja GROUP_CONCAT() Grupowanie danych Operator ROLLUP Klauzula HAVING Kolejność wykonywania klauzuli zapytań Na podstawie:

Bardziej szczegółowo

Specyfika języka SQL powoduje, że łatwiej jest najpierw wytłumaczyć, jak korzystać z funkcji grupujących, a dopiero później jak grupować dane.

Specyfika języka SQL powoduje, że łatwiej jest najpierw wytłumaczyć, jak korzystać z funkcji grupujących, a dopiero później jak grupować dane. W tym odcinku poznasz funkcje grupujące i dwie nowe klauzule instrukcji SELECT GROUP BY i HAVING. Nauczysz się też grupować dane, czyli łączyć wiele wierszy w jeden. Grupowanie danych polega na łączeniu

Bardziej szczegółowo

E.14 Bazy Danych cz. 17 SQL Widoki

E.14 Bazy Danych cz. 17 SQL Widoki Wprowadzenie Tworzenie widoków Złączenie zewnętrzne w definicji widoków Uporządkowywanie danych poprzez widoki Modyfikowanie danych poprzez widoki Ograniczenie zakresu modyfikowania danych poprzez widoki

Bardziej szczegółowo

E.14 Bazy Danych cz. 10 SQL Pobieranie danych z pojedynczych tabel

E.14 Bazy Danych cz. 10 SQL Pobieranie danych z pojedynczych tabel Tabele jako zbiory danych Standardy SQL i historia ich powstania Składnia języka SQL Pobieranie danych Odczytujemy wszystkie dane z tabeli Wybieramy kolumny z tabeli Wyrażenia Aliasy Literały Łączenie

Bardziej szczegółowo

Pobieranie danych z pojedynczych tabel. Wprowadzenie

Pobieranie danych z pojedynczych tabel. Wprowadzenie 1. Utwórz bazę o nazwie test 2. Zaimportuj strukturę i dane z pliku baza_test.txt 3. Powyższy zbiór poleceo SQL utworzony w bazie tablice i wpiszę ich zawartości wg poniżeszego schematu: Pobieranie danych

Bardziej szczegółowo

3. Podzapytania, łączenie tabel i zapytań

3. Podzapytania, łączenie tabel i zapytań 3. Podzapytania, łączenie tabel i zapytań I. PODZAPYTANIE (SUBSELECT) oddzielna, ujęta w nawiasy instrukcja SELECT, zagnieżdżona w innej instrukcji SQL, zazwyczaj w instrukcji SELECT w instrukcji SELECT,

Bardziej szczegółowo

Podzapytania. SELECT atrybut_1, atrybut_2,... FROM relacja WHERE atrybut_n operator (SELECT atrybut_1, FROM relacja WHERE warunek

Podzapytania. SELECT atrybut_1, atrybut_2,... FROM relacja WHERE atrybut_n operator (SELECT atrybut_1, FROM relacja WHERE warunek Podzapytania Podzapytanie jest poleceniem SELECT zagnieżdżonym w innym poleceniu SELECT. Podzapytanie może wystąpić wszędzie tam, gdzie system spodziewa się zbioru wartości, czyli w klauzulach SELECT,

Bardziej szczegółowo

E.14 Bazy Danych cz. 12 SQL Wybrane funkcje serwera MySQL

E.14 Bazy Danych cz. 12 SQL Wybrane funkcje serwera MySQL Wprowadzenie Funkcje tekstowe Funkcje liczbowe Funkcje daty i czasu Funkcje konwersji Funkcje serwera MySQL Na podstawie: webmaster.helion.pl oraz: ihelp.ovh.org Tak jak we wszystkich innych językach programowania,

Bardziej szczegółowo

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny Schemat bazy danych, wczytanej z pliku create_tables.sql Relacji między tabelami klucze obce Klucz obcy jako ograniczenie dla kolumny customer_id INTEGER NOT NULL REFERENCES customer(customer_id), CONSTRAINT

Bardziej szczegółowo

PODZAPYTANIE (SUBSELECT)

PODZAPYTANIE (SUBSELECT) 2. Podzapytania PODZAPYTANIE (SUBSELECT) oddzielna, ujęta w nawiasy instrukcja SELECT, zagnieżdżona w innej instrukcji SQL, zazwyczaj w instrukcji SELECT W instrukcji SELECT, podzapytanie może być umieszczone

Bardziej szczegółowo

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS.

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS. Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS. 1 Podzapytania Podzapytanie jest poleceniem SELECT zagnieżdżonym

Bardziej szczegółowo

Transakcje W poprzednich częściach instrukcje języka SQL traktowane były jak indywidualne operacje (transakcje)

Transakcje W poprzednich częściach instrukcje języka SQL traktowane były jak indywidualne operacje (transakcje) Zawartość Transakcje...2 Wstawianie danych...4 Weryfikacja danych...4 Wstawianie pojedynczych wierszy...6 Wstawianie wartości Null...8 Wstawianie danych wybranych w zapytaniu... 10 Usuwanie danych... 12

Bardziej szczegółowo

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę Podzapytania Rozdział 5 Podzapytania podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, klauzula WITH, operatory ANY, ALL i EXISTS, zapytania hierarchiczne Podzapytanie jest poleceniem

Bardziej szczegółowo

SQL (ang. Structured Query Language)

SQL (ang. Structured Query Language) SQL (ang. Structured Query Language) SELECT pobranie danych z bazy, INSERT umieszczenie danych w bazie, UPDATE zmiana danych, DELETE usunięcie danych z bazy. Rozkaz INSERT Rozkaz insert dodaje nowe wiersze

Bardziej szczegółowo

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę Podzapytania Rozdział 5 Podzapytania podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, klauzula WITH, operatory ANY, ALL i EXISTS, zapytania hierarchiczne Podzapytanie jest poleceniem

Bardziej szczegółowo

Dominik Szydłowski. v. 2.718281828459045235

Dominik Szydłowski. v. 2.718281828459045235 Dominik Szydłowski v. 2.718281828459045235 Będziemy pracować z bazą danych formula.sql złożonej z tabel: circuits - informacje o torach wyścigowych (18 rec.), drivers - informacje o kierowcach (22 rec.),

Bardziej szczegółowo

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy) Zapytania SQL. Polecenie SELECT jest używane do pobierania danych z bazy danych (z tabel lub widoków). Struktura polecenia SELECT SELECT FROM WHERE opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje

Bardziej szczegółowo

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę Podzapytania Rozdział 5 Podzapytania podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, klauzula WITH, operatory ANY, ALL i EXISTS, zapytania hierarchiczne Podzapytanie jest poleceniem

Bardziej szczegółowo

Pobieranie danych z pojedynczych tabel

Pobieranie danych z pojedynczych tabel W tym odcinku po raz pierwszy potraktujemy tabele jako zbiory danych. Poznasz język SQL i nauczysz się odczytywać, wybierać i sortować dane zapisane w pojedynczych tabelach. Wprowadzenie Podstawowe obiekty

Bardziej szczegółowo

Wykład 8. SQL praca z tabelami 5

Wykład 8. SQL praca z tabelami 5 Wykład 8 SQL praca z tabelami 5 Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu

Bardziej szczegółowo

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, 2016 Spis treści Wprowadzenie Podziękowania xiii xvii 1 Podstawy zapytań i programowania T-SQL 1 Podstawy

Bardziej szczegółowo

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni Akademia Morska w Gdyni Gdynia 2004 1. Złączenie definicja Złączenie (JOIN) to zbiór rekordów stanowiących wynik zapytania służącego pobraniu danych z połączonych tabel (związki jeden-do-jeden, jeden-do-wiele

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Jeśli pobieramy dane z więcej niż jednej tabeli, w rzeczywistości wykonujemy tak zwane złączenie. W SQL istnieją instrukcje pozwalające na formalne wykonanie złączenia tabel - istnieje

Bardziej szczegółowo

Podstawy języka SQL cz. 2

Podstawy języka SQL cz. 2 Podstawy języka SQL cz. 2 1. Operatory zbiorowe a. UNION suma zbiorów z eliminacją powtórzeń, b. EXCEPT różnica zbiorów z eliminacją powtórzeń, c. INTERSECT część wspólna zbiorów z eliminacją powtórzeń.

Bardziej szczegółowo

Wykład XII. optymalizacja w relacyjnych bazach danych

Wykład XII. optymalizacja w relacyjnych bazach danych Optymalizacja wyznaczenie spośród dopuszczalnych rozwiązań danego problemu, rozwiązania najlepszego ze względu na przyjęte kryterium jakości ( np. koszt, zysk, niezawodność ) optymalizacja w relacyjnych

Bardziej szczegółowo

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem. Typy numeryczne Typy daty i czasu. W celu uniknięcia niejasności czy zapis 11-08-2005 oznacza - 11 sierpnia 2005, czy może 8 listopada 2005, należy ustalić sposób interpretacji daty (europejski lub amerykański).

Bardziej szczegółowo

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL Wprowadzenie do SQL SQL - Structured Query Language -strukturalny język zapytań Światowy standard przeznaczony do definiowania, operowania i sterowania danymi w relacyjnych bazach danych Powstał w firmie

Bardziej szczegółowo

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze Funkcje użytkownika Tworzenie funkcji Usuwanie funkcji Procedury składowane Tworzenie procedur składowanych Usuwanie procedur składowanych Wyzwalacze Wyzwalacze a ograniczenia i procedury składowane Tworzenie

Bardziej szczegółowo

Transakcyjne przetwarzanie danych

Transakcyjne przetwarzanie danych Do tej pory jedynie odczytywaliśmy zapisane w bazach informacje. W tym odcinku nauczysz się wstawiać, usuwać i modyfikować dane. Dowiesz się również, czym jest transakcja, blokada i na czym polega transakcyjne

Bardziej szczegółowo

Wymagania: Konstrukcja prostych zapytań w języku SQL, umiejętność wykorzystania funkcji wierszowych i agregujących.

Wymagania: Konstrukcja prostych zapytań w języku SQL, umiejętność wykorzystania funkcji wierszowych i agregujących. Celem ćwiczenia jest zaprezentowanie zagadnień dotyczących stosowania podzapytań ń w zapytaniach języka ę SQL. Podzapytania są ą konstrukcjami, pozwalającymi na wykonywanie zapytań w stylu podaj nazwisko

Bardziej szczegółowo

Wykład 6. SQL praca z tabelami 3

Wykład 6. SQL praca z tabelami 3 Wykład 6 SQL praca z tabelami 3 Łączenie wyników zapytań Język SQL zawiera mechanizmy pozwalające na łączenie wyników kilku pytań. Pozwalają na to instrukcje UNION, INTERSECT, EXCEPT o postaci: zapytanie1

Bardziej szczegółowo

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania. Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania. Przykładowa RBD o schematach relacji (tzw. płaska postać RBD): N(PRACOWNICY) = {ID_P, IMIĘ,

Bardziej szczegółowo

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel SQL, LIKE, IN, CASE, EXISTS Marcin Orchel Spis treści 1 LIKE 2 2 BETWEEN 4 3 IN 5 4 EXISTS 6 5 WYRAŻENIA CASE 7 6 Zadania 9 1 Rozdział 1 LIKE Predykat LIKE jest testem dopasowującym wzorzec łańcucha. Składnia

Bardziej szczegółowo

Systemy GIS Tworzenie zapytań w bazach danych

Systemy GIS Tworzenie zapytań w bazach danych Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE

Bardziej szczegółowo

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15 T-SQL dla każdego / Alison Balter. Gliwice, cop. 2016 Spis treści O autorce 11 Dedykacja 12 Podziękowania 12 Wstęp 15 Godzina 1. Bazy danych podstawowe informacje 17 Czym jest baza danych? 17 Czym jest

Bardziej szczegółowo

Złączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego ogólna postać wygląda następująco:

Złączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego ogólna postać wygląda następująco: Połączenia krzyżowe Złączenie typu CROSS JOIN Złączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego ogólna postać wygląda następująco: SELECT kolumna1, kolumna2,..., kolumnan FROM tabela1 CROSS

Bardziej szczegółowo

E.14 Bazy Danych cz. 15 SQL Transakcyjne przetwarzanie danych

E.14 Bazy Danych cz. 15 SQL Transakcyjne przetwarzanie danych Transakcje Przetwarzanie transakcyjne Automatyczne zatwierdzanie transakcji Rozpoczynanie transakcji Zatwierdzanie transakcji Wycofywanie transakcji Punkty zachowania Poziomy izolowania transakcji Blokowanie

Bardziej szczegółowo

SQL praca z tabelami 4. Wykład 7

SQL praca z tabelami 4. Wykład 7 SQL praca z tabelami 4 Wykład 7 1 Funkcje agregujące Informacja poszukiwana w bazie danych często musi być wyliczana na podstawie danych znajdujących się w wielu wierszach tabeli. Tak jest gdy chcemy znać

Bardziej szczegółowo

Microsoft SQL Server Podstawy T-SQL

Microsoft SQL Server Podstawy T-SQL Itzik Ben-Gan Microsoft SQL Server Podstawy T-SQL 2012 przełożył Leszek Biolik APN Promise, Warszawa 2012 Spis treści Przedmowa.... xiii Wprowadzenie... xv Podziękowania... xix 1 Podstawy zapytań i programowania

Bardziej szczegółowo

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop. 2016 Spis treści O autorach 11 Podziękowania 12 Część I Wprowadzenie do języka SQL 13 Godzina 1. Witamy w świecie języka SQL 15

Bardziej szczegółowo

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje Szkolenie autoryzowane MS 10774 Tworzenie zapytań do Microsoft SQL Server 2012 Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje Opis szkolenia Uwaga! Szkolenie wycofane z oferty. Zapraszamy

Bardziej szczegółowo

Podzapytania do tabel W miejscu w którym możemy użyć nazwy tabeli, możemy użyć podzapytania

Podzapytania do tabel W miejscu w którym możemy użyć nazwy tabeli, możemy użyć podzapytania Plan Podzapytania (subqueries) Podzapytania do tabel Podzapytanie jako wyrażenie Podzapytania skorelowane operatory IN, NOT IN operatory EXISTS, NOT EXISTS Podzapytania do tabel W miejscu w którym możemy

Bardziej szczegółowo

Bazy danych 6. Podzapytania i grupowanie. P. F. Góra

Bazy danych 6. Podzapytania i grupowanie. P. F. Góra Bazy danych 6. Podzapytania i grupowanie P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2012 Podzapytania Podzapytania pozwalaja na tworzenie strukturalnych podzapytań, co umożliwia izolowanie poszczególnych

Bardziej szczegółowo

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9 Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9 Tabele 9 Klucze 10 Relacje 11 Podstawowe zasady projektowania tabel 16 Rozdział 2. Praca z tabelami 25 Typy danych 25 Tworzenie tabel 29 Atrybuty kolumn

Bardziej szczegółowo

Grupowanie i funkcje agregacji

Grupowanie i funkcje agregacji Grupowanie i funkcje agregacji Funkcje agregujące: COUNT([DISTINCT] wyrażenie *), MIN(wyrażenie), MAX(wyrażenie), SUM([DISTINCT] wyrażenie), AVG([DISTINCT] wyrażenie). Klauzula GROUP BY Grupowanie polega

Bardziej szczegółowo

Oracle11g: Wprowadzenie do SQL

Oracle11g: Wprowadzenie do SQL Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom

Bardziej szczegółowo

Przestrzenne bazy danych Podstawy języka SQL

Przestrzenne bazy danych Podstawy języka SQL Przestrzenne bazy danych Podstawy języka SQL Stanisława Porzycka-Strzelczyk porzycka@agh.edu.pl home.agh.edu.pl/~porzycka Konsultacje: wtorek godzina 16-17, p. 350 A (budynek A0) 1 SQL Język SQL (ang.structured

Bardziej szczegółowo

Wykład 5. SQL praca z tabelami 2

Wykład 5. SQL praca z tabelami 2 Wykład 5 SQL praca z tabelami 2 Wypełnianie tabel danymi Tabele można wypełniać poprzez standardową instrukcję INSERT INTO: INSERT [INTO] nazwa_tabeli [(kolumna1, kolumna2,, kolumnan)] VALUES (wartosc1,

Bardziej szczegółowo

Podstawowe zapytania SELECT (na jednej tabeli)

Podstawowe zapytania SELECT (na jednej tabeli) Podstawowe zapytania SELECT (na jednej tabeli) Struktura polecenia SELECT SELECT opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje FROM nazwy tabel lub widoków WHERE warunek (wybieranie wierszy) GROUP

Bardziej szczegółowo

Bazy danych 8. Podzapytania i grupowanie. P. F. Góra

Bazy danych 8. Podzapytania i grupowanie. P. F. Góra Bazy danych 8. Podzapytania i grupowanie P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2009 Podzapytania Podzapytania pozwalaja na tworzenie strukturalnych podzapytań, co umożliwia izolowanie poszczególnych

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których

Bardziej szczegółowo

Marek Rakowski Zdanie SELECT wybieranie danych z wielu tabel Strona 1 z 6

Marek Rakowski Zdanie SELECT wybieranie danych z wielu tabel Strona 1 z 6 Marek Rakowski Zdanie SELECT wybieranie danych z wielu tabel Strona 1 z 6 Wybieranie danych z wielu tabel polega na użyciu więcej niż jednej tabeli w klauzuli FROM i, najczęściej, kolumn z więcej niż jednej

Bardziej szczegółowo

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING Laboratorium nr 5 Temat: Funkcje agregujące, klauzule GROUP BY, HAVING Celem ćwiczenia jest zaprezentowanie zagadnień dotyczących stosowania w zapytaniach języka SQL predefiniowanych funkcji agregujących.

Bardziej szczegółowo

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9. Plan wykładu Spis treści 1 DML - zapytania, część II 1 1.1 Grupowanie................................... 1 1.2 Operatory zbiorowe............................... 5 2 DML - modyfikacja 7 3 DCL - sterowanie

Bardziej szczegółowo

Laboratorium Bazy danych SQL 3 1

Laboratorium Bazy danych SQL 3 1 Laboratorium Bazy danych SQL 3 1 F U N K C J E operujące na grupach wierszy: avg([distinct all]kol) oblicza średnią arytmetyczną wartości kolumny kol wszystkich wierszy grupy. count([distinct all]wyr)

Bardziej szczegółowo

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych Politechnika Śląska Instytut Informatyki instrukcja laboratoryjna laboratorium Bazy Danych przygotowali: mgr inż. Paweł Kasprowski (Kasprowski@zti.iinf.polsl.gliwice.pl) mgr inż. Bożena Małysiak (bozena@ivp.iinf.polsl.gliwice.pl)

Bardziej szczegółowo

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, 2017 Spis treści O autorze 9 Wprowadzenie 11 Lekcja 1. Zrozumieć SQL 15 Podstawy baz danych 15 Język SQL

Bardziej szczegółowo

DECLARE VARIABLE zmienna1 typ danych; BEGIN

DECLARE VARIABLE zmienna1 typ danych; BEGIN Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;

Bardziej szczegółowo

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee Polecenie SELECT instrukcja pobierająca dane z bazy danych (z tabel, widoków) użytkownik posługujący się nią musi mieć uprawnienia do pobierania danych wynikiem zapytania jest zawsze tablica o określonych

Bardziej szczegółowo

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT Studia podyplomowe Inżynieria oprogramowania współfinansowane przez Unię Europejska w ramach Europejskiego Funduszu Społecznego Projekt Studia podyplomowe z zakresu wytwarzania oprogramowania oraz zarządzania

Bardziej szczegółowo

Pobieranie danych, czyli instrukcja SELECT

Pobieranie danych, czyli instrukcja SELECT Pobieranie danych, czyli instrukcja SELECT Pobieranie danych Informacje przechowywane w bazach danych mogą być pobrane za pomocą instrukcji języka SQL SELECT. Instrukcja SELECT (zapytanie) określa, jakie

Bardziej szczegółowo

Technologie baz danych

Technologie baz danych Plan wykładu Technologie baz danych Wykład 6: Algebra relacji. SQL - cd Algebra relacji operacje teoriomnogościowe rzutowanie selekcja przemianowanie Małgorzata Krętowska Wydział Informatyki Politechnika

Bardziej szczegółowo

Wprowadzenie do baz danych

Wprowadzenie do baz danych Wprowadzenie do baz danych Dr inż. Szczepan Paszkiel szczepanpaszkiel@o2.pl Katedra Inżynierii Biomedycznej Politechnika Opolska Wprowadzenie DBMS Database Managment System, System za pomocą którego można

Bardziej szczegółowo

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup Grupowanie i funkcje agregacji Grupowanie z użyciem rollup Funkcje agregujące: COUNT([DISTINCT] wyrażenie *), MIN(wyrażenie), MAX(wyrażenie), SUM([DISTINCT] wyrażenie), AVG([DISTINCT] wyrażenie). Klauzula

Bardziej szczegółowo

Podstawowe funkcje dodatku linq w C#

Podstawowe funkcje dodatku linq w C# Podstawowe funkcje dodatku linq w C# 1. Łączenie Tabel Do łączenia dwóch lub więcej tabel wykorzystujemy komendę join. Składnia całego wyrażenia gotowego do wyświetlenia w DataGridView wygląda następująco:

Bardziej szczegółowo

Technologie baz danych

Technologie baz danych Plan wykładu Technologie baz danych Wykład 2: Relacyjny model danych - zależności funkcyjne. SQL - podstawy Definicja zależności funkcyjnych Reguły dotyczące zależności funkcyjnych Domknięcie zbioru atrybutów

Bardziej szczegółowo

Projektowanie relacyjnych baz danych

Projektowanie relacyjnych baz danych Mam nadzieję, że do tej pory przyzwyczaiłeś się do tabelarycznego układu danych i poznałeś sposoby odczytywania i modyfikowania tak zapisanych danych. W tym odcinku poznasz nieco teorii relacyjnych baz

Bardziej szczegółowo

Aliasy Select p.first_name, p.salary, j.job_title from employees p, jobs j where p.job_id=j.job_id;

Aliasy Select p.first_name, p.salary, j.job_title from employees p, jobs j where p.job_id=j.job_id; Dane z kilku tabel Aliasy Select p.first_name, p.salary, j.job_title from employees p, jobs j where p.job_id=j.job_id; Łączenie kilku selectów w jeden posortowany wynik 1. UNION suma bez powtórzeń. Powoduje,

Bardziej szczegółowo

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. 77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. Przy modelowaniu bazy danych możemy wyróżnić następujące typy połączeń relacyjnych: jeden do wielu, jeden do jednego, wiele

Bardziej szczegółowo

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości

Bardziej szczegółowo

Zadania z SQLa (MS SQL Server)

Zadania z SQLa (MS SQL Server) Zadania z SQLa (MS SQL Server) Struktura testowej bazy danych (diagram ERD): opracował dr Robert Fidytek SPIS TYPÓW ZADAŃ 1 Projekcja wyników zapytań (SELECT FROM )... 3 2 Sortowanie wyników zapytań (ORDER

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

Relacyjne bazy danych. Podstawy SQL Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umożliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.

Bardziej szczegółowo

Struktura drzewa w MySQL. Michał Tyszczenko

Struktura drzewa w MySQL. Michał Tyszczenko Struktura drzewa w MySQL Michał Tyszczenko W informatyce drzewa są strukturami danych reprezentującymi drzewa matematyczne. W naturalny sposób reprezentują hierarchię danych toteż głównie do tego celu

Bardziej szczegółowo

Język SQL. Rozdział 2. Proste zapytania

Język SQL. Rozdział 2. Proste zapytania Język SQL. Rozdział 2. Proste zapytania Polecenie SELECT, klauzula WHERE, operatory SQL, klauzula ORDER BY. 1 Wprowadzenie do języka SQL Język dostępu do bazy danych. Język deklaratywny, zorientowany na

Bardziej szczegółowo

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika Programowanie w SQL procedury i funkcje UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika 1. Funkcje o wartościach skalarnych ang. scalar valued

Bardziej szczegółowo

Ćwiczenie rozpocznie się od wprowadzenia do laboratorium, po którym omówimy składnię ę polecenia INSERT pozwalającego ą na wstawianie krotek do

Ćwiczenie rozpocznie się od wprowadzenia do laboratorium, po którym omówimy składnię ę polecenia INSERT pozwalającego ą na wstawianie krotek do Na dotychczasowych zajęciach zapoznaliście się Państwo z poleceniem SELECT pozwalającym ą na wykonywanie zapytań ń do bazy danych i odczytywanie danych zawartych w relacjach. Celem tego ćwiczenia jest

Bardziej szczegółowo

Liczby losowe i pętla while w języku Python

Liczby losowe i pętla while w języku Python Liczby losowe i pętla while w języku Python Mateusz Miotk 17 stycznia 2017 Instytut Informatyki UG 1 Generowanie liczb losowych Na ogół programy są spójne i prowadzą do przewidywanych wyników. Czasem jednak

Bardziej szczegółowo

15. Funkcje i procedury składowane PL/SQL

15. Funkcje i procedury składowane PL/SQL 15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp

Bardziej szczegółowo

Podstawy języka SQL -

Podstawy języka SQL - Podstawy języka SQL - Wstęp do DML - Instrukcja Select Składnia SELECT [predykat] { * tabela.* [tabela.]pole1 [AS alias1] [, [tabela.]pole2 [AS alias2] [,...]] [LIMIT ( n ALL )] [OFFSET n]} FROM tabela/e

Bardziej szczegółowo

Plan. ! Podzapytania (subqueries) ! Podzapytania do tabel. ! Podzapytanie jako wyrażenie. ! Podzapytania skorelowane. ! operatory IN, NOT IN

Plan. ! Podzapytania (subqueries) ! Podzapytania do tabel. ! Podzapytanie jako wyrażenie. ! Podzapytania skorelowane. ! operatory IN, NOT IN Plan! Podzapytania (subqueries)! Podzapytania do tabel! Podzapytanie jako wyrażenie! Podzapytania skorelowane! operatory IN, NOT IN! operatory EXISTS, NOT EXISTS sales,fk1 stor_id ord_num,fk2,i1 title_id

Bardziej szczegółowo

Optymalizacja w relacyjnych bazach danych - wybór wydajnej strategii obliczania wyrażenia relacyjnego.

Optymalizacja w relacyjnych bazach danych - wybór wydajnej strategii obliczania wyrażenia relacyjnego. Plan wykładu Spis treści 1 Optymalizacja 1 1.1 Etapy optymalizacji............................... 3 1.2 Transformacja zapytania............................ 3 1.3 Przepisywanie zapytań.............................

Bardziej szczegółowo

Tworzenie zapytań do Microsoft SQL Server

Tworzenie zapytań do Microsoft SQL Server MS 20461 Tworzenie zapytań do Microsoft SQL Server Czas trwania: 5 dni (40 h) Poziom trudności: Średnio Zaawansowany Autoryzacja: Microsoft Opis: Szkolenie administratorów baz danych oraz programistów

Bardziej szczegółowo

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl Bazy danych Zapytania SELECT Dr inż. Paweł Kasprowski pawel@kasprowski.pl Przykład HAVING Podaj liczebność zespołów dla których najstarszy pracownik urodził się po 1940 select idz, count(*) from prac p

Bardziej szczegółowo

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN Integralność danych Wersje języka SQL Klauzula SELECT i JOIN Robert A. Kłopotek r.klopotek@uksw.edu.pl Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW Integralność danych Aspekty integralności

Bardziej szczegółowo

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2) Laboratorium nr 8 Temat: Podstawy języka zapytań SQL (część 2) PLAN LABORATORIUM: 1. Sortowanie. 2. Warunek WHERE 3. Eliminacja powtórzeń - DISTINCT. 4. WyraŜenia: BETWEEN...AND, IN, LIKE, IS NULL. 5.

Bardziej szczegółowo

SQL - Structured Query Language. strukturalny język zapytań

SQL - Structured Query Language. strukturalny język zapytań SQL - Structured Query Language strukturalny język zapytań SQL - Structured Query Language - strukturalny język zapytań Światowy standard przeznaczony do definiowania, operowania i sterowania danymi w

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie

Bardziej szczegółowo

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Instytut Mechaniki i Inżynierii Obliczeniowej  Wydział Mechaniczny technologiczny Politechnika Śląska Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie bazy danych z użyciem UML, proste

Bardziej szczegółowo

TEMAT ĆWICZENIA Zapoznanie z technologią LINQ

TEMAT ĆWICZENIA Zapoznanie z technologią LINQ POLITECHNIKA WROCŁAWSKA KOŁO NAUKOWE KREDEK Laboratorium nr 4 TEMAT ĆWICZENIA Zapoznanie z technologią LINQ Wykonał: Mateusz Woszczyk 155693 Termin: Cz / 19.00 Data wykonania ćwiczenia: 20.11.2011 1. LINQ

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 8b: Algebra relacyjna http://hibiscus.if.uj.edu.pl/~erichter/dydaktyka2009/tpi-2009 Prof. dr hab. Elżbieta Richter-Wąs 1 Algebra relacyjna Algebra relacyjna (ang.

Bardziej szczegółowo

4. Funkcje. Przykłady

4. Funkcje. Przykłady 4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni

Bardziej szczegółowo

Wprowadzenie do języka SQL

Wprowadzenie do języka SQL Wprowadzenie do języka SQL język dostępu do bazy danych grupy poleceń języka: DQL (ang( ang.. Data Query Language) DML (ang( ang.. Data Manipulation Language) DDL (ang( ang.. Data Definition Language)

Bardziej szczegółowo

Ćwiczenie zapytań języka bazy danych PostgreSQL

Ćwiczenie zapytań języka bazy danych PostgreSQL Ćwiczenie zapytań języka bazy danych PostgreSQL 1. Uruchom link w przeglądarce: http://127.0.0.1/phppgadmin 2. Kliknij w zaznaczony na czerwono link PostgreSQL: 3. Zaloguj się wpisując hasło i login student.

Bardziej szczegółowo

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Instytut Mechaniki i Inżynierii Obliczeniowej   fb.com/groups/bazydanychmt/ Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl fb.com/groups/bazydanychmt/ Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie

Bardziej szczegółowo