BAZY DANYCH. PostgreSQL. Podstawowe wiadomości. Dodatek do instrukcji laboratoryjnej

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

Download "BAZY DANYCH. PostgreSQL. Podstawowe wiadomości. Dodatek do instrukcji laboratoryjnej"

Transkrypt

1 BAZY DANYCH PostgreSQL. Podstawowe wiadomości Dodatek do instrukcji laboratoryjnej

2 Spis treści 1. Połączenie z serwerem SSH, SFTP Podstawowe komendy i polecenia w systemie Linux Polecenia związane z użytkownikami, grupami, loginami i zamykaniem systemu: Polecenia związane z plikami i katalogami: Polecenia związane z katalogami: Polecenia związane z plikami: Polecenia związane z kopiowaniem i przenoszeniem, plików i katalogów: Polecenia związane z procesami: Polecenia związane z pomocą: Polecenia związane z kompresją i archiwizacją: SQL Relacyjny model danych Opis formalny modelu relacyjnego Domeny kontra typy danych Operacje na modelu relacyjnym Relacyjna algebra Relacyjny Calculus Tuple Relational Calculus Relacyjna Algebra - Relacyjny Calculus Język SQL Select Definicje danych Manipulowanie danymi Zbiory systemowe Wbudowany SQL Architektura PostgreSQL Rozpoczynamy Ustawienia środowiska Aplikacje klienckie PostgreSQL (skrypty) Aplikacje serwerowe PostgreSQL Zarządzanie bazą danych Tworzenie bazy danych Dostęp do bazy danych Usunięcie bazy danych Uruchamiamy Interactive Monitor (psql) Dostępne rozkazy języka SQL Opcje wywołania psql Podstawowe polecenia programu psql Typy danych Reguły Reguły typu SELECT Reguły typu INSERT Reguły typu UPDATE Reguły typu DELETE Funkcje i triggery Funkcje Funkcje SQL Funkcje PL/pgSQL Funkcje PL/PHP Triggery Dodawanie triggera Modyfikowanie triggera Usuwanie triggera Tworzenie funkcji uruchamianej triggerem Przykład użycia psql i języka zapytań Uruchamiamy monitor psql Zasady ogólne Tworzenie tabel Wstawianie danych do tabeli Przeglądanie tabeli Przekierowanie zapytań wybierających...44

3 8.7. Połączenia tabel Uaktualnianie danych Kasowanie danych Funkcje agregujące Zaawansowane właściwości Postgres SQL Dziedziczenie Wartości złożone Tablice Więcej zaawansowanych właściwości Wspomaganie tworzenia interfejsu BD Funkcje języka C - biblioteka libpq PQconnectdb PQfinish PQstatus PQexec PQresultStatus PQclear PQgetvalue Funkcje języka PHP pg_connect pg_pconnect pg_close pg_query pg_send_query pg_connection_status pg_result_status pg_fetch_array pg_fetch_assoc pg_fetch_row pg_fetch_object pg_num_rows pg_affected_rows...56

4 1. Połączenie z serwerem 1.1. SSH, SFTP SSH (Secure Shell) jest to program, który umożliwia logowanie do innych komputerów, kopiowanie plików między komputerami, zdalne wykonywanie poleceń na innych komputerach, łączenie sieci komputerowych za pomocą tzw. tuneli oraz przekazywanie (forwarding) środowiska graficznego X, czyli uruchamianie graficznych aplikacji na zdalnej maszynie i oglądanie ich na swoim komputerze. Logowanie do innych komputerów może być uwierzytelniane hasłem użytkownika, lub wygenerowanym kluczem. Cała transmisja danych pomiędzy komputerami jest szyfrowana. Program ten zastępuje mniej bezpieczne rlogin, rsh, rcp, rdist i telnet. Implementacja OpenSSH w SUSE składa się z dwóch części: klienta ssh, który umożliwia logowanie się na inne maszyny (np. putty) demona sshd, który umożliwia logowanie się do komputera, na którym jest uruchomiony SFTP (ang. Secure File Transfer Protocol) protokół pozbawiony wad, które posiada zwykły FTP. Przesyłając plik dzięki protokołowi FTP uzyskujemy dobre przepływności, ale nie zyskujemy bezpieczeństwa, nasze hasła nie są szyfrowane. Znaczną poprawę bezpieczeństwa przynosi protokół SFTP, który nie wymaga na danym hoście posiadania serwera FTP, wystarczy konto SSH, którego jest on rozszerzeniem, używa jego struktury oraz przez niego się łączy. Korzystanie z kluczy zwiększa bezpieczeństwo, ponieważ złamanie hasła jest prostsze niż uzyskanie dostępu do klucza prywatnego. Poza tym jeśli używasz wielu maszyn, na każdej innego hasła na konto roota czy też inne, ciężko zapamiętać je wszystkie. Kiedy korzystasz z kluczy musisz pamiętać tylko hasło do swojego klucza, albo wcale. PUTTY Pozwala na nawiązywanie połączeń zarówno z serwerami SSH, TELNET jak i XTERM. Program posiada opcję, która umożliwia zapisywanie sesji. Putty jest w stanie także połączyć się z serwerem SSH korzystając z klucza prywatnego, co nie wymaga podawania haseł. PSFTP Program dla nawiązania bezpiecznego połączenia FTP. Otwiera okno konsoli:! uruchomienie polecenia systemowego bye zakończenie sesji SFTP (również exit, quit) cd zmiana zdalnego folderu chmod zmiana atrybutów pliku close zamknięcie sesji bez zatrzymania programu PSFTP del usuń zdalne pliki (również rm) dir listuj zdalne pliki (również ls) get pobierz zdalny plik help wypisz informacje pomocnicze lcd zmiana lokalnego folderu lpwd podaj lokalną ścieżkę mget pobierz naraz wiele plików mv przesuń lub zmień nazwę plików w zdalnym folderze (również ren) open połącz z hostem put wyślij plik na serwer pwd podaj zdalną ścieżkę reget kontynuuj pobieranie plików reput kontynuuj wysyłanie plików rmdir usuń zdalne foldery Łączymy się z serwerem mamma.eti.pg.gda.pl ( ), używając przydzielonej nazwy użytkownika i hasła.

5 2. Podstawowe komendy i polecenia w systemie Linux 2.1. Polecenia związane z użytkownikami, grupami, loginami i zamykaniem systemu: shutdown -Przeznaczenie: zamykanie systemu -Parametry: shutdown [minuty] [informacja dla zalogowanych użytkowników] shutdown - natychmiastowe zamknięcie systemu shutdown now - j/w shutdown 0 (zero) - j/w shutdown 2 - system zamknie się za 2minuty shutdown 2 2minuty do wył. systemu - system zamknie się za 2minuty pokazując komunikat -Opis: to polecenie służy do zamykania systemu, jest możliwość ustawienia tej komendy, żeby zamknęła Linuxa za np. 2 min. powiadamiając zalogowanych użytkowników adduser -Przeznaczenie: dodawanie nowego użytkownika -Parametry:adduser [nazwa użytkownika] adduser jan - dodaje do komputera użytkownika o nazwie(imieniu) jan -Opis: jeśli jesteś zalogowany jako root masz prawo dostępu do tej komendy, jeśli nie jesteś musisz się najpierw przelogować na root'a -Patrz także: [passwd] [newgrp]. newgrp -Przeznaczenie: dodawanie nowej grupy lub przełączanie na inną -Parametry:newgrp [nazwa grupy] newgrp programmers - dodaje nową grupę o nazwie programmers -Opis: jeśli jesteś zalogowany jako root masz prawo dostępu do tworzenia grupy, jeśli nie masz prawo do zmieniania się między nimi -Patrz także: [adduser] passwd -Przeznaczenie: zmiana hasła -Parametry: passwd [użytkownik] adduser - zmienia hasło loginu na którym jesteś zalogowany adduser thomson - zmienia hasło użytkownika thomson, jeśli jesteś zalogowany jako root i nie musisz znać poprzedniego hasła zwykłego użytkownika -Opis: jeśli jesteś zalogowany jako root masz prawo dostępu do tej komendy, jeśli nie jesteś musisz się najpierw przelogować na root'a -Patrz także: [adduser] logout -Przeznaczenie: służy do wylogowania się -Parametry: brak -Opis: po wpisaniu polecenia widzimy napis do zalogowowania się -Patrz także: [adduser] who -Przeznaczenie: sprawdzamy kto jest aktualnie zalogowany -Parametry: who [parametry] who - pokazuje np: root tty01 Dec 13 12:42 who am i - pokazuje nam informacje o naszym loginie -Opis: możesz za pomocą tego polecenia sprawdzić kto jest zalogowany lub "kim" jesteś w systemie -Patrz także: [users] [w] [whoami] users -Przeznaczenie: pokazuje kto jest zalogowany -Parametry: brak -Opis: ta komenda jedynie pokazauje po przecinku nazwy użytkowników zalogowanych w systemie -Patrz także: [who] [w] [whoami]

6 w -Przeznaczenie: pokazuje kto jest zalogowany -Parametry: brak -Opis: po wpisaniu widzisz napisy : 8:43pm up 13 min, 3 users, load average: 0.07, 0.20, 0.20 USER TTY FROM IDLE JCPU PCPU WHAT ^^^a co poszczególne rzeczy oznaczają^^^ 8:43pm - bieżaca godzina (20:43) up 13 min - jak długo pracuje nasz system (13min) 3 users - ilu użytkowników pracuje w systemie load average - obciążenie systemu przez programy USER - identyfikator użytkownika TTY - nazwa terminalu FROM - informacja dodatkowa - godzina zalogowania IDLE - ile czasu upłynęło od ostatniego naciśnięcia klawisza JCPU - czas zużyty przez wszystkie programy na danym terminalu PCPU - oraz przez wszystkie programy w danym momencie WHAT - nazwa aktywnego procesu -Patrz także: [who] [whoami] [whoami] [users] whoami -Przeznaczenie: sprawdzamy nazwą loginu na którym się zalogowaliśmy -Parametry: brak -Opis: jeśli jesteś zalogowany jako root to wyświetla napis w następnej linijce "root" -Patrz także: [who] [w] [users] mesg -Przeznaczenie: zezwolenie lub nie na przyjmowania komunikatów -Parametry: adduser [Yn] mesg y - możesz otrzymywać wiadomości mesg n - nie możesz otrzymywać wiadomości -Opis: jest to możliwość ustawienia czy do ciebie mają przychodzić komunikaty -Patrz także: [write] [wall] [rwall] [ruser] write -Przeznaczenie: wysyłanie komunikatów -Parametry: write [użytkownik] [wiadomość] write pasternak wiadro - wysłanie wiadomości do użytkownika pasternak, u pasternaka pojawi się tekst: Message from silverstar!root on tty1 at 23:33 wiadro po polsku i ludzku: "Wiadomość od root wysłana o godz. 23:33" i teraz wiadomość: <wiadro>" -Opis: polecenie daje możliwość wysłania komunikaty do wybranej osoby -Patrz także: [mesg] [wall] [rwall] [ruser] wall -Przeznaczenie: wysyłanie komunikatów -Parametry: wall [plik tekstowy] wall mes.txt - wysłanie do wszystkich użytkowników wiadomości z pliku mes.txt -Opis: polecenie daje możliwość wysłania wiadomości do wszystkich osób -Patrz także: [mesg] [write] [rwall] [ruser] rwall -Przeznaczenie: wysyłanie komunikatów -Parametry: wall [plik tekstowy] wall mes.txt - wysłanie do wszystkich sieci wiadomości z pliku mes.txt -Opis: polecenie daje możliwość wysłania wiadomości do wszystkich sieci -Patrz także: [mesg] [write] [wall] [ruser] ruser -Przeznaczenie: wysyłanie komunikatów -Parametry: wall [plik tekstowy] wall mes.txt - wysłanie do wszystkich pracujących w systemie użytkowników wiadomości z pliku mes.txt -Opis: polecenie daje możliwość wysłania wiadomości do wszystkich sieci

7 -Patrz także: [mesg] [write] [wall] [ruser] talk -Przeznaczenie: interaktywna rozmowa -Parametry: talk talk parker - wtedy pokaże się wiadomość No connect yet - brak połączenia Waiting for your party to respond - czekanie na odp. Your party is not logged on - brak partnera w sieci Ringing your party again - ponowne wezwanie Connection established - nawiązano połączenie U odbiorcy pojawi napis Message from at 23:33 talk: connection requested by root talk: respond with: talk root Czyli jeśli adresat po odczytaniu tego napisze talk root, to połączenie zostanie nawiązane -Opis: możemy nawiązać interaktywny kontakt nie tylko z osoba z naszego komputera, ale tez innego z sieci -Patrz także: [mesg] [write] [wall] [rwall] [ruser] finger -Przeznaczenie: informacja o użytkownikach -Parametry: finger [user] finger - pokaże się nam okienko w rodzaju: LOGIN NAME TTY IDLE WHEN WHERE root root ttyp1 1.01s Jan 20:33 Unknow finger root - pokaże się nam okienko w rodzaju: Login name: root In real life: root Directory: /root Shell: /bin/bash On since Jan 27 20:33:11 on ttyp1 at Unknow No unread mail No Plan. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Jak widać dowiadujemy się jakie są prawdziwe personalia użytkownika (In real life), nazwy jego kartoteki prywatnej (Directory), rodzaj shell'a (Shell), kiedy się załogował (On since), lub kiedy ostatnio był w sieci (Last login), czy dostał/czytał ostatnią paczkę poczty -Opis: Są to szczegółowe informacje o użytkownikach -Patrz także: [who] su -Przeznaczenie: szybka zmiana loginu -Parametry: su [user] su root - zmieniamy się w użytkownika root po podaniu jego hasła -Opis: jeśli jesteśmy jako root nie trzeba podawać hasła -Patrz także: [logout] chmod -Przeznaczenie: zmieniamy parametry pliku -Parametry: chmod [u(user) g(grupa) o(właściciel) a(wszyscy)] [+-] [r(czytanie) w(pisanie) x(uruchamianie)] [nazwa pliku] chmod ugo-rw file - odbieramy prawa dostępu do czytania i modyfikowania pliku właścicielowi, grupie oraz użytkownikom chmod a-rw - j/w chmod a+r - wszyscy mają prawo do czytania pliku chmod a+rwx - wszyscy mają prawo do czytania, zapisywania i uruchamiania pliku -Parametry: chmod [liczba od 000 do 777][nazwa pliku] pierwsza liczba to użytkownik, druga liczba to grupa a trzecia pozostali 0 lub --- brak praw dostępu 1 lub --x wykonywanie

8 2 lub -w- czytanie 3 lub -wx zapis 4 lub r-- zapis i wykonywanie 5 lub r-x odczyt 6 lub rw- odczyt i zapis 7 lub rwx odczyt, zapis i wykonywanie chmod 777 file - dajemy pełny dostęp właścicielowi, grupie oraz użytkownikom chmod 000 file - zabieramy pełny dostęp właścicielowi, grupie oraz użytkownikom chmod a+r - wszyscy mają prawo do czytania pliku chmod a+rwx - wszyscy mają prawo do czytania, zapisywania i uruchamiania pliku -Opis: są to prawa dostępu dające lub nie prawa do zapisu, czytania i wykonywania, jakie są prawa można zobaczyć wpisując ls l: na początku jest -rwxr--r-- pierwszy znak oznacza plik, katalog..., jeśli zwykły plik to jest minus-, 9 następnych to prawa dostępu 3 pierwsze dla właściciela 3 następne dla grupy a 3 ostatnie dla wszystkich -Patrz także: [write] [wall] [rwall] [ruser] chown -Przeznaczenie: zmieniamy parametry pliku -Parametry: chmod [user] [plik] chown rex doc6 - rex jest właścicielom pliku doc6 chown rex doc* - rex jest właścicielom wszystkich plików w katalogu zaczynających się na doc np. doc5, doc98 chown rex??? - rex jest właścicielom wszystkich plików mających 3 litery np. doc, abc -Opis: jest to możliwość ustawienia właściciela pliku lub plików -Patrz także: [chmod] [chgrp] [newgrp] chgrp -Przeznaczenie: ustawiamy która grupa jest właścicielem pliku pliku -Parametry: chgrp [grupa] [plik] chgrp gracze spis - gracze są właścicielami pliku spis chgrp gracze * - gracze są właścicielami wszystkich plików -Opis: jest to możliwość ustawienia czy d ciebie mają przychodzić komunikaty -Patrz także: [write] [wall] [rwall] [ruser] 2.2. Polecenia związane z plikami i katalogami: Polecenia związane z katalogami: --ls ---Przeznaczenie: sprawdzanie zawartości katalogu ---Parametry: ls [parametr] [katalog] -- ls - zostaną wyświetlone pliki i katalogi jeden po drugim -- ls -a - zostaną wyświetlone wszystkie pliki (ukryte) i katalogi -- ls -l - zostaną wyświetlone pliki i katalogi w postaci listy ---ls -t - zostaną wyświetlone pliki i katalogi według daty, najpierw wyświetlane są pliki nowsze -- ls -r - zostaną wyświetlone pliki i katalogi według daty, najpierw wyświetlane są pliki starsze ---Opis: jest możliwość łączenia parametrów w postaci ls -al jednak źle będą rozpoznawane ls -a -l ---Patrz także: [dir] -- --dir ---Przeznaczenie: sprawdzanie zawartości katalogu ---Parametry: -brak- ---Opis: to samo po napisaniu ls (bez parametrów) ---Patrz także: [ls] -- --pwd ---Przeznaczenie: sprawdzanie w którym jesteśmy katalogu ---Parametry: -brak- ---Opis: po wpisaniu komendy pokazuje się odpowiedź ---Patrz także:

9 --cd ---Przeznaczenie: zmiana katalogu ---Parametry: ls [parametr lub katalog] -- cd.. - cofamy się o 1 katalog na dół -- cd../.. - cofamy się o 2 katalogi na dół -- cd gry - otwieramy katalog gry ---cd gry/tetris - otwieramy katalog tetris w katalogu gry -- cd../programy - otwieramy katalog programy w katalogu niżej -- cd /programy - otwieramy katalog programy na samym "dole" -- cd - otwieramy własny katalog ---Opis: jest to możliwość zmieniania aktualnego katalogu ---Patrz także: rmdir ---Przeznaczenie: usuwanie katalogu ---Parametry: rmdir [katalog(i)] -- rmdir kat1 - usunięcie katalogu kat1 -- rmdir kat1 kat2 - usunięcie katalogu kat1 i kat2 -- rmdir kat1/kat10 - usunięcie katalogu kat10 w katalogu kat1 ---Opis: jest możliwość usunięcia katalogu, UWAGA katalog musi być pusty ---Patrz także: [mkdir] -- --mkdir ---Przeznaczenie: sprawdzanie zawartości katalogu ---Parametry: mkdir [katalog] -- mkdir kat8 - zostanie utworzony katalog kat8 -- mkdir kat1 gry - zostanie utworzony katalog kat1 i gry -- mkdir gry/nethack - zostanie utworzony katalog gry a w nim utworzony katalog nethack ---Opis: jest możliwość utworzenia katalogu ---Patrz także: Polecenia związane z plikami: --cat ---Przeznaczenie: edytowanie tekstu ---Parametry: cat [parametr] [katalog] -- cat >nowy.w - wpisany tekst jest zapisany do pliku nowy.w -- cat nowy.w > dwa - plik nowy.w kopiujemy do pliku dwa ---cat dwa nowy.w >tr3 - plik nowy.w i dwa (złączony jeden po drugim) kopiujemy do tr3 -- cat tr3 > one > two > tree - plik tr3 kopiujemy do one, one do two, two do tree ---Opis: UWAGA przy plikach binarnych grozi ta metoda zawieszeniem terminala lub systemu ---Patrz także: rm ---Przeznaczenie: usuwanie pliku ---Parametry: rmdir [plik(i)] -- rmdir plk1 - usunięcie pliku kat1 -- rmdir plk1 plk2 - usunięcie pliku kat1 i kat2 ---Opis: jest możliwość usunięcia pliku ---Patrz także: [rmdir] Polecenia związane z kopiowaniem i przenoszeniem, plików i katalogów: --mv ---Przeznaczenie: przenoszenie plików ---Parametry: mv [plik] [cel] -- mv qfile /tmp - przenosimy plik qfile do katalogu /tmp -- mv f* kat - przenosimy wszystkie pliki zaczynające się literę f do katalogu kat ---Opis: za pomocą tej komendy możemy także zmienić nazwę

10 ---Patrz także: cp ---Przeznaczenie: kopiujemy plik ---Parametry: cp [plik/katalog] [cel] -- cp plk1 plik198 - kopiujemy zawartość plk1 do plik cp plk1 c - kopiujemy zawartość pliku plk1 do c ---Opis: jest możliwość kopiowania plików i katalogów ---Patrz także: [mv] [mvdir] -- --mvdir ---Przeznaczenie: przenoszenie katalogu ---Parametry: mvdir [katalog] [cel] -- mvdir homm3 gry - przenosimy katalog homm3 do gry -- mvdir kosz /tmp - przenosimy katalog kosz do /tmp ---Opis: to polecenie działa podobnie jak mv ---Patrz także: [mv] Polecenia związane z procesami: ps -Przeznaczenie: sprawdzanie komunikatów -Parametry: ps [parametry] ps - zotanie wyświetlone PID TTY STAT TIME COMMAND S 0:02 /bin/login -- root S 0:00 (mingetty) S 0:00 (mingetty) S 0:00 (mingetty) S 0:01 (bash) R 0:00 ps ps -aux - zotanie wyświetlone USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND bin ? S 20:32 0:00 (portmap) news ? S 20:33 0:00 /sbin/innd -p5 -r news ? S 20:33 0:00 (overchan) jasio S 20:33 0:01 /bin/login -- jasio jasio S 20:38 0:01 -bash asia S 20:39 0:01 /bin/login -- asia asia S 20:39 0:00 -bash root ? S 20:30 0:04 init [...] root R 20:53 0:00 ps -aux ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ USER - użytkownik procesu PID - numer identyfikacyjny procesu TTY - procesy związane z naszym terminalem STAT - status procesu o R - proces działający (ang. running) o T - proces zatrzymany (ang. stopped) o P - proces w stanie spoczynku (ang. page wait) o D - proces w stanie spoczynku (ang. disk wait) o S - proces w stanie spoczynku (ang. sleeping) o I - proces w stanie spoczynku (ang. idle) o Z - proces duch (ang. zombie), zakończył się ale nie rozliczył się jeszcze z procesami nadrzędnymi! TIME - jak długo działa proces COMMAND - nazwa programu, której odpowiada proces %CPU - ilość zaangażowania procesora w procesie %MEM - jaka cześć pamięci operacyjnej -Opis: jeśli chcesz zobaczyć kot jakie procesy wykonuje jest to polecenie dla ciebie -Patrz także: [kill]

11 kill -Przeznaczenie: zabijanie procesów -Parametry:kill [parametr] [PID] kill zabija proces z numerem 200 (PID) kill jeśli jest oporny i nie che się wyłączyć jest to prawie pewny sposób kill zabija wszystkie procesy kill !!!samobójstwo!!! -Opis: wyłączanie procesów -Patrz także: [ps] 2.4. Polecenia związane z pomocą: help -Przeznaczenie: wyświetla nam wszystkie polecenia w Linuxie -Parametry: -brak- -Opis: wyświetlenie komunikatów dostępnych w systemie -Patrz także: [man] man -Przeznaczenie: pokazuje nam pomoc do programu -Parametry: man [program] man mount - wyświetla pomoc do polecenia mount -Opis: pomoc do konkretnych programów -Patrz także: Polecenia związane z kompresją i archiwizacją: gzip -Przeznaczenie: kompresuje nam archiwum *.qz -Parametry: gunzip [parametry] [*.gz] gzip arx - tworzy nam zkompresowany plikp arx.gz gzip -d arx.gz - odkompresuje nam archiwum arx.gz -Opis: Można tylko kompresować jeden plik, w przypadku większej ilości trzeba użyć TAR'a -Patrz także: [tar] tar -Przeznaczenie: archiwizuje nam archiwum *.qz -Parametry: tar [parametry] [*.tar] tar -cvf plik* - archiwizuje nam wszystkie pliki do sk.tar tar -xvf - rozarchiwizuje nam wszystkie sk.tar -Opis: TAR nie kompresuje nam plików, żeby były z kompresowane trzeba użyć GZIP'a -Patrz także: SQL SQL stał się najpopularniejszym relacyjnym językiem zapytań. Nazwa jest skrótem od Structured Query Language (Strukturalny Język Zapytań). W 1974 r. Donald Chamberlin i inni zdefiniowali SEQUEL (Structured English Query Language). Po raz pierwszy został wprowadzony w prototypie IBM zwanym SEQUEL-XRM w r. W latach powstała poprawiona wersja SEQUEL nazwana SEQUEL/2, a nazwę tą następnie zmieniono na SQL. Nowy prototyp System R wprowadzony przez IBM w 1977 r. obejmował większą część SEQUEL/2 (teraz SQL) jak i wprowadzał wiele zmian do SQL. Sukces i akceptacja pierwszych użytkowników spowodował, że IBM rozpoczęła wprowadzanie pierwszych komercyjnych produktów opartych na technologii Systemu R, zawierających SQL. Przez nastepne lata IBM i inni producenci stworzyli produkty SQL'owe, takie jak: SQL/DS (IBM), DB2 (IBM), ORACLE (Oracle Corp.), DG/SQL (Data General Corp.), and SYBASE (Sybase Inc.). Obecnie SQL jest standardem oficjalnym. W 1982 r. Komitet Baz Danych X3H2 Amerykańskiego Instytutu Standardów ANSI (American National Standards Institute) przedstawił propozycję standardu języka relacyjnego, który zawierał dialekt IBM i został przyjęty w 1986 r. Rok później standard ten został również zaakceptowany przez Międzynarodową Organizację Standaryzacji ISO (International Organization for Standardization). Oryginalna wersja standardu jest nieformalnie nazywana SQL/86. W 1989 r. standard został rozszerzony i znów nieformalnie nazwany SQL/89.

12 Komitety ISO i ANSI przez wiele lat pracowały nad zdefiniowaniem bardziej rozbudowanej wersji standardu nazwanej SQL2 lub SQL/92. Ta wersja w 1992 r. została przyjęta jako: "International Standard ISO/IEC 9075:1992, Database Language SQL". Podczas pisania tego dokumentu trwały prace nad SQL3, który sprawi że SQL będzie językiem kompletnym, zawierającym np. możliwość tworzenia zapytań krzyżowych. Jest to bardzo złożone zadanie i dlatego nie jest znany czas zakończenia tych prac Relacyjny model danych Jak wspomniano wcześniej, SQL jest językiem relacyjnym. Oznacza to, że jest oparty na relacyjnym modelu danych, opublikowanym po raz pierwszy przez E.F.Codd'a w 1970 roku. Opis formalny modelu relacyjnego przedstawimy później (w rozdziale Opis formalny modelu relacyjnego) ale najpierw musimy spojrzeć na to z bardziej intuicyjnego punktu widzenia. Relacyjna baza danych jest bazą postrzeganą przez użytkowników jako zbiór tabel (i nic więcej tylko tabel). Tabela składa się z wierszy i kolumn, gdzie każdy wiersz reprezentuje rekord, a każda kolumna atrybuty rekordów zawartych w tabeli. Baza danych Suppliers (Dostawcy) i Parts (Produkty) przedstawia przykład bazy składającej się z trzech tabel. SUPPLIER (Dostawca) jest tabelą przechowującą numer (SNO), nazwisko (SNAME) i miasto (CITY) dostawcy. PART (Produkt) jest tabelą przechowującą numer (PNO), nazwę (PNAME) i cenę (PRICE) produktu. SELLS (Sprzedaż) przechowuje informacje o tym, który produkt (PNO) jest sprzedany przez którego dostawcę (SNO). Służy do połączenia pozostałych tabel wzajemnie. Przykład 1-1. Baza danych Dostawcy i Produkty SUPPLIER: SELLS: SNO SNAME CITY SNO PNO Smith London Jones Paris Adams Vienna Blake Rome PART: 4 3 PNO PNAME PRICE Screw 10 2 Nut 8 3 Bolt 15 4 Cam 25 Tabele PART i SUPPLIER są encjami a SELLS jest relacją między określonym produktem a dostawcą. Zanim zobaczymy relacje na tabelach przestudiujmy teorię modelu relacyjnego Opis formalny modelu relacyjnego Matematyczna koncepcja przedstawia model relacyjny jako czysto teoretyczną relację, która jest podzbiorem iloczynu kartezjańskiego z listy dziedzin. Stąd bierze się nazwa tego modelu. W rzeczywistości dziedzina, inaczej domena, jest po prostu zbiorem wartości. Na przykład, dziedziną jest zbiór liczb całkowitych lub zbiór łańcuchów znakowych o długości 20 znaków, czy też zbiór liczb rzeczywistych. Iloczyn kartezjański dziedzin D 1, D 2,... D k, zapisany jako D 1 D 2... D k jest zbiorem wszystkich krotek v 1, v 2,... v k, takich jak v 1 D 1, v 2 D 2,... v k D k. Na przykład, gdy mamy k=2, D 1 ={0,1} oraz D 2 ={a,b,c} wtedy D 1 D 2 jest {(0,a),(0,b),(0,c),(1,a),(1,b),(1,c)}. Relacją jest dowolny podzbiór iloczynu kartezjańskiego jednej lub wielu dziedzin: R D 1 D 2... D k. Na przykład {(0,a),(0,b),(1,a)} jest relacją; tzn. zbiorem D 1 D 2 wspomnianym wyżej. Elementy relacji są nazywane krotkami. Każda relacja jakiegoś iloczynu kartezjańskiego D 1 D 2... D k jest zbiorem krotek. Relacja może być przeglądana jak tabela (przypomnij sobie Bazę danych Dostawcy i Produkty, gdzie każda krotka jest przedstawiana jako wiersz, a każda kolumna jest częścią krotki). Nazwy kolumn nazywane atrybutami odgrywają główną rolę w definicji schematu relacji. Schematem relacji R jest dowolny zbiór atrybutów A 1, A 2,... A k. Jest dziedzina D i, dla każdego atrybutu A i, 1 i k, skąd brane są wartości atrybutów. Często schemat relacji zapisuje się w ten sposób: R(A 1, A 2,... A k ).

13 3.2.1 Domeny kontra typy danych W tym rozdziale często mówiliśmy o dziedzinach (domenach). Formalnie dziedzina jest zbiorem wartości (np. zbiór liczb całkowitych albo rzeczywistych). W terminologii systemów bazodanowych często mówi się o typach danych zamiast o domenach. Gdy zdefiniujemy tabelę możemy zdecydować jakie atrybuty ma zawierać oraz jakiego rodzaju dane będą przechowywane jako wartości opisowe. Dla przykładu wartości SNAME z tabeli SUPPLIER będą ciągami znaków, a SNO będzie przechowywać liczby całkowite. Zdefiniujemy to przypisując typ danych do każdego atrybutu. Typem SNAME będzie VARCHAR(20) (jest to SQL'owy typ dla stringów o długości 20), typem SNO będzie INTEREGER. Przypisując typ musimy także wybrać dziedzinę dla atrybutu. Domeną SNAME jest zbiór łańcuchów o dł. 20, domeną SNO jest zbiór liczb całkowitych Operacje na modelu relacyjnym W poprzednim rozdziale (Opis formalny modelu relacyjnego) poznaliśmy definicje matematyczne modelu relacyjnego. Już wiemy jak przy użyciu modelu relacyjnego są przechowywane dane, ale jeszcze nie wiemy co zrobić aby wyciągnąć informacje z bazy danych. Na przykład ktoś mógłby zapytać o nazwiska dostawców, którzy sprzedają produkt "Screw". W tym celu stosuje się dwa różne sposoby zapisu wyrażeń relacyjnych: Relacyjna algebra która jest zapisem algebraicznym, w którym zapytania są formułowane przy użyciu specjalnych operatorów. Relacyjny Calculus jest zapisem logicznym, polegającym na formułowaniu logicznych warunków, które muszą być spełnione przez zwracane krotki Relacyjna algebra Relacyjna algebra została przedstawiona przez E. F. Codd'a w 1972 r. Zawiera zbiór operatorów i relacji: SELECT (σ): wyciąga z relacji krotki spełniające warunek. Niech R będzie tabelą zawierającą atrybut A. σ A=a (R) = {t R, t(a) = a}, gdzie t oznacza krotkę z R, a t(a) oznacza wartość atrybutu A w krotce t. PROJECT (π): wyciąga żądane atrybuty (kolumny) z relacji. Niech R będzie relacją zawierającą atrybut X. π X (R) = {t(x), t R}, gdzie t(x) oznacza wartość atrybutu X krotki t. PRODUCT ( ): tworzy iloczyn kartezjański z dwóch relacji. Niech R tabelą o budowie k 1 i niech S będzie tabelą o budowie k 2. R S jest zbiorem wszystkich k 1 + k 2 krotek gdzie pierwsza k 1 forma krotki z R, a k 2 jest formą krotki z S. UNION ( ): tworzy teoretyczną unię (złączenie) dwóch tabel. Są tabele R i S (o tej samej budowie), złączenie R S jest zbiorem krotek z R lub S albo z obu tabel. INTERSECT ( ): tworzy teoretyczne skrzyżowanie dwóch tabel. Są dane tabele R i S, R S jest zbiorem krotek z R i S. Budowa tabel musi być taka sama. DIFFERENCE ( ): tworzy różnicę dwóch tabel. Niech R i S będą znów dwoma tabelami o tej samej budowie. R - S jest zbiorem krotek z R ale nie z S. JOIN ( ): łączy dwie tabele przez wspólne atrybuty. Niech R będzie tabelą z atrybutami A,B,C i niech S będzie tabelą z atrybutami C,D,E. Jest więc jeden atrybut wspólny dla obu relacji - C. R S = π R.A,R.B,R.C,S.D,S.E (σ R.C=S.C (R S)). Co to oznacza? Na początku liczymy iloczyn kartezjański R S. Potem wybieramy te krotki, których wartości dla wspólnego atrybutu C są równe. Otrzymujemy tabelę zawierającą atrybut C podwójnie, poprawiamy to usuwając powtórzone kolumny. Przykład 1-2. Inner Join Spójrzmy na tabele stworzone dla pokazania kroków niezbędnych do złączenia. Mamy następujące tabele: R: S: A B C C D E a b c d 7 8 9

14 Najpierw liczymy iloczyn kartezjański R S i otrzymujemy: R x S: A B R.C S.C D E a b c d a b c d a b c d Po selekcji σ R.C=S.C (R S) mamy: A B R.C S.C D E a b c d Aby usunąć duplikaty S.C przeprowadzamy następującą operację: π R.A,R.B,R.C,S.D,S.E (σr.c=s.c(r S)) i otrzymaliśmy: A B C D E a b c d DIVIDE ( ): Niech R będzie tabelą z atrybutami A, B, C, i D, a S niech będzie tabelą z atrybutami C i D. Później definiujemy dzielenie jako: R S = {t: t s S t r R lub tak t r (A,B)=t t r (C,D)=t s }, gdzie t r (x,y) oznacza krotkę tabeli R zawierającą tylko atrybuty x i y. Krotka t zawiera tylko atrybuty A i B relacji R. Dla danych tabel R: S: A B C D C D a b c d c d a b e f e f b c e f e d c d e d e f a b d e R S przedstawia się tak A B a b e d Przykład 1-3. Zapytanie wykorzystujące algebrę relacyjną. Operatory relacyjne formułujemy aby mieć możliwość wydobycia danych z bazy. Powróćmy teraz do przykładu z poprzedniego rozdziału (Operacje na modelu relacyjnym). Jeśli ktoś chciałby znać nazwy wszystkich dostawców, którzy sprzedają produkt Screw. Takie pytanie przy użyciu algebry relacyjnej może być przedstawione jako następująca operacja: π SUPPLIER.SNAME (σ PART.PNAME='Screw' (SUPPLIER SELLS PART)) Taką operację nazywamy zapytaniem (query). Jeśli zastosujemy powyższe zapytanie do naszych przykładowych tabel (Baza danych Dostawcy i Produkty) otrzymamy następujący wynik: SNAME Smith Adams

15 3.3.2 Relacyjny Calculus Relacyjny calculus jest oparty na logice pierwszego stopnia. Są dwa warianty relacyjnego calculusa: Domain Relational Calculus (DRC), gdzie wartości zmienne odpowiadają atrybutom krotek. Tuple Relational Calculus (TRC), gdzie wartości zmienne odpowiadają krotkom. My skupimy się na omówieniu wariantu TRC, który jest podstawą większości relacyjnych języków. Szersza dyskusja na ten temat znajduje się w Date, 1994 oraz Ullman, Tuple Relational Calculus Zapytania używające TRC mają następującą formę: x(a) : F(x) gdzie x jest zmienną krotką, A jest zbiorem atrybutów i F jest formułą. Wynikowa relacja zawiera wszystkie krotki t(a) zawarte w F(t). Jeśli chcemy odpowiedzi na zapytanie z przykładu Zapytanie z użyciem relacyjnej algebry stosując TRC formułujemy je nastepująco: {x(sname) : x SUPPLIER y SELLS z PART (y(sno)=x(sno) z(pno)=y(pno) z(pname)='screw')} Stosując to zapytanie na przykładzie Bazy danych Dostawcy i Produkty znów otrzymamy taki sam wynik jak w Zapytaniu z użyciem algebry relacyjnej Relacyjna Algebra - Relacyjny Calculus Relacyjna algebra i calculus mają te same możliwości wyrazu, tzn. wszystkie zapytania sformułowane przy pomocy relacyjnej algebry mogą być zapisane przy użyciu calculusa i na odwrót. Pierwszy udowodnił to E. F. Codd w 1972 r. Dowód ten jest oparty na algorytmie ("Algorytm redukcji Codd'a"), w którym rozstrzygający warunek relacyjnego calculusa można zredukować do równoznacznego warunku relacyjnej algebry. Więcej na ten temat w Date, 1994 oraz Ullman, Często mówi się, że języki oparte na calculusie są "wyższego poziomu", ponieważ algebra (częściowo) podaje kolejność operacji, podczas gdy calculus pozostawia kompilatorowi lub interpreterowi stworzenie najefektywniejszego porządku wykonania Język SQL Tak jak w przypadku większości nowoczesnych języków relacyjnych, w SQL'u można sformułować wszystkie zapytania zapisane z użyciem relacyjnej algebry lub calculusa. Istnieją jednak właściwości spoza zakresu relacyjnej algebry i calculusa. Poniżej przedstawiamy cechy SQL, które nie należą do relacyjnej algebry, ani calculusa: Operacje wstawiania, usuwania i modyfikacji danych. Operacje arytmetyczne: W SQL'u można np. stosować operacje arytmetyczne w porównaniach. A < B + 3. Zauważ, że + i inne operatory występują częściej w relacyjnej algebrze, niż w calculusie. Operacje przypisania i wyjścia. Można wyprowadzić na wyjście (ekran, plik) relację stworzoną w zapytaniu albo przypisać nazwę takiej relacji. Funkcje agregujące: Operacje takie jak średnia, suma, maksimum, itd. można stosować do kolumn aby otrzymać jedną liczbę Select Najczęściej używanym poleceniem SQL jest SELECT, używane do wybierania danych. Jego składnia jest następująca: SELECT [ ALL DISTINCT [ ON ( expression [,...] ) ] ] * expression [ AS output_name ] [,...] [ INTO [ TEMPORARY TEMP ] [ TABLE ] new_table ] [ FROM from_item [,...] ] [ WHERE condition ]

16 [ GROUP BY expression [,...] ] [ HAVING condition [,...] ] [ { UNION INTERSECT EXCEPT [ ALL ] } select ] [ ORDER BY expression [ ASC DESC USING operator ] [,...] ] [ FOR UPDATE [ OF class_name [,...] ] ] [ LIMIT { count ALL } [ { OFFSET, } start ]] Teraz zilustrujemy całą składnię polecenia SELECT na różnych przykładach. Tabele użyte w przykładach zdefiniowano w Bazie danych Dostawcy i Produkty Proste Select'y Podajemy najprostsze przykłady select'ów: Przykład 1-4. Proste zapytanie warunkowe Aby otrzymać wszystkie krotki z tabeli PART, gdzie atrybut PRICE jest większy od 10, sformułujemy takie zapytanie: SELECT * FROM PART WHERE PRICE > 10; i otrzymujemy tabelę: PNO PNAME PRICE Bolt 15 4 Cam 25 Znak "*" w poleceniu SELECT oznacza wszystkie kolumny w tabeli. Jeśli chcielibyśmy wydobyć tylko kolumny PNAME i PRICE z tabeli PART użyjemy takiej formy: SELECT PNAME, PRICE FROM PART WHERE PRICE > 10; W tym wypadku wynikiem będzie: PNAME PRICE Bolt 15 Cam 25 Zauważ, że SELECT odpowiada PROJECT'owi z relacyjnej algebry, a nie SELECT'owi (zobacz Relacyjna Algebra). Warunki w klauzuli WHERE mogą być połączone przy użyciu operatorów logicznych OR, AND lub NOT: SELECT PNAME, PRICE FROM PART WHERE PNAME = 'Bolt' AND (PRICE = 0 OR PRICE <= 15); otrzymamy wynik: PNAME PRICE Bolt 15 Operatory arytmetyczne mogą być używane w liście atrybutów oraz w klauzuli WHERE. Na przykład, jeśli chcemy znać koszt dwóch sztuk produktu, należy zapytać tak: SELECT PNAME, PRICE * 2 AS DOUBLE FROM PART WHERE PRICE * 2 < 50;

17 i mamy: PNAME DOUBLE Screw 20 Nut 16 Bolt 30 Zauważ, że słowo DOUBLE po słowie kluczowym AS jest nowym tytułem drugiej kolumny. Ten sposób może być użyty dla każdego elementu listy pól do przypisania nowej nazwy dla wynikowej kolumny. Taka nowa nazwa jest często nazywana aliasem. Alias nie może być używany w dalszej części zapytania Złączenia Następny przykład pokazuje sposób realizacji złączeń w SQL'u. Aby połączyć trzy tabele SUPPLIER, PART i SELLS wg pól wspólnych formułujemy następujące zapytanie: SELECT S.SNAME, P.PNAME FROM SUPPLIER S, PART P, SELLS SE WHERE S.SNO = SE.SNO AND P.PNO = SE.PNO; otrzymujemy następującą tabelę: SNAME PNAME Smith Screw Smith Nut Jones Cam Adams Screw Adams Bolt Blake Nut Blake Bolt Blake Cam W klauzuli FROM wprowadzamy alias dla każdej relacji, ponieważ istnieją atrybuty o takich samych nazwach. Teraz możemy rozróżnić wspólne atrybuty poprzedzając je nazwą aliasu i oddzielając kropką. Złączenie przeprowadzane jest w taki sam sposób, jak pokazano w Złączeniu wewnętrznym. Najpierw powstaje iloczyn kartezjański SUPPLIER PART SELLS. Później wybierane są tylko te krotki, które spełniają warunek (np. atrybuty o takich samych wartościach). Innym sposobem na przeprowadzenie złączenia jest użycie składni JOIN: SELECT sname, pname FROM supplier JOIN sells USING (sno) JOIN part USING (pno); daje to taki wynik: SNAME PNAME Smith Screw Adams Screw Smith Nut Blake Nut Adams Bolt Blake Bolt Jones Cam Blake Cam (8 rows) Tabela, powstała przy użyciu składni JOIN, zawiera pola podane w klauzuli FROM, a przed WHERE, GROUP BY, albo HAVING. Inne odwołania do tabel, tj. nazwy tabel lub inne klauzule JOIN, mogą być zawarte w klauzuli FROM; należy je rozdzielić przecinkami. Logicznie złączone tabele są takie same jak inne tabele z klauzuli FROM. Istnieją dwa główne typy złączeń SQL - Złączenie krzyżowe (bezwarunkowe) i złączenia warunkowe. Złączenie krzyżowe { T1 } CROSS JOIN { T2 }

18 Złączenie krzyżowe bierze dwie tabele T1 i T2 mające N i M osobnych wierszy i zwraca złączoną tabelę zawierającą N M wszystkich złączonych wierszy. Dla każdego wiersza R1 z T1, każdy wiersz R2 z T2 jest łączony z R1 i daje w wyniku wiersz JR złączonej tabeli zawierający wszystkie pola z R1 i R2. Złączenie krzyżowe CROSS JOIN jest równoważne poleceniu INNER JOIN ON TRUE. Złączenia warunkowe {T1} [NATURAL] [INNER {LEFT RIGHT FULL} [OUTER]] JOIN { T2 } {ON search_condition USING (join_column_list)} Złączenie warunkowe wprowadza warunki złączenia przez podanie klauzuli NATURAL, ON albo USING. Klauzula ON zawiera warunki złączenia (search_condition) i działa tak jak klauzula WHERE. USING zawiera listę nazw kolumn (oddzielonych przecinkami), które zostaną użyte do złączenia. NATURAL jest skrótem odpowiadającym USING z nazwami wszystkich kolumn z obu tabel. Działaniem ubocznym USING i NATURAL jest zwracanie tylko jednej kopii każdej łączonej kolumny (porównaj to z definicją JOIN z relacyjnej algebry, podaną wcześniej). T1 [ INNER ] JOIN T2 Dla każdego wiersza R1 z T1, złączona tabela ma wiersz dla każdego wiersza z T2, który spełnia warunki złączenia z R1. Uwaga: Słowa INNER i OUTER są opcjonalne dla wszystkich złączeń JOIN. INNER jest domyślne. LEFT, RIGHT oraz FULL dotyczą OUTER JOIN. T1 LEFT [ OUTER ] JOIN T2 Najpierw wykonuje się INNER JOIN. Później dla każdego wiersza z T1, który nie spełnia warunków złączenia z żadnym wierszem z T2, zwracany jest dodatkowo wiersz zawierający wartości NULL w kolumnach z T2. Uwaga: Złączona tabela bezwarunkowo zawiera wiersz dla każdego wiersza z T1. T1 RIGHT [ OUTER ] JOIN T2 Najpierw wykonuje się INNER JOIN. Później dla każdego wiersza z T2, który nie spełnia warunków złączenia z żadnym wierszem z T1, zwracany jest dodatkowo wiersz zawierający wartości NULL w kolumnach z T1. Uwaga: Złączona tabela bezwarunkowo zawiera wiersz dla każdego wiersza z T2. T1 FULL [ OUTER ] JOIN T2 Najpierw wykonuje się INNER JOIN. Później dla każdego wiersza z T1, który nie spełnia warunków złączenia z żadnym wierszem z T2, zwracany jest dodatkowo wiersz z polami NULL w kolumnach z T2. Dodatkowo dla każdego wiersza z T2, który nie spełnia warunków złączenia z żadnym wierszem z T1, zwracany jest wiersz zawierający wartości NULL w kolumnach z T1. Uwaga: Złączona tabela bezwarunkowo zawiera wiersz dla każdego wiersza z T2 oraz dla każdego wiersza z T1. Złączenia wszystkich typów mogą być łączone lub zagnieżdżone, w taki sposób, że jedno lub oba z T 1 i T 2 może być złączoną tabelą. W celu kontroli kolejności wykonania złączeń otacza się je nawiasami, w przeciwnym wypadku są wykonywane od lewej do prawej strony Funkcje (operatory) agregujące SQL wprowadza funkcje agregujące (tj. AVG, COUNT, SUM, MIN, MAX). Argumentem funkcji jest wyrażenie wykonywane dla każdego wiersza, który spełnia warunki klauzuli WHERE, więc obliczenia są wykonywane na przefiltrowanym zbiorze. Zazwyczaj funkcje zwracają pojedynczy rezultat dla całego polecenia SELECT, ale gdy użyto w zapytaniu grupowania, wtedy obliczenia wykonywane są oddzielnie dla każdej grupy (patrz następny punkt). Przykład 1-5. Funkcje agregujące Jeśli chcemy znać średnią cenę wszystkich produktów z tabeli PART użyjemy następującego zapytania: SELECT AVG(PRICE) AS AVG_PRICE FROM PART; Wynik: AVG_PRICE Jeśli chcemy liczbę części zapiszemy to tak: SELECT COUNT(PNO) FROM PART;

19 i otrzymamy: COUNT Funkcje agregujące i grupowanie SQL pozwala podzielić krotki w tabeli na grupy. Wtedy funkcje agregujące można stosować osobno dla każdej grupy. Grupowania dokonuje się przy pomocy klauzuli GROUP BY z podaniem atrybutów definiujących grupy. Jeśli mamy GROUP BY A1, &tdot;, Ak dzielimy relację na grupy tak, że krotki są w tej samej grupie wtedy i tylko wtedy, gdy pasują do wszystkich atrybutów A1, &tdot;, Ak. Przykład 1-6. Funkcje agregujące Jeśli chcemy znać liczbę produktów sprzedanych przez każdego dostawcę, zapisujemy zapytanie: SELECT S.SNO, S.SNAME, COUNT(SE.PNO) FROM SUPPLIER S, SELLS SE WHERE S.SNO = SE.SNO GROUP BY S.SNO, S.SNAME; i otrzymujemy: SNO SNAME COUNT Smith 2 2 Jones 1 3 Adams 2 4 Blake 3 Teraz zobaczmy jak to się dzieje. Najpierw następuje złączenie tabel SUPPLIER i SELLS: S.SNO S.SNAME SE.PNO Smith 1 1 Smith 2 2 Jones 4 3 Adams 1 3 Adams 3 4 Blake 2 4 Blake 3 4 Blake 4 następnie grupowanie przez umieszczenie razem krotek z pasującymi atrybutami S.SNO i S.SNAME: S.SNO S.SNAME SE.PNO Smith Jones Adams Blake W naszym przykładzie mamy cztery grupy i teraz możemy zastosować funkcję COUNT dla każdej grupy otrzymując rezultat podany wcześniej. Zauważ, że zapytanie z GROUP BY i funkcjami agregującymi ma sens, gdy odwołujemy się do atrybutów grupowanych. Inne atrybuty mogą być użyte tylko wewnątrz argumentu funkcji. Inaczej nie będzie unikalnej wartości do połączenia z innymi atrybutami.

20 Nie ma sensu użycie funkcji na przykład w takiej formie AVG(MAX(sno)), ponieważ SELECT robi tylko jeden przebieg grupowania i agregacji. Można otrzymać wynik tego typu przy użyciu tabeli tymczasowej lub podzapytania z pierwszym stopniem agregacji w klauzuli WHERE Having Klauzula HAVING działa podobnie do WHERE i jest używana do wybrania tylko grup spełniających warunek przy HAVING. Właściwie WHERE odrzuca niepotrzebne wiersze przed grupowaniem i agregacją, podczas gdy HAVING robi to po grupowaniu. Dlatego WHERE nie może odnosić się do rezultatu funkcji agregujących. Z drugiej strony nie ma sensu zapis warunku HAVING, który nie dotyczy funkcji agregujących. W takim wypadku lepiej zastosować WHERE. Przykład 1-7. Having Jeśli chcemy tylko tych dostawców, którzy sprzedali więcej niż jeden produkt, użyjemy zapytania: SELECT S.SNO, S.SNAME, COUNT(SE.PNO) FROM SUPPLIER S, SELLS SE WHERE S.SNO = SE.SNO GROUP BY S.SNO, S.SNAME HAVING COUNT(SE.PNO) > 1; i otrzymamy: SNO SNAME COUNT Smith 2 3 Adams 2 4 Blake Podzapytania W klauzulach WHERE oraz HAVING możliwe jest stosowanie podzapytań w miejsce jakichś wartości. W tym wypadku najpierw wykonywane jest podzapytanie. Użycie podzapytań rozszerza możliwości SQL. Przykład 1-8. Podzapytanie Jeśli chcemy znać wszystkie produkty kosztujące więcej od produktu o nazwie 'Screw', użyjmy zapytania: SELECT * FROM PART WHERE PRICE > (SELECT PRICE FROM PART WHERE PNAME='Screw'); Rezultat wygląda następująco: PNO PNAME PRICE Bolt 15 4 Cam 25 Patrząc na powyższe zapytanie zwrócimy uwagę na dwukrotne wystąpienie słowa SELECT. Pierwszy raz na początku zapytania - nazwijmy je zewnętrznym SELECT - i jeszcze raz w klauzuli WHERE, które rozpoczyna zapytanie zagnieżdżone - nazwijmy je wewnętrznym SELECT. Dla każdej krotki zewnętrznego SELECT'a wykonywany jest wewnętrzny SELECT. Po każdym wykonaniu znamy cenę produktu o nazwie 'Screw' i możemy sprawdzić czy nie jest większa od aktualnego produktu. (W tym wypadku wewnętrzne zapytanie jest wykonywane tylko raz, ponieważ nie jest zależne od stanu zapytania zewnętrznego). Jeśli chcemy poznać wszystkich dostawców, którzy nie sprzedają żadnego produktu (np. żeby usunąć ich z bazy) użyjemy : SELECT * FROM SUPPLIER S WHERE NOT EXISTS (SELECT * FROM SELLS SE WHERE SE.SNO = S.SNO); Nasze zapytanie nie zwróci nic, bo w naszej bazie dostawcy sprzedają co najmniej jeden produkt. Zauważ, że użyliśmy S.SNO z zewnętrznego SELECT w klauzuli WHERE wewnętrznego zapytania. W tym wypadku,

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

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

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

Usługi sieciowe systemu Linux

Usługi sieciowe systemu Linux Usługi sieciowe systemu Linux 1. Serwer WWW Najpopularniejszym serwerem WWW jest Apache, dostępny dla wielu platform i rozprowadzany w pakietach httpd. Serwer Apache bardzo często jest wykorzystywany do

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

Ć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

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

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

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

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

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

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

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł

Bardziej szczegółowo

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski Bazy danych Andrzej Grzybowski Instytut Fizyki, Uniwersytet Śląski Wykład 5 Strukturalny język zapytań (SQL - Structured Query Language) Algebraiczny rodowód podstawowe działania w przykładach Bazy danych.

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

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

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

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

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix Wydział Zarządzania i Modelowania Komputerowego Specjalność: Informatyka Stosowana Rok III Semestr V 1. Logowanie w systemie Unix. Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu

Bardziej szczegółowo

Język SQL podstawy zapytań

Język SQL podstawy zapytań Język SQL podstawy zapytań 1 Plan prezentacji 1. Krótka historia języka SQL 2. Cechy języka SQL 3. Przykładowa baza danych 4. Podstawy zapytań - operacje na modelu relacyjnym 5. Polecenie SELECT zapytania

Bardziej szczegółowo

QUERY język zapytań do tworzenia raportów w AS/400

QUERY język zapytań do tworzenia raportów w AS/400 QUERY język zapytań do tworzenia raportów w AS/400 Dariusz Bober Katedra Informatyki Politechniki Lubelskiej Streszczenie: W artykule przedstawiony został język QUERY, standardowe narzędzie pracy administratora

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

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

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście. Rodzaje triggerów Triggery DML na tabelach INSERT, UPDATE, DELETE Triggery na widokach INSTEAD OF Triggery DDL CREATE, ALTER, DROP Triggery na bazie danych SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN

Bardziej szczegółowo

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

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1 Bazy danych Wykład IV SQL - wprowadzenie Copyrights by Arkadiusz Rzucidło 1 Czym jest SQL Język zapytań deklaratywny dostęp do danych Składnia łatwa i naturalna Standardowe narzędzie dostępu do wielu różnych

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

Instrukcja do panelu administracyjnego. do zarządzania kontem FTP WebAs. www.poczta.greenlemon.pl

Instrukcja do panelu administracyjnego. do zarządzania kontem FTP WebAs. www.poczta.greenlemon.pl Instrukcja do panelu administracyjnego do zarządzania kontem FTP WebAs www.poczta.greenlemon.pl Opracowanie: Agencja Mediów Interaktywnych GREEN LEMON Spis treści 1.Wstęp 2.Konfiguracja 3.Konto FTP 4.Domeny

Bardziej szczegółowo

Bazy danych - wykład wstępny

Bazy danych - wykład wstępny Bazy danych - wykład wstępny Wykład: baza danych, modele, hierarchiczny, sieciowy, relacyjny, obiektowy, schemat logiczny, tabela, kwerenda, SQL, rekord, krotka, pole, atrybut, klucz podstawowy, relacja,

Bardziej szczegółowo

Wstęp wprowadzający do laboratorium 2. mgr inż. Rafał Grycuk

Wstęp wprowadzający do laboratorium 2. mgr inż. Rafał Grycuk Wstęp wprowadzający do laboratorium 2 mgr inż. Rafał Grycuk Plan prezentacji 1. Czym jest T-SQL i czym się różni od standardu SQL 2. Typy zapytań 3. Zapytanie typu SELECT 4. Słowo o indeksach T-SQL (1)

Bardziej szczegółowo

Pracownia Komputerowa wyk ad II

Pracownia Komputerowa wyk ad II Pracownia Komputerowa wykad II dr Magdalena Posiadaa-Zezula Magdalena.Posiadala@fuw.edu.pl http://www.fuw.edu.pl/~mposiada Magdalena.Posiadala@fuw.edu.pl 1 Systemy operacyjne Windows np. Windows 8. Systemy

Bardziej szczegółowo

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych

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 operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier

Systemy operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier Systemy operacyjne Instrukcja laboratoryjna Ćwiczenie 1: Polecenia systemu UNIX/LINUX Opracował: dr inż. Piotr Szpryngier Olsztyn 2009 1 Wprowadzenie. Cel zajęć praktycznych. Wymagania stawiane studentom

Bardziej szczegółowo

SZKOLENIE: Administrator baz danych. Cel szkolenia

SZKOLENIE: Administrator baz danych. Cel szkolenia SZKOLENIE: Administrator baz danych. Cel szkolenia Kurs Administrator baz danych skierowany jest przede wszystkim do osób zamierzających rozwijać umiejętności w zakresie administrowania bazami danych.

Bardziej szczegółowo

Linux cz.3: polecenia systemowe, ćwiczenia

Linux cz.3: polecenia systemowe, ćwiczenia Linux cz.3: polecenia systemowe, ćwiczenia Wykład: polecenia terminala, manualia systemowe, uprawnienia, kompresja, archiwizacja, ukrywanie plików, sudo su, ps, kill, chmod, chown, tar, gzip, whoami, ls,

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

Szkolenie Oracle SQL podstawy. Terminy. 15 17 lutego 2010 First Minute! 1100zł!

Szkolenie Oracle SQL podstawy. Terminy. 15 17 lutego 2010 First Minute! 1100zł! Szkolenie Oracle SQL podstawy Terminy 15 17 lutego 2010 First Minute! 1100zł! Opis szkolenia Baza danych Oracle od dawna cieszy się zasłużona sławą wśród informatyków. Jej wydajność, szybkość działania

Bardziej szczegółowo

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy) Procesy i shell. Polecenia ps, sleep, exit, jobs, bg, fg, top, kill, bash, tcsh, which, type, whereis, touch. Metaznak & i >>. Dowiązania miękkie i twarde. Proces jest programem, który jest wykonywany

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wprowadzenie Definiowanie wyzwalaczy DML Metadane wyzwalaczy Inne zagadnienia, tabele mutujące Wyzwalacze INSTEAD OF Wyzwalacze

Bardziej szczegółowo

Konsola Linux. autor: Mariusz Barnaś

Konsola Linux. autor: Mariusz Barnaś Konsola Linux autor: Mariusz Barnaś Wstęp Pierwsze uruchomienie Operacje na plikach Poruszanie się po katalogach Tworzenie plików i katalogów Wypisanie zawartości katalogu Dowiązania między plikami Łączenie

Bardziej szczegółowo

Wstęp. Skąd pobrać program do obsługi FTP? Logowanie

Wstęp. Skąd pobrać program do obsługi FTP? Logowanie Wstęp FTP - (ang. File Transfer Protocol - protokół transmisji danych) jest to protokół typu klient-serwer, który umożliwia przesyłanie plików na serwer, oraz z serwera poprzez program klienta FTP. Dzięki

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

Bazy danych i usługi sieciowe

Bazy danych i usługi sieciowe Bazy danych i usługi sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2014 1 / 16 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_danych_i_usługi_sieciowe_-_2014z

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

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

I. Interfejs użytkownika.

I. Interfejs użytkownika. Ćwiczenia z użytkowania systemu MFG/PRO 1 I. Interfejs użytkownika. MFG/PRO w wersji eb2 umożliwia wybór użytkownikowi jednego z trzech dostępnych interfejsów graficznych: a) tekstowego (wybór z menu:

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

Uzupełnij pola tabeli zgodnie z przykładem poniżej,

Uzupełnij pola tabeli zgodnie z przykładem poniżej, 1. Wykonaj bazę danych biblioteki szkolnej, Otwórz MS Access a następnie z menu plik wybierz przycisk nowy, w oknie nowy plik wybieramy pusta baza danych nadaj jej nazwę Biblioteka i wybierz miejsce w

Bardziej szczegółowo

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech BAZY DANYCH Obsługa bazy z poziomu języka PHP opracowanie: Michał Lech Plan wykładu 1. PHP - co to jest? 2. Bazy danych obsługiwane przez PHP 3. Podstawowe polecenia 4. Sesje 5. Przykład - dodawanie towaru

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. Informacje podstawowe

Bazy danych. Informacje podstawowe Bazy danych Zagadnienia Podstawy relacyjnych baz danych SQL Języki manipulowania w relacjach Aspekty aktywne baz danych Aspekty systemowe baz danych Projektowanie baz danych Zależności funkcyjne i postacie

Bardziej szczegółowo

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi 1 Rozdział 1 Wprowadzenie do PHP i MySQL Opis: W tym rozdziale kursanci poznają szczegółową charakterystykę

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

NARZĘDZIA WIZUALIZACJI

NARZĘDZIA WIZUALIZACJI Kurs interaktywnej komunikacji wizualnej NARZĘDZIA WIZUALIZACJI Andrzej Łachwa andrzej.lachwa@uj.edu.pl 3 4/8 Zobacz film: http://www.ted.com/talks/david_mccandless_the_beauty_of_dat a_visualization.html

Bardziej szczegółowo

Ustalanie dostępu do plików - Windows XP Home/Professional

Ustalanie dostępu do plików - Windows XP Home/Professional Ustalanie dostępu do plików - Windows XP Home/Professional Aby edytować atrybuty dostępu do plikow/ katalogow w systemie plików NTFS wpierw sprawdź czy jest Wyłączone proste udostępnianie czyli przejdź

Bardziej szczegółowo

Projektowanie systemów baz danych

Projektowanie systemów baz danych Projektowanie systemów baz danych Seweryn Dobrzelewski 4. Projektowanie DBMS 1 SQL SQL (ang. Structured Query Language) Język SQL jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do

Bardziej szczegółowo

Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas)

Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas) Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas) Bazy danych podstawowe pojęcia Baza danych jest to zbiór danych zorganizowany zgodnie ze ściśle określonym modelem danych. Model danych to zbiór ścisłych

Bardziej szczegółowo

Bazy Danych i Usługi Sieciowe

Bazy Danych i Usługi Sieciowe Bazy Danych i Usługi Sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2011 1 / 15 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_Danych_i_Usługi_Sieciowe_-_2011z

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

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

Prawa dostępu do plików

Prawa dostępu do plików Prawa dostępu do plików Wszystkie pliki systemów uniksowych posiadają swoje prawa dostępu dla zapisu, odczytu i wykonywania. Jeżeli dotychczas spotykałeś się z systemami Windows na partycjach FAT - możesz

Bardziej szczegółowo

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000 Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 5 Kursory w SQL Serverze Wprowadzenie Modele kursorów Używanie kursorów Rodzaje kursorów Praca

Bardziej szczegółowo

Administracja bazami danych

Administracja bazami danych Administracja bazami danych dr inż. Grzegorz Michalski Na podstawie wykładów dra inż. Juliusza Mikody Klient tekstowy mysql Program mysql jest prostym programem uruchamianym w konsoli shell do obsługi

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

Komunikaty System Linux umożliwia użytkownikom komunikowanie się między sobą. Do tego celu można wykorzystać programy mail i write.

Komunikaty System Linux umożliwia użytkownikom komunikowanie się między sobą. Do tego celu można wykorzystać programy mail i write. Ćwiczenie 5 Cel ćwiczenia: Zapoznanie się z obsługa programu Midnight Commander, utrwalenie wiadomości dotyczących skryptów, poznanie podstaw obsługi ftp oraz telnet. Wykorzystane polecenia ftp umożliwia

Bardziej szczegółowo

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw

Bardziej szczegółowo

System operacyjny Linux

System operacyjny Linux Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 3 Zarządzanie użytkownikami Użytkownicy i grupy Katalogi domowe Hasła Pliki konfiguracyjne Polecenia konsolowe Moduł YaST-a Łamanie

Bardziej szczegółowo

Model relacyjny. Wykład II

Model relacyjny. Wykład II Model relacyjny został zaproponowany do strukturyzacji danych przez brytyjskiego matematyka Edgarda Franka Codda w 1970 r. Baza danych według definicji Codda to zbiór zmieniających się w czasie relacji

Bardziej szczegółowo

host name: 192.168.11.110 protokół SSH System plików - wprowadzenie Ścieżki dostępu

host name: 192.168.11.110 protokół SSH System plików - wprowadzenie Ścieżki dostępu Ćw. 13 Linux - operacje systemu plików 1. Ściągnąć program PUTTY ze strony z materiałami dydaktycznymi - zapisać, rozpakować skompresowany plik i uruchomić. 2. Skonfigurować host name: host name: 192.168.11.110

Bardziej szczegółowo

Produkcja by CTI. Proces instalacji, ważne informacje oraz konfiguracja

Produkcja by CTI. Proces instalacji, ważne informacje oraz konfiguracja Produkcja by CTI Proces instalacji, ważne informacje oraz konfiguracja Spis treści 1. Ważne informacje przed instalacją...3 2. Instalacja programu...4 3. Nawiązanie połączenia z serwerem SQL oraz z programem

Bardziej szczegółowo

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości Rozpoczniemy od zaprojektowania bazy danych w programie SYBASE/PowerDesigner umieszczamy dwie Encje (tabele) prawym

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

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Modelowanie hierarchicznych struktur w relacyjnych bazach danych Modelowanie hierarchicznych struktur w relacyjnych bazach danych Wiktor Warmus (wiktorwarmus@gmail.com) Kamil Witecki (kamil@witecki.net.pl) 5 maja 2010 Motywacje Teoria relacyjnych baz danych Do czego

Bardziej szczegółowo

Proces instalacji systemu operacyjnego Linux Red Hat 7.3 (1)

Proces instalacji systemu operacyjnego Linux Red Hat 7.3 (1) Proces instalacji systemu operacyjnego Linux Red Hat 7.3 (1) 1. Ustawiamy w biosie bootowanie systemu z CD-ROMu bądź z dyskietki (tworzymy wówczas dyskietki startowe). 2. Aby rozpocząć proces instalacji

Bardziej szczegółowo

RBD Relacyjne Bazy Danych

RBD Relacyjne Bazy Danych Wykład 7 RBD Relacyjne Bazy Danych Bazy Danych - A. Dawid 2011 1 Selekcja σ C (R) W wyniku zastosowania operatora selekcji do relacji R powstaje nowa relacja T do której należy pewien podzbiór krotek relacji

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

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

IIIIIIIIIIIIIIIMMIMMIII

IIIIIIIIIIIIIIIMMIMMIII IIIIIIIIIIIIIIIMMIMMIII O programie Program Itelix itender Manager przeznaczony jest do zarządzania zapytaniami ofertowymi przesyłanymi za pomocą poczty elektronicznej przez firmy korzystające z systemu

Bardziej szczegółowo

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze 1 Funkcje i procedury pamiętane Następujące polecenie tworzy zestawienie zawierające informację o tym ilu jest na naszej hipotetycznej

Bardziej szczegółowo

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000 Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wyzwalacze Wprowadzenie Tworzenie wyzwalacza Wyzwalacze typu,,po'' Wyzwalacze typu,,zamiast''

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

z przedmiotu: Techniki Informatyczne Stanisław Flaga (stanislaw.flaga@agh.edu.pl)

z przedmiotu: Techniki Informatyczne Stanisław Flaga (stanislaw.flaga@agh.edu.pl) mysql relacyjna baza danych wstęp Materiały pomocnicze do laboratorium z przedmiotu: Techniki Informatyczne Stanisław Flaga () Wydział Inżynierii Mechanicznej i Robotyki Katedra Automatyzacji Procesów

Bardziej szczegółowo

MySQL. Darmowa baza danych. Æwiczenia praktyczne

MySQL. Darmowa baza danych. Æwiczenia praktyczne IDZ DO PRZYK ADOWY ROZDZIA KATALOG KSI EK ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK CENNIK I INFORMACJE ZAMÓW INFORMACJE ONOWOœCIACH ZAMÓW CENNIK CZYTELNIA SPIS TREœCI KATALOG ONLINE DODAJ DO KOSZYKA FRAGMENTY

Bardziej szczegółowo

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu: http://aragorn.pb.bialystok.pl/~gkret

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu: http://aragorn.pb.bialystok.pl/~gkret Ogólny plan przedmiotu BAZY DANYCH Wykład 1: Wprowadzenie do baz danych Małgorzata Krętowska Politechnika Białostocka Wydział Informatyki Wykład : Wprowadzenie do baz danych Normalizacja Diagramy związków

Bardziej szczegółowo

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller Dokumentacja systemu NTP rekrut Autor: Sławomir Miller 1 Spis treści: 1. Wstęp 1.1 Wprowadzenie 1.2 Zakres dokumentu 2. Instalacja 2.1 Wymagania systemowe 2.2 Początek 2.3 Prawa dostępu 2.4 Etapy instalacji

Bardziej szczegółowo

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia BAZY DANYCH LABORATORIUM Studia niestacjonarne I stopnia Gdańsk, 2011 1. Cel zajęć Celem zajęć laboratoryjnych jest wyrobienie praktycznej umiejętności tworzenia modelu logicznego danych a nastepnie implementacji

Bardziej szczegółowo

Pracownia internetowa w szkole ZASTOSOWANIA

Pracownia internetowa w szkole ZASTOSOWANIA NR ART/SBS/07/01 Pracownia internetowa w szkole ZASTOSOWANIA Artykuły - serwery SBS i ich wykorzystanie Instalacja i Konfiguracja oprogramowania MOL Optiva na szkolnym serwerze (SBS2000) Artykuł opisuje

Bardziej szczegółowo

Instalacja systemu zarządzania treścią (CMS): Joomla

Instalacja systemu zarządzania treścią (CMS): Joomla Instalacja systemu zarządzania treścią (CMS): Joomla Na stronie http://www.cba.pl/ zarejestruj nowe konto klikając na przycisk:, następnie wybierz nazwę domeny (Rys. 1a) oraz wypełnij obowiązkowe pola

Bardziej szczegółowo

dokumentacja Edytor Bazy Zmiennych Edytor Bazy Zmiennych Podręcznik użytkownika

dokumentacja Edytor Bazy Zmiennych Edytor Bazy Zmiennych Podręcznik użytkownika asix 4 Edytor Bazy Zmiennych Podręcznik użytkownika asix 4 dokumentacja Edytor Bazy Zmiennych ASKOM i asix to zastrzeżone znaki firmy ASKOM Sp. z o. o., Gliwice. Inne występujące w tekście znaki firmowe

Bardziej szczegółowo

Instrukcja korzystania z Virtual Box-a i SQLPLUS-a

Instrukcja korzystania z Virtual Box-a i SQLPLUS-a Instrukcja korzystania z Virtual Box-a i SQLPLUS-a Wstęp W tej instrukcji zawarte są procedury dotyczące użytkowania VirtualBox-a i SQLPLUS-a w zakresie: 1. Virtual Box a. podłączanie zewnętrznych współdzielonych

Bardziej szczegółowo

Ćwiczenie 9 Linux - operacje systemu plików

Ćwiczenie 9 Linux - operacje systemu plików Systemy teleinformatyczne AiR Ćwiczenie 9 Linux - operacje systemu plików 1. Ściągnąć program PUTTY - (portal tbajorek.prz.rzeszow.pl lub www.prz.rzeszow.pl/~tbajorek - dostęp po zalogowaniu: użytkownik:

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

Instalacja MySQL. http://dev.mysql.com/downloads/mysql/5.0.html#downloads

Instalacja MySQL. http://dev.mysql.com/downloads/mysql/5.0.html#downloads Instalacja MySQL Baza MySQL tworzona jest przez Szwedzką firmę MySQL AB strona domowa projektu to: www.mysql.com Wersję bezpłatną (różniącą się od komercyjnej brakiem wsparcia technicznego, nośnika i podręcznika)

Bardziej szczegółowo

Bazy danych Język SQL część 2 Wykład dla studentów matem

Bazy danych Język SQL część 2 Wykład dla studentów matem Bazy danych Język SQL część 2 Wykład dla studentów matematyki 21 marca 2015 Zapytania na kilku tabelach Czasem poszukiwana informacja znajduje się w kilku tabelach. Aby zapytanie dotyczyło kilku tabel,

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

SQL Structured Query Language

SQL Structured Query Language SQL Structured Query Language stworzony na początku lat 70 ubiegłego wieku w IBM przez Donalda Messerly'ego, Donalda Chamberlina oraz Raymonda Boyce'a pod nazwą SEQUEL pierwszy SZBD System R utworzony

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