Professional Documents
Culture Documents
bazy_danych_lab1_2019
bazy_danych_lab1_2019
SKRYPT DO LABORATORIUM
BAZY DANYCH
autor:
dr inż. Adam Bujnowski
Gdańsk, 2019
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”
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”
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)).
Po otwarciu sesji pojawia się okno tekstowe z zapytaniem o login (rys. 4).
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.
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
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”
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.
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>
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.
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));
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));
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, …);
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”
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ć.
Zadanie
Sprawdź jak na imię ma znajomy o 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”
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.
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