Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

Politechnika Gdańska, międzywydziałowy kierunek „INŻYNIERIA BIOMEDYCZNA”

SKRYPT DO LABORATORIUM

BAZY DANYCH

ĆWICZENIE 1: Podstawy zarządzania bazami danych

autor:
dr inż. Adam Bujnowski

Gdańsk, 2019

Projekt „Przygotowanie i realizacja kierunku inżynieria biomedyczna – studia międzywydziałowe”


współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego.
Politechnika Gdańska, międzywydziałowy kierunek „INŻYNIERIA BIOMEDYCZNA”

1. Wymagania wstępne
Wymagania:
Znajomość podstaw obsługi komputera PC, preferowana znajomość systemów zgodnych z UNIX w
zakresie obsługi wiersza poleceń. Umiejętność posługiwania się edytorem tekstów.
Cele ćwiczenia:
Celem ćwiczenia jest zapoznanie studentów z podstawami zarządzania relacyjnymi bazami danych.
Wykaz przyrządów, materiałów i aparatury niezbędnej do przeprowadzenia ćwiczenia:
Komputer klasy PC z systemem operacyjnym Windows lub Linux z zainstalowaną przeglądarką WWW
(preferowana Mozilla FireFox), klientem ssh (dla Windows – putty), programem do transmisji plików z
użyciem warstwy ssh (WinSCP). Dostęp do internetu.
Spodziewane efekty kształcenia - umiejętności i kompetencje:
Opanowanie podstaw obsługi tabel oraz obsługi danych.
Metody dydaktyczne:
Indywidualna praca przy komputerze PC, w oparciu o instrukcję do ćwiczenia.
Zasady oceniania/warunek zaliczenia ćwiczenia
Warunkiem zaliczenia ćwiczenia jest wykonanie i zaprezentowanie prowadzącemu wszystkich
elementów ćwiczenia. Ocenę maksymalną można otrzymać wykonując dodatkowe, indywidualne
zadania zlecone przez prowadzącego.
Wykaz literatury podstawowej do ćwiczenia:
1. Skrypt do wykładu
2. www.postgresql.org

2. Przebieg ćwiczenia
L.p. Zadanie
1. Wiadomości wstępne, łączenie się z serwerem, poprawne rozłączanie się.
2. Obsługa systemu plików, podstawowe operacje. Program Midnight Commander.
3. Zakładanie i kasowanie baz danych z poziomu interfejsu użytkownika.
4. Zapoznanie z programem psql.
5. Podstawy obsługi tabel – zakładanie tabel, usuwanie tabel, modyfikacja struktury tabel.
6. Obsługa danych – dodawanie, usuwanie i modyfikowanie rekordów

UWAGA!
Do poprawnej pracy każda osoba musi posiadać aktywne konto na serwerze bazy.eti.pg.gda.pl. W
trakcie realizacji laboratorium lokalne komputery posłużą jako terminale do połączenia się z
serwerem. Całość oprogramowania zainstalowana jest na serwerze.
Informacje o sposobie zakładania konta i sposobie jego aktywacji zostaną przedstawione na
wprowadzeniu do laboratorium.

2
BAZY DANYCH, A. Bujnowski
Politechnika Gdańska, międzywydziałowy kierunek „INŻYNIERIA BIOMEDYCZNA”

3. Wprowadzenie do ćwiczenia – łączenie się z serwerem


Do łączenia się z serwerem bazy.eti.pg.gda.pl w systemach Windows wykorzystana zostanie aplikacja
o nazwie PuTTY. Na większości komputerów w laboratorium program jest już zainstalowany (na
pulpicie powinna być widoczna ikonka jak na rys. 1).

Rys. 1 Ikonka programu PuTTY.

Jeśli program nie został zainstalowany, należy pobrać go ze strony:


http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html (pobieramy plik o nazwie
putty.exe i umieszczamy go na pulpicie).
Po uruchomieniu programu pojawi się okno, w którym można wybrać parametry połączenia.

Rys. 2 Ustawienia sesji w programie PuTTY

Nowe połączenie należy zdefiniować zgodnie ze wskazówkami przedstawionymi na rys. 2. W tym celu
w polu Host Name (1) wpisujemy nazwę serwera - bazy.eti.pg.gda.pl, w polu (2) wpisujemy nazwę
charakterystyczną dla tej sesji, np. „bazy”. Następnie z pola Category wybieramy Translation (3) i
zmieniamy kodowanie znaków na UTF-8 (rys. 3).

3
BAZY DANYCH, A. Bujnowski
Politechnika Gdańska, międzywydziałowy kierunek „INŻYNIERIA BIOMEDYCZNA”

Rys. 3. Zmiana ustawień kodowania znaków

Po zmianie ustawień należy wrócić do pola Session (5) i zapisać tak skonfigurowaną sesję (Save (6)).
Jeśli poprawnie ustawiliśmy wszystkie parametry możemy połączyć się z serwerem (otwieramy sesję –
przycisk Open (7)).

WSKAZÓWKA: Po następnym uruchomieniu programu wystarczy załadować (przycisk Load (8)) a


następnie otworzyć zapisaną wcześniej sesję (przycisk Open (7)).

Po otwarciu sesji pojawia się okno tekstowe z zapytaniem o login (rys. 4).

Rys. 4. Okno logowania w programie PuTTY.

4
BAZY DANYCH, A. Bujnowski
Politechnika Gdańska, międzywydziałowy kierunek „INŻYNIERIA BIOMEDYCZNA”

Wprowadź swój login, zatwierdź klawiszem [Enter]. Teraz program poprosi Cię o hasło. Wpisz
swoje hasło

UWAGA: W trakcie wpisywania hasła nie pojawią się na ekranie żadne znaki aż do
momentu zatwierdzenia hasła klawiszem [Enter].

Po poprawnym wpisaniu hasła system wyświetli tekst powitalny i znak zachęty. Od tej chwili cała
praca z systemem baz danych będzie się odbywała wewnątrz tego okienka. Większość
wydawanych poleceń wydawana będzie za pomocą klawiatury. Serwer odpowie w postaci
komunikatu widocznego w tym oknie.

Rys.5. Okno po poprawnym zalogowaniu.

Będąc w konsoli systemu mamy możliwość korzystania m.in. z następujących poleceń:

polecenie opis
logout wylogowanie , powoduje zamknięcie sesji z
serwerem oraz zamknie putty. Możesz również
wcisnąć sekwencję klawiszy Ctrl-D
ls wyświetla zawartość katalogu, porównaj z
poleceniem ls -laF
cat [plik] wyświetla zawartość pliku
mkdir [nazwa katalogu] tworzy następujący katalog
rmdir [nazwa katalogu] usuwa następujący katalog

5
BAZY DANYCH, A. Bujnowski
Politechnika Gdańska, międzywydziałowy kierunek „INŻYNIERIA BIOMEDYCZNA”

rm [nazwa pliku] usuwa dany plik(ale przedtem system spyta nas, czy
chcemy usunąc ten plik, jeśli tak, to wpisujemy
literę "y", jeśli nie, to liter "n") rm -f [nazwa pliku]
usunie bez pytania
ps wyświetla procesy
man [nazwa programu] instrukcje obsługi programu
pwd wyświetla aktualną ścieżkę do katalogu wraz z jego
nazwą
mv [nazwa pliku] [ścieżka do katalogu czyli np: przenosimy dany plik, do którego chcemy z
/home/lol/] lub [nazwa katalogu] katalogów, zamiast tego możemy podać nazwe,
która zmieni nazwe pliku, a nie go przeniesie

cp [nazwa pliku] [ścieżka do katalogu] coś jak poprzednia komenda, tylko że kopiujemy do
danego
katalogu pozostawiając stary odnośnik
cd [nazwa katalogu] otwiera katalog, który podaliśmy w komendzie
cd przenosi bezpośrednio do katalogu domowego
chmod [liczba od 000 do 777] [nazwa pliku] zmiany praw dostępu pliku lub katalogu. Pierwsza
liczba to użytkownik, druga to grupa, a trzecia
pozostali.
0 lub --- brak praw dostępu
1 lub --x wykonywanie
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
mc program ulatwiający obsługę plików – obsługa
podobna do programu Total Commander dla
Windows
mcedit prosty edytor tekstu
nano prosty edytor tekstu

4. Zakładanie i usuwanie bazy danych


Pracując z systemem baz danych PostgreSQL każdy uprawniony użytkownik może zakładać swoje
bazy danych. Do utworzenia nowej bazy danych służy polecenie :
createdb <nazwa_bazy> |

Jako nazwę bazy przyjmij lab1_<twój_login>, czyli jeśli zalogujesz się jako użytkownik test, to
wprowadź nazwę bazy lab1_test.
6
BAZY DANYCH, A. Bujnowski
Politechnika Gdańska, międzywydziałowy kierunek „INŻYNIERIA BIOMEDYCZNA”

Jeżeli nie pojawił się komunikat o błędzie, baza została stworzona.

UWAGA: W sytuacji kiedy więcej użytkowników próbuje założyć bazę danych w tym samym czasie,
system może odmówić, wyświetlając komunikat: "source database "template1" is
being accessed by other users". Należy wówczas ponowić polecenie createdb za jakiś
czas.

Do usunięcia bazy danych służy polecenie:


dropdb <nazwa_bazy> |

Teraz możemy sprawdzić czy nasza baza została faktycznie usunięta. Polecenie
psql -l |
spowoduje wyświetlenie wszystkich baz danych w systemie. Z czasem polecenie to zwróci dość długą
listę baz danych. Można ograniczyć ilość wyników do baz danych konkretnego użytkownika. Polecenie
psql -l | grep <twoj_login> |
spowoduje przefiltrowanie wyników wyświetlania jedynie do linii, w których występuje
<twoj_login>.

Wypróbuj teraz zakładanie i usuwanie baz danych. Ostatecznie załóż bazę danych o nazwie
lab1_<twojlogin>

5. Interfejs systemu zarządzania baz danych psql


Po założeniu bazy danych można się z nią połączyć poleceniem :
psql <nazwa_bazy> |
Po połączeniu się z bazą danych program psql wyświetli następujące komunikaty (niekoniecznie
dokładnie takie same):
Welcome to psql 7.4.23, the PostgreSQL interactive
terminal. Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute
query \q to quit

W psql-u istnieją dwie kategorie poleceń. Do pierwszej kategorii należą polecenia dotyczące
zachowania programu psql – sposobu interakcji z użytkownikiem i parametrów wyświetlania.
Polecenia te zaczynają się znakiem ‘\’.
Listę poleceń wewnętrznych można uzyskać wpisując:
\? |
Aby wyjść z programu psql należy wpisać polecenie:
7
BAZY DANYCH, A. Bujnowski
Politechnika Gdańska, międzywydziałowy kierunek „INŻYNIERIA BIOMEDYCZNA”

\q [Enter] |

Drugą kategorię poleceń stanowią polecenia w języku SQL. Każde z poleceń zakończone jest znakiem
średnika. Wynik działania polecenia wyświetlony zostanie na ekranie lub/i utrwalony w bazie
danych. Listę dostępnych poleceń SQL można uzyskać wpisując polecenie \h. Dodatkowo, wpisując
\h nazwa_polecenia wyświetla się bardziej szczegółowa pomoc na temat danego polecenia np.:
\h create , \h create table itp.

UWAGA: Czasami ( w praktyce dość często) wygenerowany wynik czy to z polecenia \h czy z zapytania
jest dość duży – tak duży, że nie mieści się na ekranie. W interfejsie programu psql zaimplementowano
mechanizm stronicowania. Polega on na tym, że po wyświetleniu porcji informacji mieszczącej się na
stronie, program zatrzyma je na ekranie, wówczas: [spacja] – następna strona, [enter] – pojedyncza
linia, b – poprzednia strona, q – opuszczenie wyświetlania.

6. Zakładanie i tworzenie tabel


Przyjmijmy, że chcemy stworzyć bazę danych do przechowywania informacji o znajomych.
Podstawowe dane, jakie będziemy chcieli składować to imię, nazwisko oraz numer telefonu
znajomego. Dodatkowo ponumerujemy naszych znajomych. Tabela w formie prezentacyjnej może
wyglądać następująco:

id imie nazwisko telefon


1 Jan Kowalski 555666555
... ... ... ...

Najpierw sprawdźmy czy w naszej bazie występują jakieś tabele:


\dt |
System powinien wyświetlić następującą odpowiedź:
no relations found

Utwórzmy zatem w naszej bazie danych przedstawioną powyżej tabelę. Użyjemy do tego polecenia
CREATE TABLE:
CREATE TABLE znajomy(id serial, imie varchar(20), nazwisko varchar(40),
telefon char(15));

System potwierdzi wykonanie polecenia wyświetlając:


CREATE TABLE

Sprawdźmy teraz, co się stało w strukturze bazy danych:


\dt |
Dokładniejsze informacje na temat tabeli można uzyskać wpisując
\d znajomy |

8
BAZY DANYCH, A. Bujnowski
Politechnika Gdańska, międzywydziałowy kierunek „INŻYNIERIA BIOMEDYCZNA”

W SQL polecenia można wpisywać w wielu liniach. Polecenie zostanie w całości zaakceptowane w
momencie, gdy zakończymy je średnikiem. Zapis:
CREATE TABLE znajomy(
id serial,
imię varchar(20),
nazwisko varchar(40),
telefon char(15));

jest równoważny poprzedniemu wpisowi.

UWAGA: Program psql może wyświetlać jeden z trzech znaków zachęty:


nazwa_bazy=> gotowość do przyjęcia nowego polecenia w bazie nazwa_bazy,
nazwa_bazy-> jeśli wprowadzana instrukcja jest niedokończona składniowo,
nazwa_bazy'> oraz nazwa_bazy(> sugeruje niedomknięcie nawiasu lub cudzysłowu
Program psql przyjmuje polecenia języka SQL oraz polecenia sterujące. Jako koniec linii polecenia
SQL rozpoznawany jest średnik a nie ENTER. W praktyce jest to olbrzymią zaletą – długie polecenia
SQL będą bardziej czytelne jeśli z użyciem ENTER będziemy je pisać w kilku liniach.

7. Wprowadzanie danych
Kiedy tabela jest już gotowa, można w niej umieszczać dane, pamiętając o zgodności z typami danych
jakie dla danej tabeli zdefiniowaliśmy. Składnia polecenia, jakie w tym celu wykorzystamy jest
następująca:
INSERT INTO nazwa_tabeli (nazwa_kolumny1, nazwa_kolumny2, …) VALUES
(wartosc1, wartosc2, …);

Sprawdź w dokumentacji jak inaczej może wyglądać składnia tego polecenia


(http://www.postgresql.org/docs/8.4/static/sql-commands.html lub \h insert).

wprowadź co najmniej 5 rekordów próbując pominąć różne kolumny, np.:


INSERT INTO znajomy (imie, nazwisko, telefon) VALUES
(‘Jan’,’Kowalski’,’58452000’);

Zadanie
Jak za pomocą jednego polecenia wpisać jednocześnie kilka rekordów?

8. Odczyt danych
Po wprowadzeniu danych do tabeli możemy wyświetlić jej zawartość (można to też oczywiście zrobić
dla pustej tabeli). Służy do tego polecenie SELECT.
Wpisując najprostszą postać polecenia SELECT możemy wybrać np. wszystkie krotki z tabeli znajomy:
SELECT * FROM znajomy; |
Można również, dodając odpowiedni warunek, wybrać tylko część krotek z interesującej nas tabeli:
SELECT * FROM znajomy WHERE imie='Jan'; |
9
BAZY DANYCH, A. Bujnowski
Politechnika Gdańska, międzywydziałowy kierunek „INŻYNIERIA BIOMEDYCZNA”

Jaki warunek spełniają krotki wyświetlone za pomocą powyższego polecenia?

Bardziej złożona postać polecenia SELECT wygląda następująco:


SELECT * [AS nazwa_wyj] FROM nazwa_tabeli [WHERE warunek][ORDER BY
nazwa_kolumny ASC|DESC];

Sprawdź w dokumentacji jak wygląda ogólna postać polecenia SELECT.

Operatory wykorzystywane w warunkach to >, <, =, <>, is NULL


Kilka różnych warunków możemy łączyć za pomocą operatorów logicznych: AND, OR
Zamiast * po słowie SELECT można wpisać nazwy kolumn, które nas w tym momencie interesują.

Zadanie
Wyświetl zawartość tabeli:
1)w najprostszej postaci SELECT *,
2) tylko wybrane kolumny oraz
3) z prostym warunkiem i posortowane.

9. Modyfikacja danych
Za pomocą polecenia UPDATE aktualizujemy istniejące w tabeli rekordy. Najprostszą postać
polecenia UPDATE można zapisać następująco:
UPDATE nazwa_tabeli SET nazwa_kolumny=nowa_wartosc WHERE warunek; |

nowa_wartość może być podana wprost lub obliczona według zadanej reguły. Można w tym celu
skorzystać z operatorów: +,-,*,%.
Warunek WHERE warto najpierw sprawdzić za pomocą polecenia SELECT upewniając się czy na pewno
dotyczy rekordów, które chcemy zmodyfikować.

Przetestujmy jak działa modyfikacja rekordów.

Zadanie
Sprawdź jak na imię ma znajomy o id=1.

Zmieńmy teraz imię pana o id=1:


UPDATE znajomy SET imie=’Andrzej’ WHERE id = 1; \

Zadanie
Dla wybranej osoby zmień numer telefonu, nazwisko itp.

10
BAZY DANYCH, A. Bujnowski
Politechnika Gdańska, międzywydziałowy kierunek „INŻYNIERIA BIOMEDYCZNA”

10.Usuwanie wybranych rekordów


Usuwanie krotek przeprowadza się podobnie do modyfikacji. Bez warunku WHERE jest to
posunięcie dość radykalne, usuwające wszystkie dane z tabeli. Bez korzystania z transakcji (o
tym na późniejszych laboratoriach) wpisanie polecenia:
DELETE FROM znajomy; | Na razie nie rób tego !!!
sprawi, że wyczyścimy całą tabelę z danych.
Polecenie DELETE można zapisać następująco:
DELETE FROM nazwa_tabeli WHERE warunek; |
(Sprawdź w dokumentacji jak wygląda jego ogólna postać)
Podobnie jak w przypadku UPDATE proponowany warunek warto najpierw sprawdzić
wykorzystując polecenie SELECT.
Sprawdź działanie polecenia DELETE dla wybranych wierszy w tabeli, np.:

DELETE FROM znajomy where imie=’Jan’; |

11.Modyfikacja struktury tabel


Czasami zdarza się, że do opisu naszej encji potrzebujemy większej liczby atrybutów. Jeśli konieczna
jest modyfikacja istniejącej już tabeli, stosujemy polecenie ALTER TABLE.
Zapoznaj się z jego składnią korzystając z dokumentacji na http://www.postgresql.org lub wpisując
polecenie \h ALTER TABLE.
Sprawdź działanie polecenia ALTER TABLE. Rozszerz możliwość przechowywania informacji
o znajomym o adres e-mail:
ALTER TABLE znajomy ADD email varchar(100); |

Zadanie
Teraz spróbuj, korzystając z polecenia UPDATE, wpisać kilka adresów e-mail swoim znajomym.
Dodaj również do tabeli pole „wiek” o typie integer. Podobnie jak poprzednio wypełnij to pole
danymi.

12.Wiele tabel w bazie danych


Utwórz w swojej bazie danych dodatkową tabelę o nazwie osoba zawierającą pola:
id – serial, imie – varchar(20) not null, nazwisko – varchar(40) not null, pesel char(15) not null
Sprawdź teraz jak wygląda struktura tabel w Twojej bazie danych. Odpowiednie komendy
wyszukaj korzystając z polecenia :
\? |
Sprawdź działanie instrukcji:
INSERT INTO osoba(imie) VALUES (‘Jan’);
INSERT INTO osoba(nazwisko) VALUES (‘Nowak’);
Co zrobić, żeby można było wpisać wiersze w tej tabeli?
Sprawdź działanie polecenia:
11
BAZY DANYCH, A. Bujnowski
Politechnika Gdańska, międzywydziałowy kierunek „INŻYNIERIA BIOMEDYCZNA”

INSERT into znajomy(imie,nazwisko) SELECT imie,nazwisko FROM osoba; |


Porównaj dane zawarte w tabeli znajomy z danymi przechowywanymi w tabeli osoba.

13.Usuwanie tabeli
Usuwanie tabeli to zadanie nieodwracalne. Jeżeli tabela nie jest powiązana referencjami (o czym
wkrótce) z innymi tabelami, to można ją usunąć nawet wtedy gdy nie jest ona pusta. Służy do tego
polecenie:
DROP TABLE nazwa_tabeli; |

Zadanie
Usuń ze swojej bazy danych wszystkie tabele. Sprawdź czy działanie zostało faktycznie wykonane.
Następnie usuń całą bazę.

12
BAZY DANYCH, A. Bujnowski

You might also like