Jacekk.info - O stronach internetowych wiemy wszystko

Wprowadzenie do MySQL i podstawy SQL

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

Trochę o bazie MySQL na podstawie prostej listy książek.
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ń

Kod
<?php
// Łączymy się z serwerem
mysql_connect('adres_bazy_danych', 'nazwa_użytkownika_bazy', 'hasło_użytkownika');

// Wybieramy bazę, której będziemy używać
mysql_select_db('nazwa_bazy_danych');

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:

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

W przykładzie zapytanie do bazy będzie wyglądała tak:

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

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


Nowe rekordy, czyli dodajemy pierwsze dane

Kod
INSERT INTO `tabela` (`nazwa_pola_1`, `nazwa_pola_2`)
   VALUES ('wartość pola 1', 'wartość pola 2')

Po przykładowym zapytaniu:

Kod
INSERT INTO `ksiazki` (`autor`, `nazwa`, `opis`)
   VALUES ('Dan Brołn', 'Cyfrowa Twierdza',
   'NSA konstruuje superkomputer, który może...');

INSERT INTO `ksiazki` (`autor`, `nazwa`, `opis`)
   VALUES ('Zbigniew Znienacki', 'Pan Samochodzik',
   'To cykl książek o perypetiach tytułowego...');

tabela będzie wyglądać tak:

Wynik
autor nazwa opis
Dan Brołn Cyfrowa Twierdza NSA...
Zbigniew Znienacki Pan Samochodzik To cykl...

Zmieniamy rekordy lub poprawiamy błędy

Celowo zapisałem nazwiska autorów z błędami. Zajmiemy się zatem zmienianiem rekordów:

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

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

Wynik
autor nazwa opis
Dan Brown Cyfrowa Twierdza NSA...
Dan Brown Pan Samochodzik To cykl...

Więc nie o to nam chodziło - musimy sprecyzować, której książce przypisać autora:

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

I już po wszystkim:

Wynik
autor nazwa opis
Dan Brown Cyfrowa Twierdza NSA...
Zbigniew Nienacki Pan Samochodzik To cykl...

Pokazujemy dane - cz. 1 - SQL

Składnia:

Kod
SELECT `nazwy_pól` FROM `tabela`

I możemy rozszerzyć ją o WHERE z poprzedniego rozdziału (używamy w ten sam sposób). Możemy również ograniczyć ilość przekazywanych rekordów.

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

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

Kod
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

Powracamy do PHP. Istnieją funkcje, które z wyniku mysql_query "wychwytują" dane. Jedną z nich jest mysql_fetch_array()

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

Kod
<?php
// Łączymy się z serwerem
mysql_connect('adres_bazy_danych',
   'nazwa_użytkownika_bazy',
   'hasło_użytkownika_bazy');

// Wybieramy bazę, której będziemy używać
mysql_select_db('nazwa_bazy_danych');

$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

Kod
DELETE FROM `tabela`

Usunie wszystkie rekordy z tabeli, warto więc użyć opisanego wcześniej WHERE


Zakończenie

W razie problemów zapraszam do skorzystania z formularza kontaktowego



© by Jacek Kowalski Sponsor: poszukiwany

Menu

Strona

Artykuły

Skrypty PHP

Przydatne kody

Wstawki

Informacje

Poprawny XHTML 1.1

Linki