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 LOGIN@ 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 LOGIN@ - 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 Talk_Daemon@kom.net 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,

Podstawowe komendy i polecenia w Linux

Podstawowe komendy i polecenia w Linux Podstawowe komendy i polecenia w Linux I. Polecenia związane z użytkownikami, grupami, loginami i zamykaniem systemu o shutdown(zamykamy Linuxa) o adduser (dodajemy nowego użytkownika) o newgrp (dodajemy

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

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

Komendy Ubuntu MARCEL GAŃCZARCZYK 2T I 1

Komendy Ubuntu MARCEL GAŃCZARCZYK 2T I 1 Komendy Ubuntu MARCEL GAŃCZARCZYK 2T I 1 Do wykonania prezentacji został użyty: Ubuntu 17.10.1 w wersji x64 zainstalowany na pendrivie. AddUser Wymagane uprawnienia: TAK Jest to polecenie służące do tworzenia

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

1. Linux jest systemem operacyjnym; powstał na bazie rodziny systemów Unix, będąc w założeniach jego wolną alternatywą.

1. Linux jest systemem operacyjnym; powstał na bazie rodziny systemów Unix, będąc w założeniach jego wolną alternatywą. LINUX LINUX CHARAKTERYSTYKA SYSTEMU 1. Linux jest systemem operacyjnym; powstał na bazie rodziny systemów Unix, będąc w założeniach jego wolną alternatywą. 2. Linux jest zaliczany do tzw. Wolnego Oprogramowania

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

Ć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

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

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

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

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

CREATE USER

CREATE USER Temat: Administrowanie użytkownikami bazy danych. Po instalacji serwera MYSQL dostępne jest konto o nazwie root. Domyślnie nie ma ono przypisanego hasła, aczkolwiek podczas procesu konfiguracji jest możliwość

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

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

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

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

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

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

System operacyjny UNIX Ćwiczenie 1. Podstawowe polecenia systemu Unix

System operacyjny UNIX Ćwiczenie 1. Podstawowe polecenia systemu Unix Wydział Mechatroniki i Budowy Maszyn Specjalność: Automatyka i Robotyka Rok II Semestr IV 1. Logowanie w systemie Unix. System operacyjny UNIX Ćwiczenie 1. Podstawowe polecenia systemu Unix Do zalogowania

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

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

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

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

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

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

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

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

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

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

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

Bardziej szczegółowo

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

Pracownia Komputerowa wykład II

Pracownia Komputerowa wykład II Pracownia Komputerowa wykład II dr Magdalena Posiadała-Zezula http://www.fuw.edu.pl/~mposiada 1 Systemy operacyjne! Windows np. Windows 8.! Systemy unixowe:! Linux i Mac OS X 2 Logowanie na konta studenckie!

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

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

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE Magda Mielczarek Pracownia Informatyczna 2015/2016 1 Podstawowe definicje Linux system operacyjny, które oferuje kompletne środowisko programistyczne

Bardziej szczegółowo

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL Tutorial PostgreSQL 1. Instalacja na własnym komputerze: a. Zainstaluj program ze strony: https://www.postgresql.org/download/ Wersja odpowiednia dla systemu operacyjnego Linux, Mac, Windows Przy pierwszym

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

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

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

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019 BASH - LINIA POLECEŃ Bioinformatyka 2018/2019 PODSTAWOWE DEFINICJE Linux system operacyjny, które oferuje kompletne środowisko programistyczne Powłoka interfejs wiersza poleceń zapewniający komunikację

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

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

Bardziej szczegółowo

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

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

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

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

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

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

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

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

Sprawozdanie. (notatki) Sieci komputerowe i bazy danych. Laboratorium nr.3 Temat: Zastosowanie protokołów przesyłania plików

Sprawozdanie. (notatki) Sieci komputerowe i bazy danych. Laboratorium nr.3 Temat: Zastosowanie protokołów przesyłania plików Sprawozdanie (notatki) Sieci komputerowe i bazy danych Laboratorium nr.3 Temat: Zastosowanie protokołów przesyłania plików Piotr Morawiec 22.03.2017 FTP (ang. File transfer Protocol) - protokół wymiany

Bardziej szczegółowo

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH Wstęp do SQL SQL (Structured Query Language) strukturalny język zapytań używany do tworzenia, modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych. Język SQL jest językiem deklaratywnym.

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

Ć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

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

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

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

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

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

Podstawy języka SQL cz. 2

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

Bardziej szczegółowo

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

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

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

Laboratorium - Poznawanie FTP

Laboratorium - Poznawanie FTP Cele Część 1: Korzystanie z usługi FTP z wiersza poleceń. Część 2: Pobranie pliku z serwera FTP za pomocą WS_FTP LE Część 3: Korzystanie z usługi FTP w przeglądarce Scenariusz File Transfer Protocol (FTP)

Bardziej szczegółowo

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe Język SQL. Rozdział 5. Połączenia i operatory zbiorowe Iloczyn kartezjański, połączenie równościowe, połączenie nierównościowe, połączenie zwrotne, połączenie zewnętrzne, składnia jawna połączeń, składnia

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

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

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

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

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

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Tryb konsolowy ćwiczenie b

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Tryb konsolowy ćwiczenie b Systemy operacyjne i sieci komputerowe. Ćwiczenie 2. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE Tryb konsolowy ćwiczenie 2 012b Źródło: http://www.microsoft.com/technet/prodtechnol/windowsserver2003/pl/library/serv

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Uruchamianie bazy PostgreSQL

Uruchamianie bazy PostgreSQL Uruchamianie bazy PostgreSQL PostgreSQL i PostGIS Ten przewodnik może zostać pobrany jako PostgreSQL_pl.odt lub PostgreSQL_pl.pdf Przejrzano 10.09.2016 W tym rozdziale zobaczymy, jak uruchomić PostgreSQL

Bardziej szczegółowo

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga Bazy Danych i Systemy informacyjne Wykład 1 Piotr Syga 09.10.2017 Ogólny zarys wykładu Podstawowe zapytania SQL Tworzenie i modyfikacja baz danych Elementy dynamiczne, backup, replikacja, transakcje Algebra

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

BASH - WPROWADZENIE Bioinformatyka 4

BASH - WPROWADZENIE Bioinformatyka 4 BASH - WPROWADZENIE Bioinformatyka 4 DLACZEGO BASH? Praca na klastrach obliczeniowych Brak GUI Środowisko programistyczne Szybkie przetwarzanie danych Pisanie własnych skryptów W praktyce przetwarzanie

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

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 2 Kusory Wprowadzenie Kursory użytkownika Kursory domyślne Zmienne kursora Wyrażenia kursora - 2 - Wprowadzenie Co to jest kursor?

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

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

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

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

Bardziej szczegółowo

Bazy danych Wykład zerowy. P. F. Góra

Bazy danych Wykład zerowy. P. F. Góra Bazy danych Wykład zerowy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2012 Patron? Św. Izydor z Sewilli (VI wiek), biskup, patron Internetu (sic!), stworzył pierwszy katalog Copyright c 2011-12 P.

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

Kurs systemu Unix wykład wstępny. Kurs systemu Unix 1

Kurs systemu Unix wykład wstępny. Kurs systemu Unix 1 Kurs systemu Unix wykład wstępny Kurs systemu Unix 1 Cele wykladu Zdobycie podstawowej wiedzy o systemie i jego narzędziach. Poznanie unixowych języków skryptowych (bash, awk,...). Nauka programowania

Bardziej szczegółowo

Podstawy technologii WWW

Podstawy technologii WWW Podstawy technologii WWW Ćwiczenie 11 PHP, MySQL: więcej, więcej!, więcej!!. tabel i funkcjonalności. Na dzisiejszych zajęciach zdefiniujemy w naszej bazie kilka tabel powiązanych kluczem obcym i zobaczymy,

Bardziej szczegółowo

Podstawy użytkowania Linux a

Podstawy użytkowania Linux a Podstawy użytkowania Linux a Systemy Operacyjne Mateusz Hołenko 3 marca 2013 Plan zajęć Rozpoczynanie pracy z systemem Podstawowe polecenia Pomoc systemowa Interpreter poleceń Mateusz Hołenko Podstawy

Bardziej szczegółowo

Technologie baz danych

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

Bardziej szczegółowo

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh. Powłoka I Popularne implementacje W stylu sh (powłoki zdefiniowanej w POSIX) bash (najpopularniejsza) zsh ksh mksh W stylu csh csh tcsh 12 października 2018 1 / 16 Powłoka II Zachęta Komunikuje się z użytkownikiem

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

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

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

Bardziej szczegółowo

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

Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias

Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias 7 październik 2008 Uruchomienie, monitorowanie procesu, potoki, aliasy S laj d 1 Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias 7 październik 2008 Uruchomienie, monitorowanie

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

Zakład Systemów Rozproszonych

Zakład Systemów Rozproszonych Zakład Systemów Rozproszonych Politechnika Rzeszowska Moduł 1: Wprowadzenie do systemu UNIX Interpretator poleceń Interpreter poleceń użytkownika, czyli inaczej powłoka. Powłoka pośredniczy pomiędzy użytkownikiem

Bardziej szczegółowo