Jacekk.info - O stronach internetowych wiemy wszystko

Wprowadzenie do MySQL i podstawy SQL

Jacek | 2005-12-21 10:44:57

Powiem trochę o bazie MySQL na podstawie prostego modułu biblioteczki.
Uwaga! Przydatna jest znajomość podstaw PHP!

Zanim cokolwiek wykonamy, musimy utworzyć tabelę. Zwykle robimy to w panelu administracyjnym konta, używając graficznego skryptu phpMyAdmin. My jednak stworzymy ją ręcznie. Po zdobyciu informacji (nazwa serwera, użytkownik, hasło, baza) możemy przejść do konkretów.


Łączenie się i wykonywanie poleceń

<?php
mysql_connect('adres_bazy_danych', 'nazwa_użytkownika_bazy', 'hasło_użytkownika_bazy'); // Łączymy się z bazą
mysql_select_db('nazwa_bazy_danych'); // Wybieramy bazę, której będziemy używać
mysql_query('Wykonujemy polecenia SQL');
?>

W ten sposób łączymy się z bazą MySQL.


Tabele - podstawowe "szufladki" na dane

Tworzenie tabeli jest proste, używamy mnie/więcej takiej składni:

CREATE TABLE `nazwa_tabeli` (
	`nazwa_pola` TYP_POLA,
	`pole2` TYP_POLA2
)

Nasza będzie jednak wyglądała trochę inaczej:

CREATE TABLE `ksiazki` (
	`nazwa` VARCHAR(50),
	`autor` VARCHAR(50),
	`opis` TEXT
)

Utworzyliśmy tabelę `ksiazki` z polami: `nazwa`, `autor` (dowolny tekst, max. 50 znaków) oraz `opis` (dowolny tekst; max. 65535 bajtów). Wszystkie typy dobrze opisano w artykule na home.pl


Nowe rekordy, czyli dodajemy pierwsze dane

Dodawanie rekordów do tabeli również nie jest trudne. Składnia:

INSERT INTO `tabela` (`nazwa_pola_1`, `nazwa_pola_2`) VALUES ('wartość pola 1', 'wartość pola 2')
INSERT INTO `ksiazki` (`autor`, `nazwa`, `opis`) VALUES ('Dan Brołn', 'Cyfrowa Twierdza', 'NSA konstruuje superkomputer pozwalający złamać...');
INSERT INTO `ksiazki` (`autor`, `nazwa`, `opis`) VALUES ('Zbigniew Znienacki', 'Pan Samochodzik', 'To cykl książek opowiadających o  peryferiach...');

Jak widać, wartości możemy podawać w innej kolejności, niż przy tworzeniu tabeli. Aktualnie całość wygląda tak:

 ________________________________________________
/ autor              | nazwa            | opis   \
+====================+==================+========+
| Dan Brołn          | Cyfrowa Twierdza | NSA... |
| Zbigniew Znienacki | Pan Samochodzik  | To...  |
\________________________________________________/

Zmieniamy rekordy lub poprawiamy błędy

Co bardziej uważni czytelnicy zapewne zauważyli, iż (celowo) błędnie napisałem nazwiska autorów. Zajmiemy się zatem zmienianiem rekordów:

UPDATE `tabela` SET `nazwa_pola`='wartość' WHERE `nazwa_pola_2`='wartość_pola_2'
UPDATE `ksiazki` SET `autor`='Dan Brown'

Po wykonaniu takiego zapytania nasza tabela będzie wyglądać w ten sposób:

 ________________________________________________
/ autor              | nazwa            | opis   \
+====================+==================+========+
| Dan Brown          | Cyfrowa Twierdza | NSA... |
| Dan Brown          | Pan Samochodzik  | To...  |
\________________________________________________/

I niestety nadal jest źle. Musimy więc sprecyzować, o co nam chodzi:

UPDATE `ksiazki` SET `autor`='Zbigniew Nienacki' WHERE `nazwa`='Pan Samochodzik'

Tłumaczenie: tam, gdzie nazwa książki to Pan Samochodzik, zmień pole autor na Zbigniew Nienacki

 _______________________________________________
/ autor             | nazwa            | opis   \
+===================+==================+========+
| Dan Brown         | Cyfrowa Twierdza | NSA... |
| Zbigniew Nienacki | Pan Samochodzik  | To...  |
\_______________________________________________/

Pokazujemy dane - cz. 1 - SQL

Składnia:

SELECT `nazwy_pól` FROM `tabela`

I możemy spokojnie rozszeżyć ją o WHERE z poprzedniego rozdziału (używamy w ten sam sposób). Możemy także limitować ilość przekazywanych rekordów.

SELECT `nazwy_pól` FROM `tabela` LIMIT 5

Co spowoduje pokazanie 5 pierwszych wierszy. Ale to nie całe zastosowanie LIMIT.

SELECT `nazwy_pól` FROM `tabela` LIMIT 9, 5

Tu pobieramy 5 rekordów poczynając od dziesiątego (numeracja zaczyna się od 0!)


Pokazujemy dane - cz. 2 - PHP

Tu, wreszcie, powracamy do PHP. Istnieje funkcja (nawet nie jedna), która z wyniku mysql_query potrafi wychwycić dane. Zwie się:

mysql_fetch_array()

Zwraca ona kolejno otrzymane wiersze (za każdym razem jeden). Praktyczne użycie:

<?php
mysql_connect('adres_bazy', 'użytkownik', 'hasło'); // Łączymy się
mysql_select_db('baza'); // Wybieramy bazę
$wynik = mysql_query('SELECT * FROM `ksiazki` WHERE `nazwa` LIKE 'Cy.rowa%'');
// Zwraca książki, których pole nazwa to Cy(dowolny znak)rowa(cokolwiek)

// Do rekordów odwołujemy się tak:
// $wynik_mysql_fetch_array['nazwa_pola_w_bazie']
// lub tak:
// $wynik_mysql_fetch_array[numer_kolejny_pola]
while($rzad = mysql_fetch_array($wynik)) {
	echo 'Tytuł: '.$rzad['nazwa'].'<br>Autor: '.$rzad['autor'].'<br>Opis: '.$rzad['opis'].'<hr>';
}
?>

Usuwamy rekordy

Tradycyjnie zaczynamy od składni:

DELETE FROM `tabela`

Podobnie jak SELECT i UPDATE możemy rozszeżyć o WHERE


Zakończenie

Mam nadzieję, że jest to choć w części zrozumiałe. Jeśli jednak nie, napisz do mnie - postaram się wyjaśnić


Menu

Strona

Artykuły

Przydatne kody

Skrypty PHP

Programy

Oferta

Informacje

Poprawny XHTML 1.1

Linki

© by Jacek Kowalski
Sponsor: Oxy.pl