SQL kurs: Mega kurs SQL –

SQL Kurs – Poznaj bazy danych

Dziś nie sposób wyobrazić sobie rozbudowanej aplikacji webowej bez zaszytej pod spodem bazy danych.

Tyczy się to nie tylko technologii internetowych, ale też desktopowych, mobilnych czy jakichkolwiek innych.

Czym tak naprawdę jest baza danych?

Wg Wikipedii jest to “zbiór danych zapisanych zgodnie z określonymi regułami”. Definicja definicją, skupmy się na konkretach. Rodzajów baz danych jest kilka (może kilkanaście), nas natomiast interesuje jeden – relacyjna baza danych.

Staniesz się ekspertem od tematu relacyjnych baz danych bez wychodzenia z domu.

Jak sama nazwa wskazuje – baza relacyjna opiera swoje działanie na relacjach między poszczególnymi jej elementami. Tak działają wszystkie popularne bazy danych, o których większość słyszała. Mowa tu o Oracle, PostgreSQL, MsSQL czy (wykorzystywanym najczęściej wraz z PHP) MySQL.

Może ktoś zapytać:
“Po cholerę mi baza danych, skoro mogę zapisać wszystko do pliku”.

No właśnie. Jaką przewagę daje nam relacyjna baza danych nad plikami?

Przewaga nad plikami

Ano taką, że baza oferuje nam dużo łatwejszy, wygodniejszy i błędoodporny dostęp do danych. Struktura bazy danych umożliwia prawidłowy odczyt, wpisywanie i edycję niezależnie od ilości danych w środku.

Nie musisz się przejmować, czy plik nie jest za duży/za mały lub czy nie ma gdzieś w treści literówki. Kolejnym ogromnym plusem jest wyszukiwanie wg kryteriów. Wyobrażasz sobie robić to na pliku tekstowym? Bo ja nie bardzo.

Drzewiasta struktura danych w bazie nie dość, że pozwala konstruować skomplikowane zapytania, to jeszcze wykonuje je błyskawicznie! Nawet na milionach rekordów.

Wiesz już, że bazy są super i chcesz się dowiedzieć, jak wyglądają?

Dane w bazie danych trzymane są w tabelach dwuwymiarowych. Każda tabela składa się z kolumn i wierszy. W najprostszym tłumaczeniu kolumny reprezentują strukturę danych, a wiersze poszczególne wpisy (tzw. rekordy).

Na strukturę danych składają się właściwości danego obiektu. Przykładowo, maltretowany na wszystkich internetowych kursach programowania, uczeń będzie miał właściwości:

Imię.
Nazwisko.
Płeć.
Data urodzenia.
Klasa.

Natomiast konkretny rekord, zawierający dane ucznia, to:

Marcin.
Wesel.
M.
19-05-1989
1A.

Liczba rekordów w danej tabeli określa ilość danych zgromadzonych w tej tabeli. Tabele mogą osiągać gigantyczne rozmiary, sięgające setek gigabajtów, zachowując przy tym swoją sprawność obliczeniową.

Wiadomo, że czas wykonywania zapytań na bazie rośnie wraz z ilością danych. Jest to jednak stosunek logarytmiczny – żeby czas wykonywania zwiększył się o n razy, ilość danych musi urosnąć o n*n. Nie musisz jednak zaprzątać sobie tym głowy na chwilę obecną.

Dobry projekt to podstawa

Ponieważ wyznaję zasadę, że człowiek uczy się najszybciej bazując na gotowym przykładzie, pokażę Ci zaprojektowaną bazę. Zaczniemy od wymagań do programu, na których opiera się projekt bazy danych. Nauczysz się wyciągać z opisu rzeczy, które są istotne w odniesieniu do tabel i jak na ich podstawie stworzyć odpowiednie tabele. Zaczynajmy!

Opis wymagań

Masz za zadanie stworzyć aplikację do zarządzania dokumentami w firmie. Każdy dokument musi należeć do jednej z czterech kategorii. Może to być umowa, wniosek, faktura lub pozostałe. Każdy dokument posiada swój unikatowy identyfikator, datę utworzenia, tytuł, zawartość oraz identyfikator pracownika, do którego przypisany jest dokument. Przyjmij na razie, że identyfikator pracownika jest zwykłą liczbą. W dalszej części dodamy obiekt pracownika i powiążemy go z obiektem dokumentu.

Analiza wymagań

Czytając powyższe wymagania, pierwsze, co rzuca nam się w oczy, to dokument. Dokument stanie się naszą pierwszą tabelą. Zastanówmy się, z czego musi się składać nasz dokument. Czytamy, że są to identyfikator, data utworzenia, tytuł, zawartość oraz identyfikator pracownika. Dodatkowo, każdy dokument musi być konkretnego typu, określonego przezkategorię. Wiesz, że kategorie są ściśle określone, a każdy dokument musi należeć do jednej z nich.

Zobaczmy, jak wyglądałaby podstawowa wersja bazy danych dla obsługi powyższego programu:

Nazwa tabeli:
Dokumenty

Kolumny:
Id
IdPracownika
Tytul
Zawartosc
Kategoria
DataUtworzenia

Za chwilę poznasz klucze podstawowe, klucze obce i relacje między tabelami. Wtedy dowiesz się, dlaczego kategoria powinna być zapisana, jako druga tabela. Dodamy też użytkownika, jako pełny obiekt bazodanowy. Nauczysz się tworzyć relacje między tabelami, by zoptymalizować wydajność i zarządzalność Twoją bazą danych.

Zadanie dla Ciebie

Spróbuj stworzyć podobną tabelę dla następującego opisu:

Masz do zrobienia aplikację do zarządzania zwierzętami w polskich ZOO. Każde zwierzę ma swój identyfikator, imię, rasę, grupę, datę urodzenia. Grupą mogą być ssaki, ptaki, gady, płazy oraz ryby. Każde zwierze musi należeć do jednego ZOO. Przyjmij, że ZOO reprezentowane jest przez identyfikator.

Oczywiście, nie jest to żadne wyzwanie, ale będzie dobrą rozgrzewką przed kolejnymi tematami.

Typy danych

W poprzedniej lekcji zaprojektowaliśmy przykładową tabelę w bazie danych, opartą na wymaganiach. Każda kolumna zawierała jedynie nazwę, odnoszącą się do specyfikacji i charakteryzującą pewien atrybut obiektu. W prawdziwym projekcie, poza nazwą, kolumna musi jeszcze posiadać typ, klasyfikujący dane, które będą w niej przechowywane.

Pełną listę typów danych dla bazy MySQL znajdziesz w dokumentacji.

Dla potrzeb nauki poznasz kilka podstawowych typów:

INT
4-bajtowa liczbowa wartość całkowita.

DATETIME
Data w formacie RRRR-MM-DD GG:MM:SS.

VARCHAR
Ciąg znaków o długości od 1 do 255 bajtów.

TEXT
Tekst o maksymalnym rozmiarze 65 535 bajtów.

Tak zatem każda kolumna, którą od teraz utworzymy, będzie przechowywać jeden z czterech typów danych, przedstawionych powyżej. Projekt tabeli z poprzedniej lekcji powinien być następujący:

Nazwa tabeli:
Dokumenty

Kolumny:
INT -> Id
INT -> IdPracownika
VARCHAR(100) -> Tytul
TEXT -> Zawartosc
VARCHAR(20) -> Kategoria
DATETIME -> DataUtworzenia

Liczba w nawiasie oznacza maksymalną długość, którą może osiągnąć dana typu VARCHAR. Jej podanie jest konieczne.

Określanie typów danych pomaga utrzymać prawidłową strukturę danych (czego nie zapewniają pliki). Przy okazji dostajemy podstawową walidację wprowadzanych danych (np. nie wprowadzisz tekstu do kolumny typu INT). Naucz się tych czterech typów, gdyż są one najczęściej używane w technologiach bazodanowych.

Zadanie dla Ciebie

Spróbuj teraz opracować tabelę z ZOO z użyciem typów danych. Przemyśl dokładnie, jakie typy są odpowiednie oraz postaraj się określić optymalną, maksymalną długość dla danych typu VARCHAR. Poniżej wklejam specyfikację ponownie:

Masz do zrobienia aplikację do zarządzania zwierzętami w polskich ZOO. Każde zwierzę ma swój identyfikator, imię, rasę, grupę, datę urodzenia. Grupą mogą być ssaki, ptaki, gady, płazy oraz ryby. Każde zwierze musi należeć do jednego z ZOO, przynależących do programu. Przyjmij, że ZOO reprezentowane jest przez identyfikator.

Relacje między tabelami

Czym są relacje? Podobnie jak relacje między ludźmi, relacje między tabelami opisują zależności między nimi. Relacje dzielą się na cztery główne typy:

1 – 1 (jeden do jeden)
1 – n (jeden do wielu)
n – 1 (wiele do jednego)
n – n (wiele do wielu)

Szybkie przykłady (tym razem w oparciu o parking):

1 do 1 – Jeśli mamy parking, gdzie każde z miejsc parkingowych przypisane jest tylko jednemu człowiekowi, a jeden człowiek może posiadać tylko jedno miejsce, to mamy relację 1 do 1.

1 do n – Jeśli na jednym miejscu może parkować grupa osób, ale ta grupa osób może parkować tylko na tym jednym konkretnym miejscu, to mamy relację 1 do n.

n do 1 – Jeśli wiele miejsc parkingowych może być przypisanych do jednego człowieka, ale tylko do jednego, to mamy relację n do 1.

n do n – Jeśli jedno miejsce parkingowe może być wykupione przez kilku ludzi, a jeden człowiek może wynająć kilka miejsc parkingowych, mamy do czynienia z relacją n do n.

Być może na pierwszy rzut oka wygląda to skomplikowanie, ale nie przejmuj się. Wcale takie nie jest. Z czasem stanie się to oczywiste, a relacje będziesz ustalać intuicyjnie.

Poczytaj więcej o relacjach między tabelami na stronie Microsoftu.

Powrót do przykładu z dokumentami

Dobrze, przećwiczmy teraz relacje w praktyce. Wkleję poniżej opis zadania, które mieliśmy przed momentem:

Masz za zadanie stworzyć aplikację do zarządzania dokumentami w firmie. Każdy dokument musi należeć do jednej z czterech kategorii. Może to być umowa, wniosek, faktura lub pozostałe. Każdy dokument posiada swój unikatowy identyfikator, datę utworzenia, tytuł, zawartość oraz identyfikator pracownika, do którego przypisany jest dokument. Przyjmij na razie, że identyfikator pracownika jest zwykłą liczbą. W kolejnych lekcjach dodamy obiekt pracownika i powiążemy go z obiektem dokumentu.

Widzisz tutaj jakąś potencjalną relację? Przyjrzyj się dokładnie. Mamy to do czynienia z klasycznym przykładem relacji n do 1. Mianowicie, każdy dokument musi posiadać dokładnie jeden typ (kategorię), ale ta sama kategoria może być przypisana do wielu dokumentów. Zatem poprawiony projekt naszej bazy powinien wyglądać tak:

Nazwa tabeli:
Dokumenty

Kolumny:
INT -> Id
INT -> IdPracownika
VARCHAR(100) -> Tytul
TEXT -> Zawartosc
INT -> IdKategorii
DATETIME -> DataUtworzenia

Nazwa tabeli:
Kategorie

Kolumny:
INT -> Id
VARCHAR(20) -> Nazwa

Mamy teraz dwie tabele, które są między sobą zależne. Zauważ, że kolumna Kategoria zmieniła typ z VARCHAR na INT i przybrała nową nazwę – IdKategorii. Tak właśnie implementuje się relacje jeden do wielu w projektowaniu tabel. Teraz, zamiast wpisywać konkretną nazwę kategorii do tabeli Dokumenty, wstawiamy jedynie odnośnik do wpisu z tabeli Kategorie. W ten sposób, gdy będziemy chcieli zmienić nazwę kategorii z “faktura” na “faktura VAT”, wystarczy zmienić to raz w konkretnym rekordzie tabeli Kategorie. Odnośnik pozostanie bez zmian.

Klucz podstawowy i klucz obcy

Teraz wiesz, jak zobrazować relację w projekcie. Potrafisz także korzystać z kluczy podstawowych i obcych!

Kluczem podstawowym jest kolumna w tabeli, która posiada wyłącznie unikatowe wartości. W naszym przypadku będą to identyfikatory (kolumna Id) zarówno w tabeli Dokumenty, jak i w tabeli Kategorie.

Klucz obcy to klucz podstawowy z innej tabeli, który umieszczamy jako kolejną kolumnę w obecnej tabeli. W naszym przypadku jest to IdKategorii. W ten sposób możemy tam wpisać wyłącznie rzeczywisty identyfikator, którego rekord faktycznie znajduje się w tabeli Kategorie.

Zadanie dla Ciebie

Zaprojektuj relacje w bazie danych dla aplikacji obsługującej ZOO. Opis wklejam poniżej:

Masz do zrobienia aplikację do zarządzania zwierzętami w polskich ZOO. Każde zwierzę ma swój identyfikator, imię, rasę, grupę, datę urodzenia. Grupą mogą być ssaki, ptaki, gady, płazy oraz ryby. Każde zwierze musi należeć do jednego z ZOO, przynależących do programu. Przyjmij, że ZOO reprezentowane jest przez identyfikator.

Zarządzanie bazą danych

W tym poradniku skupimy się na zarządzaniu bazą danych MySQL.

Podstawowym narzędziem, którego będziemy do tego używać jest phpMyAdmin.

Jeśli kroki z pierwszej lekcji kursu PHP zostały przez Ciebie ukończone, masz dostęp do phpMyAdmina pod adresem: http://localhost/phpmyadmin/.

Wklej go do paska adresu przeglądarki i zobacz, czy ładuje się poprawnie. Jest też druga możliwość włączenia narzędzia, poprzez kliknięcie prawym przyciskiem myszy na ikonkę WebServa w pasku narzędzi po prawej na dole. Wysunie się menu kontekstowe, z którego możesz wybrać phpMyAdmin.

Domyślne dane do logowania: user: root, password: (puste).

Co rozumiemy poprzez zarządzanie bazą danych?

Zarządzaniem nazywamy wszystkie czynności, które służą do operowania na danych w bazie. Zaliczamy do nich między innymi:

– Tworzenie i usuwanie tabeli.
– Wstawianie i usuwanie rekordów.
– Modyfikowanie rekordów.
– Wyszukiwanie odpowiednich rekordów.
– Export i import danych.
– Pozostałe, służące do manipulacji tabelami oraz danymi.

PhpMyAdmin umożliwia nam wykonywanie powyższych operacji za pomocą przyjaznego interfejsu. Tak oto, jeżeli chcemy stworzyć nową tabelę, klikamy z lewej strony na nazwę bazy danych. Następnie pojawia nam się poziome menu z dostępnymi opcjami. Mamy do wyboru (pozycje menu mogą się różnić w zależności od wersji phpMyAdmina):

Struktura
SQL
Szukaj
Zapytanie
Eksport
Import
Operacje
Procedury i funkcje

Strona, na której się znaleźliśmy, prezentuje wszystkie tabele w danej bazie danych. Póki co jest pusto, gdyż nie stworzyliśmy jeszcze żadnej. Możemy to zrobić, wpisując nazwę tabeli do pola “Nazwa” oraz podając liczbę kolumn. Obie kontrolki znajdują się w panelu “Utwórz tabelę”. Klikamy wykonaj i zostajemy przeniesieni do drugiego etapu tworzenia tabeli, gdzie musimy określić nasze kolumny.

Załóżmy, że tworzymy tabelę o nazwie “Kategorie”. Liczbę kolumn ustawiamy na 2. Po kliknięciu wykonaj wybieramy następujące opcje:

1 kolumna
nazwa: Id
typ danych: INT
indeks: PRIMARY

2 kolumna
nazwa: Nazwa
typ danych: VARCHAR
długość maksymalna: 20

Do kolumny Id dodajemy indeks jako PRIMARY. Znaczy to, że identyfikator jest kluczem podstawowym i musi być unikatowy w skali całej tabeli. Klikamy na “wykonaj” (lub utwórz – w zależności od wersji) i możemy się cieszyć pierwszą utworzoną przez nas tabelą. Gratulacje!

Dodawanie rekordów

Teraz, gdy tabela Kategorie jest gotowa, spróbujmy dodać do niej jakieś dane. Kliknij w nazwę tabeli Kategorie ze spisu tabel. Pojawi się nowe menu poziome z opcjami:

Przeglądaj
Struktura
SQL
Szukaj
Wstaw
Eksport
Import
Operacje

Teraz kliknij “wstaw”. Pojawi się panel do wstawiania rekordów. Możesz wpisać w Id: 1, a w Nazwie: Faktura. Teraz kliknij “wykonaj” i voila, pierwszy rekord wstawiony!

Pobaw się teraz, wstawiając jeszcze 4 inne kategorie. Dodawaj rekordy tak, aby ich Id wynosiły kolejno – 2, 3, 4, 5. Pamiętaj, że Id nie może się powtórzyć, gdyż baza danych wyrzuci błąd i nie pozwoli dodać takiego rekordu.

Szukanie i usuwanie rekordów

Gdy masz już trochę danych w swojej tabeli, spróbujmy coś w niej wyszukać. Powiedzmy, że chcesz znaleźć nazwę kategorii, której identyfikator wynosi 3. Wchodzisz zatem na zakładkę “szukaj”, będąc na podstronie tabeli, i widzisz bardzo intuicyjny formularz. Wpisujesz “3″ w polu obok Id i klikasz wykonaj. Operator zostawiasz domyślny (=).

Jeśli dodałeś poprzednio rekord z Id = 3, Twoim oczom ukaże się znaleziony wynik. W innym przypadku pojawi się komunikat, że zapytanie zwróciło pusty wynik.

Spróbujmy teraz usunąć znaleziony rekord. Pewnie już rzuciło Ci się w oczy, że przy każdym wyświetlanym rekordzie jest kilka ikonek – edytuj, kopiuj i usuń. Klikając “usuń” program zapyta, czy na pewno chcesz to zrobić. Potwierdzając, rekord zostanie usunięty. Możesz również zaznaczyć kilka rekordów i kliknąć “usuń” poniżej dla wszystkich wybranych rekordów.

Zadanie dla Ciebie

Potrafisz utworzyć tabelę, nadać właściwości kolumnom oraz dodawać, wyszukiwać i usuwać rekordy. Przeglądnij pozostałe możliwości phpMyAdmina na własną rękę, by zaprzyjaźnić się z narzędziem i nabrać płynności w obsłudze.

Żeby utrwalić nabyta wiedzę, zadanie dla Ciebie jest następujące:

Utwórz dodatkowe dwie tabele, zgodnie ze specyfikacją programu do zarządzania dokumentami. Tabela Dokumenty ma strukturę:

INT -> Id
INT -> IdPracownika
VARCHAR(100) -> Tytul
TEXT -> Zawartosc
INT -> IdKategorii
DATETIME -> DataUtworzenia

Tabelę Pracownicy zaprojektuj samodzielnie, opierając się o następujący opis:

Każdy pracownik w firmie ma swój unikatowy identyfikator, będący liczbą naturalną. Oprócz tego pracownika cechują imię, nazwisko, PESEL, miasto, ulica, numer domu, pleć. Jeden dokument może przetwarzany maksymalnie przez jednego pracownika, podczas gdy jeden pracownik może obsługiwać wiele dokumentów jednocześnie.

Narzędzie phpMyAdmin pozwala zarządzać bazą danych bez szczegółowej wiedzy technicznej. Na pewno zastanawiało Cię, co to za skrypt pojawiał się na górze strony, gdy klikając jakąkolwiek akcję, pojawiał się wynik. To kod źródłowy języka SQL. Służy on do manipulacji strukturą bazy danych oraz samymi danymi. Kolejna część będzie poświęcona właśnie językowi SQL.

Wstęp do języka SQL

Do tej pory, wszystkie operacje na tabelach oraz danych, wyklikiwaliśmy w phpMyAdminie.

Jest to sposób szybki i wygodny, ale warto wiedzieć, co dzieje się pod spodem.

Wspomniałem ostatnio, że każda akcja w GUI skutkuje pokazaniem w panelu kodu SQL, który wykonał się po kliknięciu. To instrukcje zaszyte pod konkretnymi akcjami phpMyAdmina, zaimplementowane przez jego twórców. Jeśli chcesz używać baz danych u siebie w projekcie, też musisz wywoływać odpowiednie komendy SQL. Pora poznać kod SQL i samemu, świadomie nim operować.

Pobieranie rekordów

Podstawową operacją, której użyjesz pewnie najczęściej, jest pobieranie rekordów z bazy. W języku SQL służy do tego instrukcja SELECT. Jej składnia jest następująca:

SELECT nazwyKolumnDoPobrania FROM nazwaTabeli;

Zamiast nazwyKolumnDoPobrania należy wpisać nazwy kolumn, oddzielone od siebie przecinkami. Jeżeli chcemy pobrać wszystkie kolumny, możemy podać * zamiast wypisać wszystkie z osobna. Zobacz kilka przykładów wykorzystania SELECTa:

SELECT * FROM tabela;
SELECT id FROM tabela;
SELECT id, imie, nazwisko FROM tabela;
Możesz ćwiczyć na tabelach utworzonych w poprzednich częściach. PhpMyAdmin ma zakładkę “SQL”, gdzie możesz wkleić gotowy kod SQL i zobaczyć rezultat.

Wstawianie rekordu

Do wstawienia rekordu na stronę służy instrukcja INSERT. Zobacz konstrukcję poniżej:

INSERT INTO nazwaTabeli (kolumna1, kolumna2 ...)
VALUES ('wartosc1', 'wartosc2' ...);

 

Wykonując ją, wstawisz do tabeli nowy rekord. W nawiasach podajemy nazwy kolumn, a odpowiadające wartości w drugim nawiasie zostaną dodane. Przykład z życia wzięty:

INSERT INTO kategorie (id, nazwa)
VALUES (1, 'Faktura');

 

Ciąg dalszy języka SQL

Po wyciąganiu i dodawaniu nowych rekordów, przyszła pora na więcej.

Zaczniemy od usuwania rekordów, które są już zbędne w naszej bazie.

Pamiętaj, że usuwając rekord, tracisz go trwale. W rzeczywistych projektach, często zamiast usuwać rekord, dodajemy kolumnę “IsActive” i zmieniamy jej wartość na false. Następnie wyciągamy jedynie rekordy, które mają ustawioną wartość na true.

Usuwanie rekordów

Aby usunąć rekord z bazy, należy wykonać:

  1. DELETE FROM nazwaTabeli WHERE nazwaKolumny = warunek;


Spowoduje to usunięcie wszystkich rekordów, które spełniają podany warunek. Jeśli nie podamy warunku, wszystkie rekordy z tabeli zostaną usunięte.

Poniżej kilka przykładów:

  1. DELETE FROM kategorie;
  2. DELETE FROM kategorie WHERE id = 1;
  3. DELETE FROM kategorie WHERE nazwa LIKE ’%faktura%’;


Warunek LIKE

Powyżej, po raz pierwszy pojawił nam się operator LIKE. Służy on do dopasowania ciągu znaków do danego schematu. Znaki specjalne % zastępują dowolny ciąg znaków. Nasz warunek zatem usunie wszystkie rekordy z tabeli kategorie, które mają w nazwie ‘faktura’. Na przykład:faktura VAT, faktura PROForma, korygująca faktura etc.

Modyfikowanie rekordu

W przypadku, gdy rekord istnieje już w bazie, a my chcemy zmodyfikować jego część, używamy instrukcji UPDATE. Poniżej schemat polecenia:

  1. UPDATE nazwaTabeli SET nazwaKolumny = ’wartosc’
  2. WHERE nazwaKolumny = warunek;


SET przymuje nazwę kolumny, gdzie ma ustawić żądaną wartość. WHERE określa wszystkie rekordy, gdzie wartość będzie ustawiona. Zobacz kilka przykładów poniżej:

  1. UPDATE kategorie SET nazwa = ’brak’;
  2. UPDATE kategorie SET nazwa = ’faktura VAT’ WHERE id = 1;
  3. UPDATE kategorie SET nazwa = ’poprawione’ WHERE nazwa = ’błędne’;
  4. UPDATE kategorie SET id = ’2′, nazwa = ’faktura VAT’ WHERE id = 1;


Pobieranie danych z kilku tabel

W momencie, gdy chcemy pobrać dane z więcej niż jednej tabeli, możemy w zapytaniu połączyć je ze sobą. Przykładowo, chcesz pobrać dokument, który jest typu “umowa”, ale nie wiesz, jakie jest ID tego wpisu w tabeli kategorie. Możesz łatwo wyciągnąć to ID i użyć na tabeli dokumenty w następujący sposób:

  1. SELECT d.nazwaDokumentu, d.zawartosc FROM dokumenty d, kategorie k
  2. WHERE d.kategoriaId = k.id AND k.nazwa = ’umowa’;


Zauważ dodatkowy warunek w WHERE, jeśli pobierasz dane z kilku tabel. Musisz jasno wskazać, która kolumna jest kluczem obcym dla drugiej tabeli. Literki d i k są skróconymi nazwami tabel, by nie trzeba było korzystać z pełnej nazwy tabeli.

SQL w kodzie PHP

Wiesz już, jak działają bazy danych oraz jak wykorzystać język SQL. Czas teraz użyć nabytej wiedzy, by zintegrować aplikację PHP z bazą MySQL. PHP posiada gotowe funkcje do łączenia i rozłączania bazy danych, wybierania bazy domyślnej, wykonywania kodu SQL oraz kilka innych. Zobaczmy najpierw, w jaki sposób możemy połączyć się i rozłączyć z bazą:

Łączenie bazy danych

  1. <?php
  2. // nawiązujemy połączenie
  3. $link = mysqli_connect(„adresHosta”, „uzytkownik”, „haslo”, „nazwaBazy”);
  4. // sprawdzamy efekt połączenia
  5. if (mysqli_connect_errno()) {
  6. printf(„Nie udało się połączyć: %s”, mysqli_connect_error());
  7. exit();
  8. }
  9. // przeprowadzamy wszystkie operacje
  10. // zamykamy połączenie z bazą
  11. mysqli_close($link);
  12. ?>


W 99% przypadków baza jest na tym samym serwerze, co aplikacja w PHP. Stąd “adresHosta: to zazwyczaj “localhost”. “Użytkownik” i “hasło” to dane logowania użytkownika, które podawaliśmy w phpMyAdmin. “NazwaBazy” to, jak sama nazwa wskazuje, nazwa Twojej bazy danych.

Wykonajmy teraz jakieś polecenie SQL:

/* Wykonaj SQL na otwartej bazie */
if ($wynik = mysqli_query($link, "SELECT * FROM kategorie;"))
{
$iloscRekordow = mysqli_num_rows($wynik);
echo "Zapytanie zwróciło $iloscRekordow rekordów.";
}
// wyświetl wyniki
while ($rekord = mysqli_fetch_array($wynik))
{
echo 'Kategoria o nazwie: ' . $wynik["nazwa"] . '<br/>';
}
public function blabla
{
$i = 123;
}

Powyższy przykład pokazuje, jak wykonać polecenie SQL oraz wyświetlić liczbę rekordów, zwróconych przez zapytanie. Do tego, na koniec wyświetlamy wyniki. Funkcji do odczytywania rekordów jest kilka. Jedną z nich, zaprezentowaną tutaj, jest mysqli_fetch_array(). Zamienia rekord z bazy MySQL na tablicę w PHP. W ten sposób wartość komórki w kolumnie “nazwa” jest teraz dostępna w tablicy $wynik[„nazwa”]. Tak samo możemy się odnieść do innych kolumn w tabeli

Dalsze kroki

Gratulacje!

Teraz już wiesz, czym są bazy danych i jak funkcjonują. Wiesz też, jak nimi manipulować przy pomocy języka SQL.

Teraz pozostaje wypróbować nabytą wiedzę w praktyce.

Spróbuj napisać prostą aplikację webową z wykorzystaniem bazy danych!

Propozycje dalszej lektury:

Kurs Oracle SQL
Dobry Kurs SQL (na bazie T-SQL)
Kurs MS SQL Podstawy