Artykuł ten rozpoczyna serie opisów korzystania z bazy danych MySQL. Przedstawione w nim zostały podstawowe informacje przybliżające istotę bazy danych oraz jej założenia.
Czym jest MySQL?
MySQL jest bazą danych. Jak sama nazwa wskazuje, służy ona do przechowywania danych. Jest ona bardzo pomocna zarówno przy tworzeniu dużych jak i małych serwisów. Można w niej przechowywać wyniki ankiet, sond, wpisy do księgi gości itp. Na początku większość osób korzystających z PHP zapoznała się z możliwością zapisu danych do plików tekstowych. Jest to metoda czasami nieco lepsza – w zależności od tego, jakie dane są przechowywane, ale na ogół stosuje się właśnie bazę danych. Dlaczego MySQL? Rzecz polega na tym, że jest on darmowy i w ten sposób wiele młodych, jeszcze niedoświadczonych webmasterów ma możliwość wykazania się w dziedzinie programowania. Jeśli interesuje Cię opis jakiejś innej bazy to niestety nie uzyskasz tutaj żadnych istotnych informacji.
Budowa bazy danych
MySQL jak każda baza danych zbudowana jest jak tabela. Posiada rekordy i kolumny, do których odwołujemy się za pomocą odpowiednich zapytań. W takich bazach możemy przechowywać wszelkiego rodzaju dane – od zwykłych łańcuchów znaków, liczb itp. do binarnej reprezentacji obrazków i wiele innych ciekawych rzeczy. Już wkrótce sam zobaczysz, że stanie się ona nie zbędnych narzędziem w Twoich projektach.
Rodzaje danych
INT – liczba całkowita w przedziale od -231 do 231-1, lub od 0 do 232-1 w przypadku UNSIGNED
TINYINT – bardzo mała liczba całkowita w przedziale od -27 do 27-1, lub od 0 do 28-1 w przypadku UNSIGNED
SMALLINT – mała liczba całkowita w przedziale od -215 do 215-1, lub od 0 do 216-1 w przypadku UNSIGNED
MEDIUMINT – liczba całkowita średniej wielkości w przedziale od -223 do 223-1, lub od 0 do 224-1 w przypadku UNSIGNED
BIGINT – duża liczba całkowita w przedziale od -263 do 263-1, lub od 0 do 264-1 w przypadku UNSIGNED
FLOAT – liczba zmiennoprzecinkowa o pojedynczej precyzji, wartość minimalna różna od zera ±1,176×10-38; wartość maksymalna różna od zera ±3,403×10+38
DOUBLE/REAL – liczba zmiennoprzecinkowa o podwójnej precyzji, wartość minimalna różna od zera ±2,225×10-308; wartość maksymalna różna od zera ±1,798×10+308
DECIMAL – liczba zmiennoprzecinkowa zapisana w postaci łańcucha znaków o zakresie takim jak w przypadku DOUBLE
DATE – data zapisana w formacie RRRR-MM-DD w zakresie od 1000-01-01 do 9999-12-31
DATETIME – data i godzina zapisane w formacie RRRR-MM-DD gg:mm:ss w zakresie od 1000-01-01 00:00:00 do 9999-12-31 23:59:59
TIMESTAMP – data i godzina zapisane w formacie RRRRMMDDggmmss w zakresie od 19700101000000 do pewnej daty przypadającej na rok 2037
TIME – godzina zapisana w formacie gg:mm:ss w zakresie od -838:59:59 do 838:59:59
YEAR – rok zapisany w formacie RRRRw zakresie od 1900 do 2155
CHAR – łańcuch znaków o ustalonej długości w zakresie od 0 do 255 znaków
VARCHAR – łańcuch znaków o zmiennej długości w zakresie od 0 do 255 znaków
BLOB – duży obiekt binarny w zakresie od 0 do 65535 bajtów
TINYBLOB – mała wartość binarna w zakresie od 0 do 255 bajtów
MEDIUMBLOB – średnia wartość binarna w zakresie od 0 do 16777215 bajtów
LONGBLOB – duża wartość binarna w zakresie od 0 do 4294967295 bajtów
TEXT – pole tekstowe w zakresie od 0 do 65535 bajtów
TINYTEXT – krótkie pole tekstowe w zakresie od 0 do 255 bajtów
MEDIUMTEXT – średniej wielkości pole tekstowe w zakresie od 0 do 16777215 bajtów
LONGTEXT – długie pole tekstowe w zakresie od 0 do 4294967295 bajtów
ENUM – kolumnie przypisywana jest jedna z wartości należących do podanego zbioru
SET – kolumnie przypisywana jest dowolna ilość (zero lub kilka) wartości należących do podanego zbioru
Po zapoznaniu się z podanymi typami danych, z jakich będziemy korzystać w bazie danych, przyszła kolei na następny krok.
Klucze i indeksy
Zarówno klucze jak i indeksy są bardzo potrzebne w celu poprawienia jakości pracy bazy danych. Usprawniają przetwarzanie danych i eliminują element pomyłki w czasie modyfikacji poszczególnych rekordów, który może spowodować w końcowych skutkach usunięcie lub zmianę ważnych informacji. Preferuje się, aby każdy indeks był wartością unikalną, np. każdemu rekordowi można przyporządkować wartość liczbową, która rośnie wraz z dodawaniem do bazy coraz to nowszych danych. Bardzo ważną zaletą indeksowania tabel jest to, że można potem łączyć ze sobą kilka tabel za pomocą tak zwanych kluczy. Są to elementy wspólne dla kilku tabel i sortując je można szybko i łatwo pobierać i modyfikować dane. Na podstawie późniejszych przykładów i własnych doświadczeń niedługo docenisz ich zaletę.
Definicje pól bazy danych
Każdemu polu w bazie danych można nadawać różnego rodzaju atrybuty, długości, typy przechowywanych danych, wartości domyślne itd. Teraz przedstawię, jak w prosty sposób się to robi. Na samym początku definicji pola umieszczamy zawsze nazwę pola. Następnie kolejność nie jest już uwarunkowana, ale przyjęło się, że po nazwie pola powinno się definiować typ danych i ich długość umieszczając ją w nawiasie okrągłym zaraz po typie pola. Potem możemy określić atrybuty danych, czyli jedną z trzech wartości: BINARY, UNSIGNED lub UNSIGNED ZEROFILL. W kolejnym etapie informujemy czy podana wartość może przyjąć wartość NULL (czyli, czy może być pusta) lub nie może, wtedy podajemy wartość NOT NULL. W przypadku, gdy ktoś nie poda wartości, polu można przypisać wartość domyślną za pomocą słowa kluczowego DEFAULT, a następnie umieszczonej w cudzysłoiu treści jaką ma zawierać. Coraz częściej stosuje się także argument AUTO_INCREMENT, który powoduje, że podane pole jest automatycznie uzupełnione w postaci rosnącego ciągu liczb. Ponadto każde pole można zdefiniować jako unikalne za pomocą słowa kluczowego UNIQUE, lub jako klucz za pomocą KEY lub INDEX. Istnieje także możliwość zdefiniowania jednego wybranego pola w tabeli jako indeks unikalnych wartości za pomocą słowa kluczowego PRIMARY KEY. Teraz na podstawie kilku przykładów przedstawię, jak powinna wyglądać prawidłowa definicja pola z wykorzystaniem niektórych opisanych powyżej parametrów:
Przykład dla pola o nazwie ‘id’:
id mediumint (10) NOT NULL AUTO_INCREMENT |
Przykład dla pola o nazwie ‘autor’:
autor varchar (30) DEFAULT ‘autor nie znany’ |
Jeśli chcesz zdefiniować jedno z tych pól jako indeks lub klucz, należy po zdefiniowaniu pól zapisać dodatkowy fragment korzystający ze wspomnianych wcześniej słów kluczowych INDEX lub KEY. Całość powinna się reprezentować tak:
id mediumint (10) NOT NULL AUTO_INCREMENT, autor varchar (30) DEFAULT ‘autor nie znany’, KEY(id) |
Należy pamiętać, że definiowane pola należy oddzielać przecinkiem.
Po zapoznaniu się z podstawowymi informacjami na temat bazy MySQL, zapraszam do następnej części, w której opisane zostały sposoby tworzenia baz i tabel, a także ich modyfikacji i usuwania.