Tworzenie tabeli w bazie danych

14

Click here to load reader

Transcript of Tworzenie tabeli w bazie danych

Page 1: Tworzenie tabeli w bazie danych

Przygotowanie zajęć lekcyjnych z informatyki dotyczących zastosowania

MySQL i PHP w tworzeniu zaawansowanych stron internetowych

Autor:Tadeusz Koziemczykkontakt: [email protected]

Page 2: Tworzenie tabeli w bazie danych

MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki

Wstęp

Jeśli prowadzący zajęcia zamierza w sposób praktyczny zapoznać uczniów z zaawansowanymi technikami tworzenia stron internetowych to z pewnością będzie musiał poświęcić około 14 godzin lekcyjnych na języki SQL i PHP. Należy zwrócić uwagę, że przygotowanie takich lekcji od strony oprogramowania na komputerach uczniowskich, w porównaniu z innymi zagadnieniami, wymaga większego zaangażowania ze strony prowadzącego zajęcia. Również od strony dydaktycznej takie zajęcia nie są łatwe do przygotowania i poprowadzenia. Z pewnością łatwiej znaleźć właściwą koncepcje przeprowadzenia tych tematów na kółku informatycznym niż na zwykłych lekcjach. W korzystniejszej sytuacji są nauczyciele, którzy wcześniej mogli, w ramach przydziałowych godzin na lekcje informatyki, realizować SQL w Access’ie i składnię języka C. W takim przypadku zaprezentowane techniki posługiwania się SQL i PHP nie będą dużym zaskoczeniem, a prowadzący zajęcia będzie miał możliwość nawiązania do wcześniej realizowanych tematów.

Poniższy artykuł zawiera informacje o przygotowaniu środowiska na komputerach uczniowskich oraz merytoryczny materiał dotyczący podstawowych zapytań MySQL. Do każdej części dodane zostały propozycje ćwiczeń sprawdzających opanowanie materiału. Artykuł nie przedstawia treści związanych z posługiwaniem się językiem PHP, zakładając, że język ten został opanowany przez uczniów w sposób podstawowy. Natomiast obecnie prowadzący zajęcia ma za zadanie zachęcić uczniów do zastosowania tego języka do komunikacji z bazą danych oraz przedstawić możliwości uzyskania interaktywności stron w oparciu o PHP i MySQL.

2

Page 3: Tworzenie tabeli w bazie danych

MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki

Przygotowanie środowiska pracy na stacjach uczniowskich

Środowisko pracy do ćwiczeń z zaawansowanych technik stron internetowych powinno składać się:

o z serwera WWW Apache, do pobrania z http://httpd.apache.org (2.0.49). Opis instalacji znajdują się w oficjalnej dokumentacji, którą można znaleźć pod adresem http://httpd.apache.org/docs-2.0/platform/windows.html.

o z Interpretera PHP, do pobrania z http://php.net (4.3.4)o z serwer baz danych MySQL http://mysql.com (4.0.18)o z Edytora kodu PHP (i innych) Notepad++, można pobrać ze strony http://notepad-

plus.sourceforge.net

Ostatnia opcja nie jest konieczna, stanowi tylko ułatwienie pisania składni języka PHP. Oczywiście podana wyżej propozycja może być w niektórych przypadkach uciążliwa i pracochłonna w konfiguracji. Dlatego też można przygotować środowisko pracy w prostszy sposób. Zainstalować oprogramowanie KRASNAL Serv 2.7 ze strony www.krasnal.tk. W skład KRASNAL Serv 2.7 wchodzą:

o Apache 1.3.31o PHP 4.3.9 + SQLiteo PHP 5.0.2o MySQL 3.23.58o ActivePerl 5.6.1.628o phpMyAdmin 2.6.2 pl2o Zend Optimizer 2.0.3o CesarFTP 0.99go WebAlizer 2.1o Free SMTP Servero SQLiteManager 1.0.1

Wszystko to uzyskamy przy pomocy jednej instalacji, nie jest wymagana konfiguracja (tylko ustalenie katalogu na strony www).Kolejna propozycja to VertrigoServ, można pobrać ze strony http://vertrigo.sourceforge.net/ Komponenty VertrigoServ:

o Apache 2.0.55 o PHP 5.1.2 o MySQL 5.0.19 o SQLite 3.3.4 o PhpMyAdmin 2.8.0.1 o ZendOptimizer 2.6.2 o SQLiteManager 1.1.3

Tak jak i w poprzedniej propozycji wszystko to uzyskamy przy pomocy jednej instalacji, nie jest wymagana konfiguracja.

3

Page 4: Tworzenie tabeli w bazie danych

MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki

Ćwiczenie 1.Jakie środowisko musi być zainstalowane na twoim komputerze oraz jakie procesy powinny być uruchomione aby mogły poprawnie funkcjonować strony internetowe wykonane w oparciu o technologię PHP i MySQL?

SQL - Structured Query Language

MySQL jest to darmowy systemem obsługi baz danych, licencja GPL (General Public License). Jest wykorzystywany do stworzenia serwera obsługującego bazy danych. MySQL jest jednym z najpopularniejszych interfejsów języka SQL Do połączenia się z serwerem baz danych należy użyć odpowiedniego oprogramowania tzw. klienta lub języka skryptowego (umieszczanego na serwerach WWW), który posiada wbudowaną obsługę baz danych. Programem klienckim może być oprogramowanie dostarczane razem z pakietem MySQL. Można oczywiście korzystać z bazy danych przez połączenie wywoływane odpowiednim skryptem.

Zalecanym narzędziem do obsługi SQL, jest panel administracyjny do baz danych – phpMyAdmin (oczywiście jeśli usługodawca nam go oferuje). Połączenie z bazą MySQL można uzyskać z poziomu skryptów PHP lub Perl oraz kompilowanych CGI (możliwości te zależą od oprogramowania na serwerze).Aby uzyskać połączenie z serwerem baz danych należy znać:

- adres domenowy lub adres IP- nazwę użytkownika- oraz hasło

Ćwiczenie 2. Jakie warunki muszą być spełnione aby można było wykonywać operacje w bazie danych?

Ćwiczenie 3. Wymień podstawowe narzędzie do obsługi bazy SQL z poziomu przeglądarki internetowej.

Łączenie się z bazą danych

Aby dokonać oczekiwanych operacji w bazie danych należy: połączyć się z bazą danych, wysłać do niej informacje. Informacje przesłane do bazy danych są w postaci zapytań. Aby nawiązać połączenie z serwerem MySQL należy użyć odpowiedniej funkcji języka PHP, wygląda to następująco: $db = mysql_connect ("adres", "użytkownik", "hasło"); gdzie adres, użytkownik, hasłosą danymi wartościami otrzymanymi od usługodawcy hostingu.Jeśli praca z bazą danych jest zakończona należy użyć funkcji: mysql_close ($db);

Ćwiczenie 4. Napisz skrypt PHP (config.php), który umożliwia połączenie z serwerem MySQL. W jaki sposób należy posłużyć się tym skryptem (podaj listę kroków)?

4

Page 5: Tworzenie tabeli w bazie danych

MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki

Tworzenie nowej bazy i wybieranie bazy

Do stworzenia nowej bazy używamy funkcji mysql_create_db(nazwa_bazy). Jeśli chcemy założyć bazę o nazwie „baza1” używamy polecenia mysql_create_db("baza1");. Po prawidłowym podłączeniu do serwera MySQL należy wskazać bazę, na której chce się pracować (ilość możliwych baz do utworzenia zależy od ustalenia z usługodawcą hostingu). Jeśli będziemy wykonywać operacje na określonej bazie musimy ją wybrać, używając funkcji mysql_select_db(nazwa_bazy);. Dla „bazy1” będzie następująca składnia: mysql_select_db("baza1");. Baza1 jest od tego momentu dostępna, jeśli została wcześniej utworzona. Aby wykonywać podstawowe operacje w bazie1 tworzymy zapytania. Tworzy się je stosując funkcję mysql_query(zapytanie_SQL);. W praktyce wygląda to następująco:$zaptanie="miejsce na twoje zapytanie SQL";$zrealizuj=mysql_query($zapytanie);Funkcja mysql_query zwróci wartość TRUE, jeśli operacja zostanie zrealizowana, w przeciwnym wypadku - zwróci wartość FALSE.

Ćwiczenie 5. Napisz skrypt PHP, który tworzy bazę danych o nazwie absolwenci.

Tworzenie tabeli w bazie danych

Tabele służą do przechowywania informacji. W celu utworzenia tabeli należy zaplanować jej pola określające jakie dane będzie zawierał pojedynczy rekord. Aby utworzyć tabelę przechowującą dane o studentach projektujemy pola: imię, nazwisko, data_urodzenia. Przykładowy rekord będzie wyglądał następująco: 'Jan', 'Kowalski', '1968-09-10'.Podane dane są różnego typu. imię i nazwisko to dane tekstowe, data_urodzenia to pole zawierające datę. Oczywiście można projektować pola reprezentuje dane liczbowe. Polecenie SQL CREATE TABLE służące do utworzenia tabeli jest następujące: CREATE TABLE nazwa_tabeli struktura_tabeli;nazwa_tabeli - oznacza nazwę definiowanej tabeli, struktura_tabeli - zawiera dokładną specyfikację poszczególnych pól tabeli. Przykładowe polecenie SQL dla utworzenia tabeli studenci

CREATE TABLE studenci (imie VARCHAR(20), nazwisko VARCHAR(40),data_urodzenia DATE);

Jak widać dokładny schematu składni SQL dla tego polecenia można przedstawić w następujący sposób:

CREATE TABLE nazwa_tabeli (nazwa1 typ1,nazwa2 typ2,

5

Page 6: Tworzenie tabeli w bazie danych

MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki

....................nazwa typ,PRIMARY KEY(nazwa_id));

PRIMARY KEY oznacza, że pole nazwa_id stanowi klucz główny, a klucz główny nie może się powtarzaćOto kilka typów pól: TINYINT - 1-bajtowe pole, przechowujące wartości całkowite bez znaku z przedziału od 0 do 255 lub ze znakiem z przedziału od -127 do 127

FLOAT(dokładność) - Liczba zmiennoprzecinkowa z precyzją wyrażaną liczbą bajtów. Dwie wartości akceptowane jako precyzja to 4 i 8. Użycie 4 tworzy liczbę zmiennoprzecinkową o pojedynczej precyzji, natomiast 8 - liczbę zmiennoprzecinkową o podwójnej precyzji. Szczegóły dotyczące tych dwóch typów danych opisują pola FLOAT i DOUBLE

FLOAT - 4-bajtowa liczba zmiennoprzecinkowa z zakresu od -1.402823466E+38 do -1.175494351E-38, 0 i 1.175494351E-38 do 3.402823466E+38

DOUBLE - 8-bajtowa liczba zmiennoprzecinkowa przechowująca wartości z zakresu od -1.7976931348623157E+308 do -2.2250738585072014E-308, 0, i 2.2250738585072014E-308 do 1.7976931348623157E+308

DECIMAL - Pole zmiennoprzecinkowe o takiej samej pojemności jak DOUBLE. Liczba, zamiast zostać zredukowana do postaci szesnastkowej, pamiętana jest w formacie znakowym

DATE - Data (bez czasu), wyświetlana w formacie RRRR-MM-DD. Akceptuje daty w różnych formatach z zakresu od 1000-01-01 do 9999-12-31

TIME - Czas mieszczący się w przedziale od -838:59:59 do 838:59:59

YEAR - Rok. Dozwolone wartości to przedział od 1901 do 2155 oraz wartość 0000. MySQL wyświetla wartość typu YEAR w formacie RRRR

CHAR Pole znakowe o stałej długości z zakresu od 1 do 255 bajtów. Po wstawieniu wartości puste miejsca pola CHAR są uzupełniane z prawej strony spacjami

VARCHAR - Pole znakowe o zmiennej długości z zakresu od 1 do 255 bajtów. Zajmowany jest jedynie taki obszar pamięci, jakiego wymaga wartość wstawiona w to pole

BLOB, TEXT - Kolumna binarna lub tekstowa o rozmiarze nie przekraczającym 65 535 bajtów

Ćwiczenie 6. W jaki sposób z poziomu PHP utworzyć w bazie danych absolwenci odpowiednią tabelę byli_uczniowie przechowującą dane o absolwentach? Jak uruchomić taki skrypt?

6

Page 7: Tworzenie tabeli w bazie danych

MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki

Podstawowe polecenia SQL dotyczące tabeli

Polecenie INSERT. wstawia pojedynczy rekord do tabeli.

INSERT INTO nazwa_tabeli VALUES (wartosc_pola1,wartosc_pola2,wartosc_pola3,.......................wartosc_pola);

Aby wstawić rekord do tabeli studenci należy posłużyć się poleceniem:INSERT INTO studenci VALUES ('Jan', 'Kowalski', '1980-04-24');Powyższe polecenie można ponowić w celu wstawienia nowego rekordu. Należy tylko zmodyfikować wartości pól dla nowego rekordu np.:INSERT INTO studenci VALUES ('Aneta', 'Kaczmarek', '1982-05-16'); Jednak nie zawsze chcemy wstawić wartości dla wszystkich pól tabeli. Wtedy polecenie INSERT należy zmodyfikować. Po nazwie tabeli tworzymy listę pól, które będą wypełniane danymi. W takim przypadku zapytanie należy zredagować w następujący sposób:INSERT INTO studenci (imie, nazwisko) VALUES ('Alicja', 'Tomala'); Jak łatwo zauważyć pole data_urodzenia zostało pominięte. W ten sposób można postąpić z dowolnym polem tabeli studenci. Schemat polecenia SQL dla tego przypadku wygląda następująco:

INSERT INTO nazwa_tabeli (nazwa_pola1,nazwa_pola2,nazwa_pola3)VALUES (wartosc_pola1,wartosc_pola2,nazwa_pola3);

Tak więc jeśli chcemy wstawiać nowe dane do istniejącej tabeli używamy polecenia INSERT. Natomiast do modyfikacji danych będących w danej tabeli służy polecenie UPDATE. Jego składnia jest następująca:

UPDATE nazwa_tabeli SETnazwa_pola1='zmodyfikowana_wartość1',nazwa_pola2='zmodyfikowana_wartość2',nazwa_pola3='zmodyfikowana_wartość3';

Tak więc polecenie UPDATE studenci SET imie='Janek'; zmodyfikuje wszystkie rekordy w taki sposób, że pole imie będzie miało wartość 'Janek'. Oczywiście jest to tylko przykład i należy to wziąć pod uwagę. Bardziej przydatną konstrukcją dotyczącą modyfikacji danych z

7

Page 8: Tworzenie tabeli w bazie danych

MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki

określonej tabeli jest zastosowanie w poleceniu UPDATE klauzuli WHERE. Wtedy zostaną uaktualnione pola w danym rekordzie o ile dane z tego rekordu będą spełniać określony warunek.UPDATE studenci SET imie='Andrzej' WHERE nazwisko='Kowalski';Powyższe polecenie zmodyfikuje pole imie na ‘Andrzej’ w tych rekordach, w których pole nazwisko ma wartość ‘Kowalski’.

Ćwiczenie 7. W jaki sposób można wprowadzać dane do tabeli w bazie danych?

Ćwiczenie 8. Napisz kod strony internetowej, która umożliwi osobom mającym dostęp do Internetu wprowadzanie swoich danych do bazy danych.

Ćwiczenie 9. Napisz kod strony internetowej, która umożliwi osobom mającym dostęp do Internetu modyfikowanie swoich danych, które wcześniej wprowadzili do bazy danych.

Pobieranie danych z tabeli

Przechowywane dane w bazie danych mogą być pobierane z określonych tabel. Do tego celu służy zapytanie SELECT. Nie jest konieczne pobranie wszystkich rekordów w pełnym zestawie pól. Przykładowa składnia zapytania SELECT:SELECT pole1, pole2, pole3 FROM nazwa_tabeli;Jeśli interesuje nas pełny zestaw z danej tabeli wstawiamy zamiast wyszczególnionych pól znak „*”.SELECT * FROM nazwa_tabeli;Można też podać warunek, który spowoduje znalezienie interesujących nas rekordów:

SELECT * FROM nazwa_tabeli WHERE warunek;W praktyce takie zapytania dla naszej tabeli studenci będą miały postać:SELECT * FROM studenci;SELECT imie, nazwisko FROM studenci;SELECT * FROM studenci WHERE imie = ‘Andrzej’;

Po WHERE stosując warunki wyboru można je łączyć ze sobą stosując operatory OR oraz. AND. W warunkach wyboru można stosować następujące operatory porównań:

= równy> większy< mniejszy

>= większy równy<= mniejszy równy

<> lub (!=) różny

like porównanie łańcuchów

Dane z tabeli można pobrać w określonym porządku. Wskazanie kolumn, według których mają być posortowane dane podaje się po klauzuli ORDER BY oddzielone przecinkami. Jeśli chcemy uzyskać listę studentów rosnąco (ASC) według nazwiska i malejąco (DESC) według stypendium wpiszesz następujące polecenie: SELECT * FROM studenci ORDER BY nazwisko ASC, stypendium DESC;

8

Page 9: Tworzenie tabeli w bazie danych

MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki

Można też wpływać na ilość pobieranych rekordów stosując klauzulę LIMIT.SELECT * FROM studenci LIMIT 5;Odpowiedzią na to zapytanie będzie pięć pierwszych rekordów z tabeli studenci.

Ćwiczenie 10. Napisz kod strony internetowej, która umożliwi osobom znającym login i hasło podgląd do danych z bazy danych.

Ćwiczenie 11. Napisz kod strony internetowej, która umożliwi osobom znającym login i hasło podgląd do wybranych danych z bazy danych.

Ćwiczenie 12. Napisz kod strony internetowej, która umożliwi osobom znającym login i hasło podgląd danych z bazy danych z możliwością sortowania ich wg trzech wybranych pól tabeli.

Ćwiczenie 13. Napisz kod strony internetowej, która umożliwi osobom znającym login i hasło podgląd danych z bazy danych z możliwością wyświetlania rekordów wg określonego klucza (np. tylko tych absolwentów, którzy ukończyli szkołę 5 lat temu, 2 lata temu).

Literatura:

MySQLAutor: Leon AtkinsonTłumaczenie: Jarosław Dobrzański, Tomasz ŻmijewskiISBN: 83-7361-170-3Tytuł oryginału: Core MySQL Format: B5, stron: 608

Bazy danych i MySQL. Od podstawAutorzy: Richard Stones, Neil MatthewTłumaczenie: Paweł GoneraISBN: 83-7197-728-XFormat: B5, stron: 560

PHP i MySQL. Dynamiczne strony WWW. Szybki startAutor: Larry UllmanTłumaczenie: Michał Dadan (rozdz. 1-7), Piotr Pilch (rozdz. 8-13, dod. A - D)ISBN: 83-7361-157-6Format: B5, stron: 580

PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty. Wydanie trzecieAutorzy: Luke Welling, Laura ThomsonTłumaczenie: Paweł Gonera, Daniel KaczmarekISBN: 83-7361-784-1Format: B5, stron: 912

PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie IIIAutor: Kevin YankTłumaczenie: Sławomir Dzieniszewski, Paweł JanocińskiISBN: 83-7361-967-4Format: B5, stron: 336

9