Wykonać najpierw bez klauzuli WHERE

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

Download "Wykonać najpierw bez klauzuli WHERE"

Transkrypt

1 I. Wybieranie danych z wielu tabel. Zadania obejmują wyszukiwanie danych z wielu tabel. Do budowy takich zapytań słuŝy predykat JOIN, który jest implementacją operatorów złączeń algebry relacji. Znaleźć adresy oddziałów wypoŝyczalni samochodów, w których pracują poszczególni pracownicy. Aby uzyskać te informacje, potrzebna jest lista pracowników oraz dane o miejscu zatrudnienia pracowników. W bazie danych WYPAUT, dla kaŝdego numeru miejsca (pracy pracownika) istnieje jeden wiersz w tabeli MIEJSCA. DBMS odczytuje numer miejsca pracownika z tabeli PRACOWNICY, a potem przeszukuje tabele MIEJSCA w celu znalezienia odpowiadającego temu numerowi wiersza, który opisuje dokładnie miejsce pracy, tzn. adres, telefon i inne informacje. W języku baz danych SQL moŝna to wyrazić poniŝszym zapytaniem: Wykonać najpierw bez klauzuli WHERE SELECT PRACOWNICY.NAZWISKO, PRACOWNICY.STANOWISKO, PRACOWNICY.DZIAL, MIEJSCA.MIASTO, MIEJSCA.ULICA FROM PRACOWNICY, MIEJSCA WHERE PRACOWNICY.NR_MIEJSCA = MIEJSCA.NR_MIEJSCA ORDER BY PRACOWNICY.NAZWISKO; Takie zapytanie SQL nazywamy złączeniem (ang. join). W zapytaniu tym: w klauzuli SELECT specyfikujemy kolumny, które chcemy uzyskać, jako wynik zapytania, w klauzuli FROM określamy nazwy złączanych tabel, w klauzuli WHERE określamy warunki złączenia. Składnia złączenia predykat JOIN. Są dwa rodzaje składni zapytania złączeniowego. Pierwszy przedstawiony został powyŝej. Przy specyfikowaniu złączenia dwóch tabel, do poprawnego wyświetlenia wyniku klauzula WHERE musi zawierać jeden warunek. Gdy złączamy trzy tabele klauzula WHERE musi zawierać przynajmniej dwa warunki musza dotyczyć złączenia tabel, a pozostałe dotyczą wyboru wierszy. Oto przykład: SELECT WYPOZYCZENIA.NR_WYPOZYCZENIA, PRACOWNICY.NAZWISKO, PRACOWNICY.STANOWISKO, PRACOWNICY.DZIAL, MIEJSCA.MIASTO, MIEJSCA.ULICA FROM PRACOWNICY, MIEJSCA, WYPOZYCZENIA WHERE PRACOWNICY.NR_MIEJSCA = MIEJSCA.NR_MIEJSCA AND PRACOWNICY.NR_PRACOWNIKA = WYPOZYCZENIA.NR_PRACOW_WYP AND MIEJSCA.MIASTO = WARSZAWA ORDER BY PRACOWNICY.NAZWISKO;

2 Inny typ specyfikacji złączenia polega na zastosowaniu konstrukcji JOIN...ON: SELECT PRACOWNICY.NAZWISKO, PRACOWNICY.STANOWISKO, PRACOWNICY.DZIAL, MIEJSCA.MIASTO, MIEJSCA.ULICA FROM PRACOWNICY JOIN MIEJSCA ON PRACOWNICY.NR_MIEJSCA = MIEJSCA.NR_MIEJSCA WHERE PRACOWNICY.STANOWISKO = SPRZEDAWCA ORDER BY PRACOWNICY.NAZWISKO; Jak widać powyŝej, gdy uŝywamy słowa kluczowego JOIN w klauzuli FROM, warunki złączenia musza być wyspecyfikowane po klauzuli ON. W klauzuli WHERE moŝna natomiast określić dodatkowe warunki, na przykład wyboru wierszy. Stosowanie aliasów w zapytaniu. Aliasy definiuje się w celu skrócenia nazwy tabeli. Przykładowo alias P moŝe wskazywać na tabele PRACOWNICY, a M moŝe wskazywać tabele MIEJSCA: SELECT P.NAZWISKO, P.STANOWISKO, P.DZIAL, M.MIASTO, M.ULICA, MIEJSCA M WHERE P.NR_MIEJSCA = M.NR_MIEJSCA AND P.STANOWISKO = SPRZEDAWCA ORDER BY P.NAZWISKO; Wynik wykonania tego zapytania jest taki sam jak poprzedniego zapytania. Od tej chwili w przykładach będziemy stosować aliasy dla nazw tabel. Podsumowanie: 1. Dane mogą być wydobywane z jednej lub wielu tabel. 2. W zapytaniu wybierającym dane z przynajmniej dwóch tabel moŝna uŝyć predykatu JOIN. 3. JeŜeli w zapytaniu, które wybiera dane z przynajmniej dwóch tabel, nie zostanie wyspecyfikowany warunek po słowie kluczowym WHERE lub ON, to zwrócony wynik będzie iloczynem kartezjańskim. 4. W zapytaniach moŝna uŝywać aliasów zamiast nazw tabel. Funkcje skalarne i arytmetyczne. Wybieranie wyliczonych wartości. W zapytaniu SQL moŝemy uŝyć następujących funkcji skalarnych i arytmetycznych w celu obliczenia wartości: + dodawanie - odejmowanie * mnoŝenie / dzielenie Tych operatorów uŝywamy teŝ do budowy bardziej złoŝonych wyraŝeń. W celu zaznaczenia kolejności wykonywania działań moŝna uŝywać nawiasów. SELECT P.IMIE, P.NAZWISKO, P.PENSJA, P.DODATEK, P.PENSJA + P.DODATEK AS DO_WYPLATY WHERE P.PENSJA > 1100 ORDER BY P.NAZWISKO; Wynik zapytania zawiera kolumnę obliczona, która jest suma kolumn PENSJA i DODTEK. Jeśli wartość którejś z kolumn potrzebnych do obliczeń jest pusta (ma wartość NULL), to wartość pola związanego z obliczeniami na tej wartości jest równieŝ pusta (NULL).

3 Aby nazwa kolumny wyliczonej mogła zawierać spacje, to nazwa ta musi być wziętą w cudzysłów: SELECT P.IMIE, P.NAZWISKO, P.PENSJA, P.DODATEK, P.PENSJA + P.DODATEK AS DO WYPLATY WHERE P.PENSJA > 1100 ORDER BY P.NAZWISKO; Nazwa kolumny wyliczonej nie moŝe wystąpić w klauzuli WHERE. W niektórych systemach DBMS i zrealizowanych w nich odmianach języka SQL nazwy kolumny wyliczonej nie moŝna uŝywać w klauzuli ORDER BY. Jest tak w InterBase. Wtedy naleŝy uŝywać numeru na liście wyliczonej w klauzuli SELECT: SELECT P.IMIE, P.NAZWISKO, P.PENSJA, P.DODATEK, P.PENSJA + P.DODATEK AS DO_WYPLATY WHERE P.PENSJA > 1100 ORDER BY 5; Porównanie daty. Kolumny typu daty lub czasu mogą być porównywane z innymi wartościami reprezentującymi datę lub czas. Wartości przedstawiające datę lub czas musza być otoczone pojedynczym cudzysłowem. W poniŝszym przykładzie zostaną wyświetlone dane pracowników zatrudnionych w lub po dacie : SELECT P.IMIE, P.NAZWISKO, P.DZIAL, P.STANOWISKO, P.DATA_ZATR WHERE P.DATA_ZATR >= ORDER BY P.NAZWISKO; W DBMS IntrerBase funkcje SUBSTR trzeba uaktywnić. W tym celu deklarujemy funkcje, która będzie pobrana z zewnętrznej biblioteki DLL dołączanej dynamicznie: DECLARE EXTERNAL FUNCTION SUBSTR CSTRING(80), SMALLINT, SMALLINT RETURNS CSTRING(80) FREE_IT ENTRY_POINT IB_UDF_substr MODULE_NAME ib_udf.dll ; Po wykonaniu powyŝszego polecenia moŝna przejść do opcji IBConsole, aby zobaczyć te funkcje, klikając w panelu po lewej stronie na ikonie External Function. Funkcja skalarna SUBSTR wybierania podłańcucha. Do wybierania podłańcucha słuŝy funkcja SUBSTR. Aby z kolumny NAZWISKO wybrać ciągi znaków od pozycji wskazywanej przez drugi argument do pozycji wskazywanej przez trzeci argument budujemy poniŝsze zapytanie. NaleŜy z naciskiem zaznaczyć, Ŝe funkcja ta ma inne znaczenie składni i inaczej działa w innych systemach DBMS. SELECT SUBSTR(K.NAZWISKO, 3, 4), K.NAZWISKO FROM KLIENCI K;

4 Łączenie łańcuchów. Ciągi znaków moŝna łączyć w całościowe łańcuchy wynikowe za pomocą operatora. NaleŜy z naciskiem zaznaczyć, Ŝe w innych odmianach SQL dla innych systemów DBMS moŝna zastosować do łączenia łańcuchów specjalne funkcje, np. w DB2 funkcje CONCAT. SELECT K.IMIE K.NAZWISKO AS KLIENT FROM KLIENCI K; Podsumowanie: 1. Funkcje arytmetyczne mogą być uŝywane w klauzuli SELECT oraz WHERE. 2. Kolumny wyliczone mogą być nazwane przez zastosowanie klauzuli AS. 3. Do zmiany reprezentacji danych słuŝą funkcje skalarne. 4. W innych odmianach SQL dla innych systemów DBMS występuje bardzo duŝo wbudowanych funkcji skalarnych. Funkcje kolumnowe i grupujące. Funkcje kolumnowe. Do funkcji kolumnowych zalicza sie funkcje: SUM, AVG, MIN, MAX oraz COUNT. Funkcje te uŝywane są w klauzulach SELECT lub HAVING. SUM słuŝy do obliczania sumy wartości w określonych kolumnach, AVG oblicza wartość średnia w kolumnie, MIN znajduje wartość minimalną, MAX znajduje wartość maksymalną, COUNT słuŝy do zliczania wystąpień pewnej wartości w wierszach. PoniŜszy przykład wyświetla całkowitą sumę wszystkich pensji pracowników, średnią pensje, minimalną pensje oraz ilość pracowników: SELECT SUM(P.PENSJA) AS PENSJA, AVG(P.PENSJA) AS SREDNIA, MIN(P.PENSJA) AS PENSJA_MIN, MAX(P.PENSJA) AS PENSJA_MAX, COUNT(*) AS ILOSC ; PowyŜej funkcja COUNT została uŝyta do zliczania wszystkich wierszy w tabeli (COUNT(*)). MoŜe być ona równieŝ uŝyta do zliczania wierszy nie zawierających powtarzających się wartości w kolumnie w kolumnach. Przykładowo, moŝemy zliczyć liczbę działów i stanowisk w firmie: SELECT COUNT(DISTINCT P.DZIAL) AS ILOSC_DZIALOW, COUNT(DISTINCT P.STANOWISKO) AS ILOSC_STANOWISK ; Funkcje kolumnowe moŝna zastosować równieŝ na podzbiorze wierszy. SELECT SUM(P.PENSJA) AS PENSJA, AVG(P.PENSJA) AS SREDNIA, MIN(P.PENSJA) AS PENSJA_MIN, MAX(P.PENSJA) AS PENSJA_MAX, COUNT(*) AS ILOSC WHERE P.DZIAL = OBSLUGA KLIENTA ;

5 Klauzula GROUP BY. Grupuje wiersze o tej samej wartości wyszczególnionych kolumn. Funkcje agregujące SQL (AVG, MAX, MIN, SUM, oraz COUNT) w klauzuli SELECT operują na kaŝdej grupie osobno. Następujące zapytanie pogrupuje wiersze według stanowiska: SELECT P.STANOWISKO, SUM(P.PENSJA) AS PENSJA, AVG(P.PENSJA) AS SREDNIA, MIN(P.PENSJA) AS PENSJA_MIN, MAX(P.PENSJA) AS PENSJA_MAX, COUNT(*) AS ILOSC GROUP BY P.STANOWISKO ORDER BY P.STANOWISKO; Klauzula HAVING. Klauzula HAVING jest uŝywana w GROPUP BY w celu ograniczenia wyświetlania grup. Warunek szukania musi zawierać funkcje agregującą. Po zgrupowaniu wierszy przez klauzule GROUP BY, klauzula HAVING wyświetla tylko te wiersze spośród zgrupowanych, które spełniają warunki wyszczególnione w klauzuli HAVING. Klauzula HAVING moŝe być uŝyta tylko wówczas, gdy w zapytaniu znajduje się klauzula GROUP BY. Aby wyświetlić wszystkich pracowników, którzy wypoŝyczyli samochody na łączną sumę powyŝej 400zł budujemy poniŝsze zapytanie: SELECT P.NAZWISKO, SUM(W.CENA_JEDN), WYPOZYCZENIA W WHERE P.NR_PRACOWNIKA = W.NR_PRACOW_WYP GROUP BY P.NAZWISKO HAVING SUM(W.CENA_JEDN) > 400 ORDER BY P.NAZWISKO; Podsumowanie: 1. Funkcje kolumnowe mogą być uŝyte tylko w klauzulach SELECT HAVING. 2. Klauzula SELECT moŝe zawierać tylko funkcje kolumnowe oraz kolumny wskazane w klauzuli ORDER BY. 3. Klauzula HAVING moŝe zawierać dowolne funkcje kolumnowe operujące na dowolnych kolumnach tabeli. Kolumny te nie musza być wyspecyfikowane w klauzuli SELECT. Klauzula UNION. Klauzula UNION pozwala na łączenie dwóch lub więcej wyników wykonania zapytania SELECT. Zapoznamy się ze składnia polecenia UNION, oraz zasadami dla list w klauzuli SELECT oraz róŝnicami miedzy klauzulą UNION i UNION ALL. Łączenie wielu wyników zapytania. Klauzula UNION łączy dwa lub więcej zapytania SELECT w jedną tabelę wynikowa. Klauzula SELECT musi zwracać tę samą liczbę kolumn. Kolumny pokrywające się musza mieć te sama szerokość i typ danych. Nazwy tych kolumn mogą być róŝne. Klauzula UNION łączy dwa zestawy wyników w jeden i jednocześnie usuwa duplikaty. Powtarzające się wiersze umieszczane są w wyniku końcowym zapytania tylko raz, to znaczy eliminowane są duplikaty w wyniku końcowym. PoniŜsze zapytanie zwraca dane o imieniu i nazwisku wszystkich klientów i pracowników, których nazwiska kończą się na ski. Tylko jedna osoba o imieniu i nazwisku Jan Kowalski występuje jednocześnie w tabeli klientów i pracowników: SELECT IMIE, NAZWISKO FROM KLIENCI WHERE NAZWISKO LIKE %SKI UNION SELECT IMIE, NAZWISKO FROM PRACOWNICY WHERE NAZWISKO LIKE %SKI ;

6 Za kaŝdym razem zapytania łączące wyniki z klauzula UNION wyświetlają wyniki posortowane rosnąco. JeŜeli chcemy zawrzeć klauzule ORDER BY sortującą wyniki malejąco ze względu na NAZWISKO, to musi ona być umieszczona na końcu zapytania. Uwaga: W dialekcie języka SQL systemu DBMS InterBase, w klauzuli ORDER BY zamiast specyfikowania nazwy kolumny NAZWISKO musimy wyspecyfikować numer pozycji tej kolumny na liście kolumn wybieranych w SELECT (w poniŝszym przykładzie jest to 2). InterBase nie pozwala specyfikować w klauzuli ORDER BY nazw kolumn: SELECT IMIE, NAZWISKO FROM KLIENCI WHERE NAZWISKO LIKE %SKI UNION SELECT IMIE, NAZWISKO FROM PRACOWNICY WHERE NAZWISKO LIKE %SKI ORDER BY 2 DESC; Klauzula UNION ALL. RóŜnica pomiędzy klauzulą UNION a UNION ALL polega na tym, Ŝe wynik łączenia zapytań klauzula UNION ALL zawiera powtarzające się wiersze. Natomiast klauzula UNION ALL działa szybciej niŝ UNION. Zatem, gdy łączymy klika wyników zapytania, i gdy jesteśmy pewni, Ŝe łączone wyniki nie zawierają duplikatów, moŝemy uŝywać klauzuli UNION ALL. SELECT IMIE, NAZWISKO FROM KLIENCI WHERE NAZWISKO LIKE %SKI UNION ALL SELECT IMIE, NAZWISKO FROM PRACOWNICY WHERE NAZWISKO LIKE %SKI ORDER BY 2 DESC; W wyniku tego zapytania JAN KOWALSKI występuje dwa razy poniewaŝ UNION ALL nie usuwa duplikatów Podsumowanie: 1. Wyniki zapytania SELECT z tą samą liczbą kolumn będących tego samego typu danych mogą być łączone poprzez uŝycie klauzuli UNION. 2. Klauzula UNION sortuje dane wynikowe i usuwa duplikaty. 3. Klauzula UNION ALL działa szybciej niŝ UNION. 4. Klauzuli UNION ALL uŝywamy, gdy jesteśmy pewni, Ŝe łączone wyniki nie zawierają duplikatów.

7 Dalsze przykłady dotyczą podzapytań. PokaŜemy, jak konstruować podzapytania, jak je uŝywać w klauzuli HAVING oraz jak budować podzapytania ze słowami kluczowymi IN, ALL, ANY lub SOME. Przypuśćmy, Ŝe musimy znaleźć pracowników, którzy otrzymują wynagrodzenie na kwotę większą niŝ wynosi średnia. Musimy najpierw sprawdzić, jaka jest średnia pensja (dla kaŝdego) pracownika: SELECT AVG(P.PENSJA) ; Teraz szukamy pracowników, którzy zarabiają powyŝej średniej: SELECT P.IMIE, P.NAZWISKO, P.DZIAL, P.STANOWISKO WHERE P.PENSJA > 1530; Co prawda zrealizowaliśmy treść zadania, W DWÓCH KROKACH. Natomiast naszym celem jest realizacja zadania JEDNYM POLECENIEM. MoŜna to zrobić przy uŝyciu podzapytania: SELECT P.IMIE, P.NAZWISKO, P.DZIAL, P.STANOWISKO WHERE P.PENSJA > (SELECT AVG(P.PENSJA) ); Podzapytania z uŝyciem słów kluczowych IN oraz NOT IN. Słowo kluczowe IN pozwala na zidentyfikowanie wszystkich elementów w zbiorze A, które występują w zbiorze B. Dualnie, słowo kluczowe NOT IN pozwala na zidentyfikowanie wszystkich elementów w zbiorze A, które nie występują w zbiorze B. Zapytanie wyświetlające listę samochodów, których do tej pory nie wypoŝyczył Ŝaden klient. Zapytanie wybiera te samochody, które nie znajdują się w tabeli wypoŝyczenia, czyli te, które nie były do tej pory przedmiotem wypoŝyczenia: SELECT S.NR_SAMOCHODU, S.MARKA, S.TYP FROM SAMOCHODY S WHERE S.NR_SAMOCHODU NOT IN (SELECT W.NR_SAMOCHODU FROM WYPOZYCZENIA W); Podzapytania z uŝyciem słowa kluczowego ALL. PoniŜsze podzapytanie przykładowe będzie wykonywane w trzech krokach. Najpierw wykonywane jest podzapytanie, znajdujące średnią pensje w kaŝdym dziale (działami). W drugim kroku, kaŝda pensja pracownika porównywana jest z listą średnich pensji. W końcu, wyświetleni zostaną pracownicy, których pensja jest wyŝsza od wszystkich średnich pensji obliczonych w podzapytaniu: SELECT P.IMIE, P.NAZWISKO, P.DZIAL, P.STANOWISKO, P.PENSJA WHERE P.PENSJA > ALL (SELECT AVG(P.PENSJA) GROUP BY P.DZIAL);

8 Podzapytania z uŝyciem słowa kluczowego ANY lub SOME. PoniŜsze zapytanie wykonywane jest w trzech krokach. Jako pierwsze jest wykonywane podzapytanie, które znajduje średnia pensję w kaŝdym dziale (działami). W drugim kroku, kaŝda pensja pracownika porównywana jest z lista średnich pensji. Ostatecznie, wyświetleni zostaną wszyscy pracownicy, których pensja jest wyŝsza od najmniejszej średniej pensji obliczonej w podzapytaniu: SELECT P.IMIE, P.NAZWISKO, P.DZIAL, P.STANOWISKO, P.PENSJA WHERE P.PENSJA > ANY (SELECT AVG(P.PENSJA) GROUP BY P.DZIAL); Słowo kluczowe SOME jest równowaŝne słowu ANY. Podzapytania w klauzuli HAVING. Chcemy znaleźć działy, w których średnia pensja pracowników jest wyŝsza od średniej pensji w firmie. Do średnich pensji nie będą brani pod uwagę kierownicy działów. Gdybyśmy musieli wykonać to zadanie ręcznie, to musielibyśmy wykonać trzy kroki. W pierwszym musielibyśmy znaleźć średnią pensje w firmie, nie biorąc pod uwagę kierowników: SELECT AVG(P.PENSJA) WHERE P.STANOWISKO <> KIEROWNIK ; W drugim obliczylibyśmy średnie pensje pracowników w poszczególnych działach, nie biorąc przy tym pod uwagę kierowników: SELECT P.DZIAL, AVG(P.PENSJA) AS SREDNIA_PENSJA WHERE P.STANOWISKO <> KIEROWNIK GROUP BY P.DZIAL ORDER BY 2; Gdy uŝywamy innego systemu DBMS niŝ InterBase, to ostatni wiersz bedzie wygladał nastepujaco: ORDER BY SREDNIA_PENSJA; W trzecim kroku musielibyśmy porównać wartości średnich pensji poszczególnych działów ze średnią pensją w firmie. Ostatecznie, wykonujemy to zadanie za pomocą pojedynczego zapytania z podzapytaniem w klauzuli HAVING. SELECT P.DZIAL, AVG(P.PENSJA) AS SREDNIA_PENSJA WHERE P.STANOWISKO <> KIEROWNIK GROUP BY P.DZIAL HAVING AVG(P.PENSJA) > (SELECT AVG(P.PENSJA) WHERE P.STANOWISKO <> KIEROWNIK ) ORDER BY 2; Podsumowanie: 1. Podzapytania musza być otoczone nawiasami. 2. Podzapytania nie mogą zawierać klauzuli UNION, UNION ALL, lub ORDER BY.

9 Utrzymywanie danych. Obecnie pokaŝemy składnie poleceń do tworzenia tabel i widoków oraz pokaŝemy jak wprowadzać do tabeli dane, jak te dane modyfikować, a takŝe jak usuwać z tabel wiersze i jak usuwać całe tabele. Tworzenie tabel. Utworzymy ćwiczeniową tabele wypełniona danymi. Tabele tworzy następujące polecenie. CREATE TABLE KLIENCI_TEST ( NR_KLIENTA CHAR(8) NOT NULL, IMIE VARCHAR(20) NOT NULL, NAZWISKO VARCHAR(20) NOT NULL, NR_KARTY_KREDYT CHAR(20), ULICA VARCHAR(24) NOT NULL, NUMER CHAR(8) NOT NULL, MIASTO VARCHAR(24) NOT NULL, KOD CHAR(6) NOT NULL, NR_TELEFONU CHAR(16), PRIMARY KEY (NR_KLIENTA) ); Definiując tabelę określamy jej nazwę KLIENCI_TEST. Następnie określamy kolumny dla tej tabeli. KaŜda kolumna musi posiadać unikatowa nazwę w obrębie tabeli oraz typ danych przechowywanych w kolumnie. Dodatkowo przy definiowaniu kolumn moŝna określić, czy dozwolone jest pozostawienie wartości pustych w tej kolumnie. Jeśli nie, to dodajemy do definicji kolumny klauzule NOT NULL. W tabeli KLIENCI_TEST kolumna NR_KARTY_KREDYT moŝe być puste, co oznacza Ŝe nie kaŝdy klient posiada kartę kredytową, a gdy nawet taką kartę posiada, to nie musi nią realizować płatności. Słowo kluczowe PRIMARY KEY określa klucz główny dla tabeli. Tabele moŝna przebudować dodając nowa kolumnę albo usuwając jakąś kolumnę istniejącą juŝ w tabeli. MoŜna zmienić typ danych kolumny lub zmienić inne cechy tabeli oraz kolumn w niej zawartych. Do zmiany struktury tabeli słuŝy polecenie ALTER TABLE języka SQL. Następujące polecenie ALTER TABLE dodaje dwie kolumny FIRMA oraz NIP do tabeli KLIECI_TEST. ALTER TABLE KLIENCI_TEST ADD FIRMA VARCHAR(40), ADD NIP CHAR(12); W InterBase kolejne wiersze ze słowem ADD w powyŝszym naleŝy oddzielić przecinkiem. Poleceń ALTER TABLE uŝywamy w celu poprawiania błędów definiowania tabel i schematu bazy danych. Tworzenie widoków. Dane zawarte w widoku nie musza być kompletnymi danymi jakiejś tabeli, a nawet nie musza pochodzić z jednej tabeli. Widok, czyli perspektywa jest pewnym oknem na dane i moŝe ono pokazywać dane z kilku tabel. Widoki są tworzone głównie w celu ograniczenia dostępu do danych w tabelach bazy danych. Do tworzenia widoków słuŝy polecenie CREATE VIEW. A oto przykład tworzenia widoku zawierającego dane klientów, którzy posiadają firmę. CREATE VIEW KLIENCI_FIRMY AS SELECT K.IMIE, K.NAZWISKO, K.FIRMA, K.NIP, K.MIASTO FROM KLIENCI K WHERE K.FIRMA IS NOT NULL; Z widoku moŝna wybierać dane, tak jak z tabeli. SELECT * FROM KLIENCI_FIRMY;

10 Tworzenie widoku, który ogranicza dane pracowników do wszystkich danych oprócz informacji na temat dodatku i pensji: CREATE VIEW PRACOWNICY_DANE_BEZ_PLAC AS SELECT P.NR_PRACOWNIKA, P.IMIE, P. NAZWISKO, P.DATA_ZATR, P.DZIAL, P.STANOWISKO, P.NR_MIEJSCA, P.NR_TELEFONU ; Dodawanie i usuwanie wierszy. Aby dodać jeden lub więcej wierszy do istniejącej tabeli, naleŝy posłuŝyć się poleceniem INSERT. Aby dodać wiersz do tabeli KLIENCI_TEST musimy napisać i wykonać następujące polecenie SQL. INSERT INTO KLIENCI_TEST VALUES ( , MARIUSZ, DOLATA, NULL, KOCHANOWSKIEGO, 3, WROCLAW, , , KWIATY, ); MoŜna dodać jeszcze kilka wierszy: INSERT INTO KLIENCI_TEST VALUES ( , TOMASZ, DOMAGALA, HX , ROZANA, 4/9, WARSZAWA, , , NULL, NULL); INSERT INTO KLIENCI_TEST VALUES ( , PAWEL, MALCZYKOWSKI, HF , SLONECZNA, 9, WARSZAWA, , , NULL, NULL); INSERT INTO KLIENCI_TEST VALUES ( , PIOTR, MUSZYNSKI, DD , SZYBOWCOWA, 22A, WARSZAWA, , , FRYZJERSTWO, ); KaŜde z tych poleceń wypełnia wartościami wszystkie kolumny tabeli. Aby wstawić dane tylko do wybranych kolumn tabeli, naleŝy je wyspecyfikować, a następnie podąć wartości. INSERT INTO KLIENCI_TEST (NR_KLIENTA, IMIE, NAZWISKO, ULICA, NUMER, MIASTO, KOD) VALUES ( , MAGDALENA, BRZOZA, ALEJE LIPOWE, 4/3, SWIDNICA, ); Aby usunąć wiersze z tabeli, uŝywamy polecenia DELETE FROM: DELETE FROM KLIENCI_TEST WHERE FIRMA IS NOT NULL; Polecenie DELETE FROM bez klauzuli WHERE usuwa wszystkie wiersze z tabeli. DELETE FROM KLIENCI_TEST; Zmiana danych w tabeli. Polecenie UPDATE zmienia wartości we wskazanych kolumnach tabeli dla jednego lub więcej wierszy. Najpierw sprawdzamy, jaki obecnie sprzedawcy maja dodatek: SELECT * FROM PRACOWNICY WHERE STANOWISKO = SPRZEDAWCA ;

11 Następujące polecenie UPDATE zmienia kwotę dodatku pracownika zatrudnionego na stanowisku sprzedawcy o 50 zł: UPDATE PRACOWNICY SET DODATEK = DODATEK + 50 WHERE STANOWISKO = SPRZEDAWCA ; Sprawdzamy, czy wartości dodatku dla sprzedawców zostały zmienione: SELECT * FROM PRACOWNICY WHERE STANOWISKO = SPRZEDAWCA ; JeŜeli zmieniamy wartości więcej niŝ jednej kolumny, kolumny musza być oddzielone przecinkami. A oto polecenie zwiększające dodatek dla kierowników o 30 zł oraz zwiększające pensje o 10%. UPDATE PRACOWNICY SET DODATEK = DODATEK + 30, PENSJA = PENSJA + (PENSJA * 10)/100 WHERE STANOWISKO = KIEROWNIK ; Usuwanie tabel. Aby usunąć tabele, stosujemy polecenie DROP TABLE. Jeśli transakcja na tabeli trwa, to trzeba ja wcześniej zatwierdzić (COMMIT) lub wycofać (ROLLBACK). DROP TABLE KLIENCI_TEST; Polecenie usuwające tabele usuwa jednocześnie wszystkie dane zawarte w tabeli oraz wszystkie widoki czerpiące dane z usuwanej tabeli. Podsumowanie: 1. Usuniecie tabeli powoduje usuniecie danych i widoków związanych z usuwaną tabelą. 2. MoŜna określić wiersze, które maja być usunięte lub zmienione poprzez zamieszczenie odpowiedniego warunku w klauzuli WHERE. 3. Opuszczenie klauzuli WHERE w poleceniach UPDATE lub DELETE powoduje, Ŝe wszystkie wiersze zostaną zmienione lub usunięte. Ograniczenia i integralność referencyjna. Ograniczenia, integralność danych i integralność referencyjna składają się na bezpieczeństwo i jakość gromadzonych w bazie danych. Ograniczenia. MoŜna zdefiniować ograniczenie sprawdzające poprawność wprowadzanych danych do tabeli poprzez określenie warunku sprawdzającego CHECK. Zmienimy strukturę tabeli PRACOWNICY przez dodanie ograniczenia zapobiegającego wprowadzeniu kwoty dodatku większej od kwoty pensji. ALTER TABLE PRACOWNICY ADD CHECK (PENSJA > DODATEK); Jeśli teraz wpiszemy polecenie dodające wiersz do tabeli PRACOWNICY, który będzie zawierał w kolumnie DODATEK wartość większą niŝ w kolumnie PENSJA, baza wygeneruje komunikat o błędzie, mówiący o naruszeniu ograniczenia sprawdzającego CHECK. WaŜne jest, Ŝe zmiany definicji tabeli powinny być wykonane w zasadzie na etapie definiowania schematu, przed wprowadzeniem jakichkolwiek danych do tabeli, a być moŝe do bazy.

12 Integralność danych klucz główny. Jak wiemy, kaŝda tabela bazy danych musi zawierać klucz główny. Klucz główny to kolumna lub grupa kolumn, która w sposób jednoznaczny identyfikuje wiersz w tabeli. Przykładowo, dla tabeli zawierającej dane o pracownikach kluczem głównym moŝe być kolumna o nazwie NR_PRACOWNIKA, która jednoznacznie określa danego pracownika. Kluczem głównym moŝe być NR_TELEFONU w tabeli przechowującej dane abonentów operatora telefonicznego. Przykładem klucza głównego z wielu kolumn moŝe być klucz z kolumn NUMER oraz ROK w tabeli przechowującej dane o wystawionych fakturach, gdzie kolumna NUMER określa numer faktury, a kolumna ROK określa rok wystawienia. Wartości z tych kolumn wzięte razem są róŝne w kaŝdym wierszu. Dla tabeli PRACOWNICY kluczem głównym moŝe być kolumna NR_PRACOWNIKA. Ustalenie klucza głównego (PRIMARY KEY) odbywa się podczas tworzenia tabeli. CREATE TABLE PRACOWNICY_TEST( NR_PRACOWNIKA CHAR(4) NOT NULL, IMIE VARCHAR(20) NOT NULL, NAZWISKO VARCHAR(20) NOT NULL, DATA_ZATR DATE NOT NULL, DZIAL VARCHAR(20) NOT NULL, STANOWISKO VARCHAR(20) NOT NULL, PENSJA DECIMAL(8,2), DODATEK DECIMAL(8,2), NR_MIEJSCA CHAR(6) NOT NULL, NR_TELEFONU CHAR(16), PRIMARY KEY (NR_PRACOWNIKA)); Jak wiemy, klucz zapobiega wstawieniu dwóch identycznych wierszy (musza się róŝnić przynajmniej wartością klucza). Próba wstawienia identycznego wiersza spowoduje powstanie błędu sygnalizowanego odpowiednim komunikatem. Integralność referencyjna klucz obcy. Kasujemy bazę danych poleceniem DROP DATABASE WYPAUT;. Zamykamy query analyzer. Wylogowujemy sie z serwera lokalnego Local Server. Zamykamy IBConsole. Na wszelki wypadek moŝemy sprawdzić, czy został usunięty plik bazy danych WYPAUT w folderze bin oprogramowania Interbase w Program Files. Tworzymy baze danych powtórnie, ale bez danych. Najpierw tworzymy pojemnik WYPAUT za pomocą opcji Create Database. (to moŝe potrwać kilka chwil), potem schemat za pomocą skryptów pozbawionych poleceń INSERT INTO. Tworzymy teŝ tabele PRACOWNICY_TEST: CREATE TABLE PRACOWNICY_TEST( NR_PRACOWNIKA CHAR(4) NOT NULL, IMIE VARCHAR(20) NOT NULL, NAZWISKO VARCHAR(20) NOT NULL, DATA_ZATR DATE NOT NULL, DZIAL VARCHAR(20) NOT NULL, STANOWISKO VARCHAR(20) NOT NULL, PENSJA DECIMAL(8,2), DODATEK DECIMAL(8,2), NR_MIEJSCA CHAR(6) NOT NULL, NR_TELEFONU CHAR(16), PRIMARY KEY (NR_PRACOWNIKA)); Jak wiemy, klucz obcy to jedna lub więcej kolumn odwołujących się do kolumny lub kolumn klucza głównego innej tabeli. Klucze obce są wykorzystywane do integralności referencyjnej w bazie danych. Tworząc klucz obcy definiujemy związek miedzy tabela klucza obcego i tabela klucza głównego. Związek taki powstaje podczas złączania kolumn takich samych typów danych z kaŝdej tabeli. Złączanie tabel przez odpowiednie kolumny chroni dane z tabeli klucza obcego przed osieroceniem, jakie mogłoby nastąpić w wyniku usunięcia

13 odpowiadających im danych z tabeli klucza głównego. Definiowanie kluczy obcych jest, zatem sposobem łączenia danych przechowywanych w róŝnych tabelach bazy danych. Przykładowo, jeśli w tabeli PRACOWNICY kluczem obcym jest kolumna NR_MIEJSCA, to kolumna czerpie wartości z tabeli MIEJSCA. Gdy odczytamy NR_MIEJSCA z tabeli PRACOWNICY, to moŝemy odwołać się do tabeli MIEJSCA i odczytać z niej pełny adres miejsca pracy pracownika. Tabela PRACOWNICY z kluczem obcym jest złączona z tabelą MIEJSCA z kluczem głównym, poprzez referencje do krotek z identycznymi wartościami klucza głównego jak te wartości, które ma klucz obcy. Związek klucza obcego chroni wiersze z tabeli PRACOWNICY przed osieroceniem na wypadek usunięcia jakiegokolwiek wiersza z tabeli MIEJSCA. Aby zapewnić taką ochronę, musimy zdefiniować klucze obce we wszystkich tabelach, które odwołują się do innych tabel. Taki związek występuje w naszych przykładowych tabelach PRACOWNICY oraz MIEJSCA. ALTER TABLE WYPOZYCZENIA ADD FOREIGN KEY (NR_PRACOW_WYP) REFERENCES PRACOWNICY_TEST (NR_PRACOWNIKA) ON DELETE CASCADE; To polecenie ustanawia klucz obcy w tabeli WYPOZYCZENIA na kolumnie NR_PRACOWNIKA_WYP. Przeglądając dalej to polecenie moŝna się dowiedzieć, Ŝe kolumna ta odwołuje się do kolumny NR_PRACOWNIKA. Słowo kluczowe ON DELETE CASCADE mówi, Ŝe usuwanie wiersza z tabeli PRACOWNICY_TEST pociąga za sobą usuniecie wiersza do niego się odwołującego (ściślej, wiersza partnerskiego względem referencji) w tabeli WYPOZYCZENIA. A oto jak sprawdzić, Ŝe krotki zostaną wykasowane kaskadowo. Najpierw wprowadzamy krotkę na stronę 1 : INSERT INTO PRACOWNICY_TEST VALUES ( 0020, WOJTEK, WOJTKOWSKI, , OBSLUGA KLIENTA, SPRZEDAWCA, 1200, 100, , ); Następnie wprowadzamy krotkę na stronę M : INSERT INTO WYPOZYCZENIA VALUES ( , , , 0020, NULL, , NULL, , NULL, 200, 100); Następnie usuwamy krotkę po stronie 1 : DELETE FROM PRACOWNICY_TEST WHERE NAZWISKO = WOJTKOWSKI ; Krotki zostały (kaskadowo) usunięte! Zarówno ta po stronie 1 w tabeli PRACOWNICY_TEST, jak i ta po stronie M w tabeli WYPOZYCZENIA. Przede wszystkim krotka z tabeli PRACOWNICY_TEST ( ze strony 1 ), a kaskadowo równieŝ krotki z nią powiązane referencyjnie po stronie M z tabeli WYPOZYCZENIA. Inaczej przebiega kasowanie krotek, gdy usuwamy krotkę po stronie M w tabeli WYPOZYCZENIA. A oto jak sprawdzić, Ŝe w tym przypadku zostaną wykasowane krotki jedynie z tabeli WYPOZYCZENIA po stronie M : Najpierw wprowadzamy krotkę na stronę 1 : INSERT INTO PRACOWNICY_TEST VALUES ( 0020, WOJTEK, WOJTKOWSKI, , OBSLUGA KLIENTA, SPRZEDAWCA, 1200, 100, , ); Następnie wprowadzamy krotkę na stronę M : INSERT INTO WYPOZYCZENIA VALUES ( , , , 0020, NULL, , NULL, , NULL, 200, 100);

14 Następnie usuwamy krotkę po stronie M : DELETE FROM WYPOZYCZENIA WHERE NR_PRACOW_WYP = 0020 ; Zostały usunięte jedynie krotki z tabeli WYPOZYCZENIA po stronie M! Obecnie zbadamy nieco inną definicję integralności referencyjnej. Jest ona oparta na definicji klucza obcego za pomocą polecenia ALTER TABLE WYPOZYCZENIA... ON DELETE NO ACTION; Znowu trzeba skasować bazę danych, utworzyć ja powtórnie, ale bez danych. Utworzyć tabele PRACOWNICY_TEST i wykonać podobne akcje, co przedtem. CREATE TABLE PRACOWNICY_TEST( NR_PRACOWNIKA CHAR(4) NOT NULL, IMIE VARCHAR(20) NOT NULL, NAZWISKO VARCHAR(20) NOT NULL, DATA_ZATR DATE NOT NULL, DZIAL VARCHAR(20) NOT NULL, STANOWISKO VARCHAR(20) NOT NULL, PENSJA DECIMAL(8,2), DODATEK DECIMAL(8,2), NR_MIEJSCA CHAR(6) NOT NULL, NR_TELEFONU CHAR(16), PRIMARY KEY (NR_PRACOWNIKA)); Oraz ze skryptu utworzyć tabelę WYPOZYCZENIA z pominięciem poleceń INSERT. Po utworzeniu tabel definiujemy w tabeli WYPOZYCZENIA klucz obcy w następujący sposób: UWAGA: NO ACTION jest w systemie InterBase odpowiednikiem słowa RESTRICT uŝywanego w definicjach więzów referencyjnych klucza obcego w innych systemach DBMS. ALTER TABLE WYPOZYCZENIA ADD FOREIGN KEY (NR_PRACOW_WYP) REFERENCES PRACOWNICY_TEST (NR_PRACOWNIKA) ON DELETE NO ACTION; Najpierw wprowadzamy krotkę na stronę 1 : INSERT INTO PRACOWNICY_TEST VALUES ( 0020, WOJTEK, WOJTKOWSKI, , OBSLUGA KLIENTA, SPRZEDAWCA, 1200, 100, , ); Następnie wprowadzamy krotkę na stronę M : INSERT INTO WYPOZYCZENIA VALUES ( , , , 0020, NULL, , NULL, , NULL, 200, 100); Następnie próbujemy usunąć krotkę po stronie 1 : DELETE FROM PRACOWNICY_TEST WHERE NAZWISKO = WOJTKOWSKI ; Krotki wcale nie zostaną usunięte! Ani po stronie 1, ani po stronie M. Próbujemy, zatem usunąć krotkę po stronie M : DELETE FROM WYPOZYCZENIA WHERE NR_PRACOW_WYP = 0020 ; Zostały usuniete jedynie krotki z tabeli WYPOZYCZENIA po stronie M! W tabeli po stronie 1 w tabeli PRACOWNICY_TEST krotka powiązana referencyjnie pozostała.

15 A oto opisy wszystkich moŝliwych akcji, jakie zostaną zainicjowane w chwili usuwania wiersza w tabeli zaleŝnej. Akcja RESTRICT (lub dla InterBase) NO ACTION CASCADE SET NULL Opis Ograniczone usuwanie, które mówi, Ŝe dopóty istnieją w tabeli WYPOZYCZENIA wiersze odwołujące się do usuwanego adresu w jakimś wierszu tabeli PRACOWNICY_TEST, wiersza z tabeli PRACOWNICY_TEST nie moŝna usunąć. NaleŜy najpierw usunąć wszystkie referencyjnie powiązane krotki z tabeli zaleŝnej WYPOZYCZENIA. Kaskadowe usuwanie mówi, Ŝe gdy usuwamy wiersze z tabeli PRACOWNICY_TEST, to są jednocześnie usuwane wszystkie wiersze z danymi o wypoŝyczeniach z tabeli zaleŝnej WYPOZYCZENIA o wypoŝyczeniach dokonanych przez usuwanego pracownika. Wstaw wartość NULL. Mówi, Ŝe moŝemy usunąć dane o pracowniku w tabeli PRACOWNICY_TEST. Wtedy w tabeli zaleŝnej WYPOZYCZENIA pozostaną krotki osierocone z wypoŝyczeniami realizowanymi przez pracowników, którzy te wypoŝyczenia realizowali, a którzy to pracownicy zostali skasowani. Naturalnie usuniecie krotek z tabeli zaleŝnej WYPOZYCZENIA będzie zawsze moŝliwe. Podsumowanie: 1. MoŜliwe jest zdefiniowanie ograniczenia sprawdzającego poprawność wpisywanych do tabeli danych poprzez określenie warunku sprawdzającego CHECK. 2. Integralność danych w tabeli zachowuje się dzięki kluczom głównym. 3. Klucze obce słuŝą do utrzymania integralności referencyjnej.

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Podstawy języka SQL. SQL Structured Query Languagestrukturalny Podstawy języka SQL SQL Structured Query Languagestrukturalny język zapytań DDL Język definicji danych (np. tworzenie tabel) DML Język manipulacji danych (np. tworzenie zapytań) DCL Język kontroli danych

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

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

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

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

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

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

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa Studia Podyplomowe dla Nauczycieli Bazy danych SQL Języki baz danych Interfejs DBMS składa się

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

SQL w praktyce. Koncepcja bazy danych

SQL w praktyce. Koncepcja bazy danych SQL w praktyce Koncepcja bazy danych W tej części przedstawiona zostanie koncepcja bazy danych, jej podstawowe elementy składowe jak tabele i widoki. Omówione zostaną również typy danych, definiowanie

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

Bazy danych 2. Wykład 4 Structured Query Language (SQL)

Bazy danych 2. Wykład 4 Structured Query Language (SQL) Bazy danych 2 Wykład 4 Structured Query Language (SQL) Cechy SQL W standardzie SQL wyróŝnia się dwie części: DDL (Data Definition Language) - język definiowania danych DML (Data Manipulation Language)

Bardziej szczegółowo

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Historia i standardy Podstawy relacyjności Typy danych DDL tabele, widoki, sekwencje zmiana struktury DML DQL Podstawy, złączenia,

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

Grupowanie i funkcje agregujące

Grupowanie i funkcje agregujące Grupowanie i funkcje agregujące Zadanie 1. Stwórz odpowiednią tabelę Test_agr i wprowadź odpowiednie rekordy tak, aby wynik zapytania SELECT AVG(kol) avg_all, AVG(DISTINCT kol) avg_dist, COUNT(*) count_gw,

Bardziej szczegółowo

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Laboratorium nr 4. Temat: SQL część II. Polecenia DML Laboratorium nr 4 Temat: SQL część II Polecenia DML DML DML (Data Manipulation Language) słuŝy do wykonywania operacji na danych do ich umieszczania w bazie, kasowania, przeglądania, zmiany. NajwaŜniejsze

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

Wykład 5 Charakterystyka języka SQL. Elementy obliczeń relacyjnych.

Wykład 5 Charakterystyka języka SQL. Elementy obliczeń relacyjnych. Wrocławska WyŜsza Szkoła Informatyki Stosowanej Wykład 5 Charakterystyka języka SQL. Elementy obliczeń relacyjnych. Dr inŝ. Krzysztof Pieczarka Email: krzysztof.pieczarka@up.wroc.pl Tradycyjne bazy danych

Bardziej szczegółowo

Widok Connections po utworzeniu połączenia. Obszar roboczy

Widok Connections po utworzeniu połączenia. Obszar roboczy Środowisko pracy 1. Baza danych: Oracle 12c - Serwer ELARA - Konta studenckie, dostęp także spoza uczelni - Konfiguracja: https://e.piotrowska.po.opole.pl/index.php?option=conf 2. Środowisko: SQL Developer

Bardziej szczegółowo

Rozdział 1. Jak korzystać z ćwiczeń

Rozdział 1. Jak korzystać z ćwiczeń Rozdział 1. Jak korzystać z ćwiczeń Ćwiczenia te są kierowane do osób, które chcą się nauczyć języka SQL i mam nadzieję, że w znacznym stopniu okażą się one pomocne. Do nauki języka SQL potrzebny jest

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

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L - p o d s t a w y DDL SQL (Data Definition Language) Jest to zbiór instrukcji i definicji danych, którym posługujemy się

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

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , , Celem ćwiczeń jest zaprojektowanie oraz utworzenie na serwerze bazy danych przechowującej informacje na temat danych kontaktowych. Celem jest również zapoznanie z podstawowymi zapytaniami języka SQL służącymi

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

Bazy danych. Polecenia SQL

Bazy danych. Polecenia SQL Bazy danych Baza danych, to miejsce przechowywania danych. Dane w bazie danych są podzielone na tabele. Tabele składają się ze ściśle określonych pól i rekordów. Każde pole w rekordzie ma ściśle ustalony

Bardziej szczegółowo

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota Laboratorium nr 3 1 Bazy Danych Instrukcja laboratoryjna Temat: Wprowadzenie do języka SQL, tworzenie, modyfikacja, wypełnianie tabel 3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota 1)

Bardziej szczegółowo

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion Autor: Joanna Karwowska SQL zapewnia obsługę: zapytań - wyszukiwanie danych w bazie, operowania danymi - wstawianie, modyfikowanie

Bardziej szczegółowo

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408 Bazy Danych SQL Podstawy języka III: powtórzenie Krzysztof Regulski WIMiIP, KISiM, regulski@agh.edu.pl B5, pok. 408 Modyfikacja schematu relacji Utwórz tabelę wg schematu: CREATE TABLE ODDZIAL ( numer_oddzialu

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazowy skrypt PHP do ćwiczeń z bazą MySQL: Utwórz skrypt o nazwie cw7.php zawierający następującą treść (uzupełniając go o właściwą nazwę uŝytkownika

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

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

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

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Wprowadzenie do projektowania i wykorzystania baz danych Relacje Wprowadzenie do projektowania i wykorzystania baz danych Relacje Katarzyna Klessa Dygresja nt. operatorów SELECT 2^2 SELECT 2^30 SELECT 50^50 2 Dygresja nt. operatorów SELECT 2^30 --Bitwise exclusive OR

Bardziej szczegółowo

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL 1 Podstawy relacyjnego modelu danych. 3h UWAGA: Temat zajęć jest typowo teoretyczny i stanowi wprowadzenie do zagadnień

Bardziej szczegółowo

Bazy danych SQL Server 2005

Bazy danych SQL Server 2005 Bazy danych SQL Server 2005 TSQL Michał Kuciapski Typ zadania: Podstawowe zapytania Select Zadanie 1: Wyświetl następujące informacje z bazy: A. 1. Wyświetl informacje o klientach: nazwa firmy, imie, nazwisko,

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 1 Wprowadzenie, podstawowe informacje o obsłudze

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Klucz podstawowy PRIMARY KEY Klucz kandydujący UNIQUE Klucz alternatywny - klucze kandydujące, które nie zostały wybrane na klucz podstawowy Klucz obcy - REFERENCES Tworząc tabelę,

Bardziej szczegółowo

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska SQL TECHNOLOGIE BAZ DANYCH Wykład 5: Język DDL i DML. SQL (ang. StructuredQueryLanguage) strukturalny język zapytań używany do tworzenia, modyfikowania relacyjnych baz danych oraz do umieszczania i pobierania

Bardziej szczegółowo

Bazy danych 10. SQL Widoki

Bazy danych 10. SQL Widoki Bazy danych 10. SQL Widoki P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Widoki, AKA Perspektywy W SQL tabela, która utworzono za pomoca zapytania CREATE TABLE, nazywa się tabela

Bardziej szczegółowo

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Marek Robak Wprowadzenie do języka SQL na przykładzie baz SQLite Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Tworzenie tabeli Pierwsza tabela W relacyjnych bazach danych jedna

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

Ref. 7 - Język SQL - polecenia DDL i DML

Ref. 7 - Język SQL - polecenia DDL i DML Ref. 7 - Język SQL - polecenia DDL i DML Wprowadzenie do języka SQL. Polecenia generujące strukturę bazy danych: CREATE, ALTER i DROP. Polecenia: wprowadzające dane do bazy - INSERT, modyfikujące zawartość

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

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

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie

Bardziej szczegółowo

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl Bazy danych Podstawy języka SQL Dr inż. Paweł Kasprowski pawel@kasprowski.pl Plan wykładu Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność danych Współbieżność

Bardziej szczegółowo

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

PRZESTRZENNE BAZY DANYCH WYKŁAD 2 PRZESTRZENNE BAZY DANYCH WYKŁAD 2 Baza danych to zbiór plików, które fizycznie przechowują dane oraz system, który nimi zarządza (DBMS, ang. Database Management System). Zadaniem DBMS jest prawidłowe przechowywanie

Bardziej szczegółowo

Przykładowa baza danych BIBLIOTEKA

Przykładowa baza danych BIBLIOTEKA Przykładowa baza danych BIBLIOTEKA 1. Opis problemu W ramach zajęć zostanie przedstawiony przykład prezentujący prosty system biblioteczny. System zawiera informację o czytelnikach oraz książkach dostępnych

Bardziej szczegółowo

Język SQL, zajęcia nr 1

Język SQL, zajęcia nr 1 Język SQL, zajęcia nr 1 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Najpopularniejsze

Bardziej szczegółowo

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE Wykład 9 Implementacja języka SQL w systemach baz danych Oracle manipulowanie danymi (DML), tworzenie, modyfikowanie i usuwanie obiektów bazy danych: tabel i perspektyw, więzów integralności, komentarzy

Bardziej szczegółowo

P o d s t a w y j ę z y k a S Q L

P o d s t a w y j ę z y k a S Q L P o d s t a w y j ę z y k a S Q L Adam Cakudis IFP UAM Użytkownicy System informatyczny Aplikacja Aplikacja Aplikacja System bazy danych System zarządzania baz ą danych Schemat Baza danych K o n c e p

Bardziej szczegółowo

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Ograniczenia integralnościowe, modyfikowanie struktury relacji, zarządzanie ograniczeniami. 1 Ograniczenia integralnościowe Służą do weryfikacji

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

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

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska SELECT [DISTINCT] FROM [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ] [ ] instrukcja może

Bardziej szczegółowo

Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL

Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL Bazy danych 2 Wykład 5 Structured Query Language (SQL) c.d. DDL Dziedzina (DOMAIN) Dziedzina to zdefiniowany przez uŝytkownika zbiór dopuszczalnych wartości definiowany niezaleŝnie od definicji tabel Składnia

Bardziej szczegółowo

Język SQL, zajęcia nr 2

Język SQL, zajęcia nr 2 Język SQL, zajęcia nr 2 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Funkcja agregująca

Bardziej szczegółowo

Bazy danych. dr inż. Arkadiusz Mirakowski

Bazy danych. dr inż. Arkadiusz Mirakowski Bazy danych dr inż. Arkadiusz Mirakowski Początek pracy z Transact SQL (T-SQL) 153.19.7.13,1401 jkowalski nr indeksu 2 Perspektywa - tabela tymczasowa - grupowanie Perspektywa (widok) Perspektywa (widok)

Bardziej szczegółowo

Bazy danych 6. Klucze obce. P. F. Góra

Bazy danych 6. Klucze obce. P. F. Góra Bazy danych 6. Klucze obce P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2018 Dygresja: Metody przechowywania tabel w MySQL Tabele w MySQL moga być przechowywane na kilka sposobów. Sposób ten (żargonowo:

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

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1 Podstawy języka SQL standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi Bazy danych s.5-1 Język SQL SQL (ang. Structured Query Language, strukturalny język zapytań) język

Bardziej szczegółowo

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE Język DML Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE Systemy Baz Danych, Hanna Kleban 1 INSERT Instrukcja INSERT dodawanie

Bardziej szczegółowo

Bazy danych 2. Wykład 3. Metodologia projektowania baz danych (projektowanie fizyczne)

Bazy danych 2. Wykład 3. Metodologia projektowania baz danych (projektowanie fizyczne) Bazy danych 2 Wykład 3 Metodologia projektowania baz danych (projektowanie fizyczne) Projektowanie fizyczne - przegląd krok po kroku 1. Wybór systemu zarządzania bazą danych (BDMS) 2. WyraŜenie logicznego

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

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych Plan wykładu Bazy danych Wykład 9: Przechodzenie od diagramów E/R do modelu relacyjnego. Definiowanie perspektyw. Diagramy E/R - powtórzenie Relacyjne bazy danych Od diagramów E/R do relacji SQL - perspektywy

Bardziej szczegółowo

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski BAZY DANYCH wprowadzenie do języka SQL Opracował: dr inż. Piotr Suchomski Wprowadzenie Język SQL używany jest do pracy z relacyjną bazą danych. Jest to język nieproceduralny, należący do grupy języków

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

Wykład 05 Bazy danych

Wykład 05 Bazy danych Wykład 05 Bazy danych Tabela składa się z: Kolumn Wierszy Wartości Nazwa Wartości Opis INT [UNSIGNED] -2^31..2^31-1 lub 0..2^32-1 Zwykłe liczby całkowite VARCHAR(n) n = długość [1-255] Łańcuch znaków o

Bardziej szczegółowo

Laboratorium Bazy danych SQL 2

Laboratorium Bazy danych SQL 2 Klauzula order by występuje jako ostatnia klauzula w poleceniu select, powoduje posortowanie wierszy będących wynikiem zapytania według wartości atrybutu w niej wskazanego. Domyślnie sortowanie jest według

Bardziej szczegółowo

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; Zestaw ćwiczeń1 Dzięki DDL (Data Definition Language) można operować na strukturach, w których dane są przechowywane czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy

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 4 (Asocjacje,

Bardziej szczegółowo

Kurs. Podstawy MySQL

Kurs. Podstawy MySQL Kurs Podstawy MySQL Krótkie info. Autorem kursu jest Piotr Jędrusik. Kurs jest własnością serwisu MySQL FAQ www.mysqlfaq.prv.pl, email: mysqlfaq@twister.pl. 1. Tworzymy bazę. Stworzymy pierwszą bazę o

Bardziej szczegółowo

1 Wstęp do modelu relacyjnego

1 Wstęp do modelu relacyjnego Plan wykładu Model relacyjny Obiekty relacyjne Integralność danych relacyjnych Algebra relacyjna 1 Wstęp do modelu relacyjnego Od tego się zaczęło... E. F. Codd, A Relational Model of Data for Large Shared

Bardziej szczegółowo

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1 Tworzenie tabel Tabela podstawowa struktura, na której zbudowana jest relacyjna baza danych. Jest to zbiór kolumn (atrybutów) o ustalonych właściwościach, w których przechowuje się dane. Dane te są reprezentowane

Bardziej szczegółowo

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych Informatyka sem. III studia inżynierskie Transport 2018/19 Lab 2 LAB 2 1. Backup bazy danych Tworzenie kopii (backup) bazy danych Odtwarzanie bazy z kopii (z backup u) 1. Pobieramy skrypt Restore 2. Pobieramy

Bardziej szczegółowo

ACESS- zadania z wykorzystaniem poleceń SQL

ACESS- zadania z wykorzystaniem poleceń SQL ACESS- zadania z wykorzystaniem poleceń SQL Dane są relacje o schematach: Pracownik ( (nr integer, nazwisko text(12), etat text(10), szef integer, pracuje_od date, placa_pod Currency, placa_dod Currency,

Bardziej szczegółowo

Krótki przegląd zapytań

Krótki przegląd zapytań Krótki przegląd zapytań NajwaŜniejszą rzeczą jest uświadomienie sobie, Ŝe baza danych to generalnie zestaw tabel a więc stosunkowo prostych obiektów, składających się z wierszy i kolumn. Wszelkie operatory,

Bardziej szczegółowo

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji 6. Język SQL Język SQL (Structured Query Language): - język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji - stworzony w IBM w latach 70-tych DML (Data Manipulation

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

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL, Mój projekt przedstawia bazę danych noclegów składającą się z 10 tabel. W projekcie wykorzystuje program LibreOffice Base do połączenia psql z graficznym interfejsem ( kilka formularzy przedstawiających

Bardziej szczegółowo

Ćwiczenie 3 funkcje agregujące

Ćwiczenie 3 funkcje agregujące Ćwiczenie 3 funkcje agregujące Funkcje agregujące, klauzule GROUP BY, HAVING Ćwiczenie 3 funkcje agregujące Celem ćwiczenia jest zaprezentowanie zagadnień dotyczących stosowania w zapytaniach języka SQL

Bardziej szczegółowo

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie Programowanie MSQL show databases; - pokazanie jakie bazy danych są dostępne na koncie show databases; - wyświetlenie wszystkich baz danych na serwerze create database nazwa; - za nazwa wstawiamy wybraną

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

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska SELECT [DISTINCT] FROM [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ] [ ] instrukcja może

Bardziej szczegółowo

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z Tworzenie tabeli Np. create table nazwa_tab( \\stworzenie tabeli Id numer(4) constraint PRAC_PK primary key, \\ustawiamy klucz podst. Nazwisko varchar2(30), \\typ tekstowy 30 znaków Kwota number(10,2)

Bardziej szczegółowo

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych. Dr inż. Paweł Kasprowski Plan wykładu Bazy danych Podstawy relacyjnego modelu danych Dr inż. Paweł Kasprowski pawel@kasprowski.pl Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność

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

LAB 3 (część 1 Projektu)

LAB 3 (część 1 Projektu) Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 3 (część 1 Projektu) Na zajęciach należy zaprojektować schemat bazy danych oraz przygotować dokument zawierający: Temat: Autor: 1. Opis 2.

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

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę: Bazy danych. Komunikacja z serwerem Aby połączyć się z serwerem i móc wykonywać czynności związane z obsługą baz, potrzebny jest program klienta. Razem z serwerem MySQL dostępny jest działający w wierszu

Bardziej szczegółowo

PROJEKT CZĘŚCIOWO FINANSOWANY PRZEZ UNIĘ EUROPEJSKĄ. Opis działania raportów w ClearQuest

PROJEKT CZĘŚCIOWO FINANSOWANY PRZEZ UNIĘ EUROPEJSKĄ. Opis działania raportów w ClearQuest PROJEKT CZĘŚCIOWO FINANSOWANY PRZEZ UNIĘ EUROPEJSKĄ Opis działania raportów w ClearQuest Historia zmian Data Wersja Opis Autor 2008.08.26 1.0 Utworzenie dokumentu. Wersja bazowa dokumentu. 2009.12.11 1.1

Bardziej szczegółowo

BAZA DANYCH SIECI HOTELI

BAZA DANYCH SIECI HOTELI Paulina Gogół s241906 BAZA DANYCH SIECI HOTELI Baza jest częścią systemu zarządzającego pewną siecią hoteli. Składa się z tabeli powiązanych ze sobą różnymi relacjami. Służy ona lepszemu zorganizowaniu

Bardziej szczegółowo

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro Informatyka (5) SQL dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro katpalik@pg.gda.pl katarzyna.palikowska@wilis.pg.gda.pl Język zapytań SQL Język deklaratywny (regułowy) - SQL, ProLog,

Bardziej szczegółowo

Aspekty aktywne baz danych

Aspekty aktywne baz danych Aspekty aktywne baz danych Aktywne aspekty baz danych Baza danych powinna zapewniać pewne własności i niezmienniki; Własności te powinny mogą być zapisane do bazy danych, a baza danych powinna zapewniać

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

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