PHP MySQL - Introducere si Tipuri de Date

MySQL este cea mai populara aplicatie open-source de baze de date folosita cu PHP.
O baza de date de obicei contine una sau mai multe tabele, folosita pentru a stoca informatii pe categori.
Tabelele contin coloane si inregistrari (randuri) cu date.
Mai jos este un exemplu de tabel folosit pentru a stoca informatiile utilizatorului (nume, email, parola):

idnamepasswordemail
1 Mariusfaith name@domain.net
2 MarPlopeace user@domain.com
3 I_AMlove address@domain.net
- Aceasta tabela contine trei inregistrari /randuri (unu pentru fiecare persoana/utilizator) si patru coloane (id, name, password, email)

Reguli de sintaxa MySQL

Fiecare baza de date si fiecare tabela este indentificata printr-un nume. Regulile de baza MySQL pentru nume de baze de date, tabele, si coloane sunt:

Tipuri de date MySQL

Cand se creaza un tabel in MySQL, trebuie definit tipul de date pe care fiecare coloana il va contine. Exista trei tipuri principale: Text (strings), Numere, Data si Ora; si doua tipuri secundare: Liste predefinite si Date binare.
Tipul de date dicteaza ce informatie poate fi stocata si cum, acesta influenteaza si performanta generala a bazei de date.
Tabelul de mai jos listeaza tipurile de date folosite pentru MySQL, cu o scurta descriere si cat spatiu ocupa.

TipMarimeDescriere
Stocare text Diferenta dintre "Tipurile de date pentru text" consta in numarul maxim de caractere ce poate fi stocat intr-un camp individual, modul de tratare a spatiilor, si daca se poate seta o valoare initiala.
CHAR(lungime) lungime bytes Un camp cu lungime fixa de la 0 la 255 de caractere. Accepta o valoare initiala.
VARCHAR(lungime) lungime + 1 or 2 bytes Camp cu lungime variabila de la 0 la 65,535 caractere. Accepta o valoare initiala.
TINYTEXT lungime + 1 bytes Un sir cu lungime maxima de 255 characters
TEXT lungime + 2 bytes Un sir cu o lungime maxima de 65,535 caractere. Nu poate defini o valoare initiala.
MEDIUMTEXT lungime + 3 bytes Un sir cu o lungime maxima de 16,777,215 caractere
LONGTEXT lungime + 4 bytes Un sir cu o lungime maxima de 4,294,967,295 caractere
Stocare numere Aceste tipuri de date reprezinta numere in diferite forme.
TINYINT(lungime) 1 byte Interval de la –128 la 127. Sau de la 0 la 255 unsigned
SMALLINT(lungime) 2 bytes Interval de la –32,768 la 32,767. Sau de la 0 la 65,535 unsigned
MEDIUMINT(lungime) 3 bytes Interval de la –8,388,608 la 8,388,607. Sau de la 0 la 16,777,215 unsigned
INT(lungime) 4 bytes Interval de la –2,147,483,648 la 2,147,483,647. Daca coloana este declarata UNSIGNED, intervalul este de la 0 la 4,294,967,295
BIGINT(lungime) 8 bytes Interval de la –9,223,372,036,854,775,808 la 9,223,372,036,854,775,807. Sau de la 0 la 18,446,744,073,709,551,615 unsigned
FLOAT(lungime, decimals) 4 bytes Numar mic cu virgula (cu zecimale). Deoarece PHP va formata numerele in functie de calcule, se recomanda sa folosesti FLOAT fara parametri optionali.
DOUBLE(lungime, decimals) 8 bytes Numar mare cu zecimale
DECIMAL(lungime, decimals) lungime + 1 or 2 bytes Un tip DOUBLE care permite un numar fix de zecimale. Inainte de MySQL 5.0.3, tipul de date DECIMAL a fost stocat ca un sir, ca sa nu poata fi folosit cu functii SQL, cum ar fi SUM()
Stocare data si timp MySQL stocheaza data intr-un singur format: YYYY-MM-DD
DATE 3 bytes O data stocata ca YYYY-MM-DD. Intervalul este de la 1000-01-01 la 9999-12-31
DATETIME 8 bytes Data si ora, afisat in format YYYY-MM-DD HH:MM:SS
TIMESTAMP 4 bytes Un timestamp (de obicei generat automat de calculator). Poate contine valori ce reprezinta date de la inceputul lui 1970 pana in Januarie 2038. Coloanele TIMESTAMP sunt afisate in acelasi format ca si coloana DATETIME.
TIME 3 bytes Ora in format HH:MM:SS
Stocare liste predefite MySQL te lasa sa stochezi doua tipuri de liste predefinite (pot fi vazute ca echivalente pentru radio butonul si caseta de verificare).
ENUM 1 or 2 bytes Acest tip de coloana stocheaza o singura alegere din lista predefinita, fiecare coloana poate avea una din mai multe valori posibile
SET 1, 2, 3, 4, or 8 bytes Aceast tip de coloana stocheaza zero sau mai multe inregistrari din lista predefinita. Ca si ENUM, cu exceptia ca fiecare coloana poate avea mai mult de o valoare din mai multe valori posibile, sau mai multe inregistrari dintr-o lista predefinita. Lista poate contine cel mult 64 de inregistrari.
Storing binary data Stocheaza date binare, ca imaginile.
TINYBLOB   Pana la 255 bytes
BLOB   Pana la 64kB
MEDIUMBLOB   Pana la 16MB
LONGBLOB   Pana la 4GB

- Parametri (lungime, decimal) sunt optionali, dar pentru motive de performanta, ar trebui specificati pentru a restrictiona cata informatie sa fie stocata in oricare din coloane. Bazele de date sunt de obicei mai rapide cand lucreaza cu coloane care au marimea fixata.
- Foloseste VARCHAR pentru elemente de text scurte si TEXT pentru cele mai lungi.
- Foloseste DECIMAL pentru a stoca valori pt. bani.
- Pentru data si ora, este indicat sa folositi TIMESTAMP daca doriti sa inregistrati in acel camp un punct fix in timp (de exemplu data cand o inregistrare a fost introdusa in baza de date). Folositi DATETIME daca data/ora pot fi setate si schimbate arbitrar.
La tipul TIMESTAMP data si ora este setata automat cu timpul curent cand se face INSERT sau UPDATE, daca nu se specifica o valoare pentru acel camp.
- Nu este o buna idee sa folosesti date binare. Solicita prea mult baza de date, si nu se pot afisa imagini direct din baza de date.

Aceasta lectie e doar pentru o scurta introducere, si puteti reveni ca sa verificati tipul de date care doriti sa fie folosit.
In tutorialul urmator puteti invata cum sa va conectati la serverul MySQL cu PHP, sa creati o baza de date si tabele, utilizand interfata MySQLi (MySQL Improved).
Baze de date SQL ... <<-- Anterior --- Urmator -->> PHP MySQL - utilizare ...

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce atribut e folosit in tag-ul <a> pentru adresa link-ului?
src href rel
<a href="http://coursesweb.net/" title="CoursesWeb.net">CoursesWeb.net</a>
Ce proprietate CSS seteaza tipul fontului utilizat?
font-family text-decoration font-size
h2 {
  font-family:"Calibri", sans-serif;
}
Ce instructiune selecteaza toate tag-urile <div> cu class="cls"?
querySelector("div.cls") getElementsByTagName("div") querySelectorAll("div.cls")
var elm_list = document.querySelectorAll("div.cls");
var nr_elms = elm_list.length;       // numar elemente selectate
alert(nr_elms);
Indicati functia care returneaza suma valorilor dintr-un array.
array_sum() array_diff() array_shift()
$arr = array(1, 2, 3, 4);
$arr_sum = array_sum($arr);
echo $arr_sum;       // 10
Indicati forma corecta a verbului "study" (a studia) la Trecutul Simplu in aceasta propozitie: "We (study) English."
studyed studys studied
We studied English.
- Noi am studiat engleza.
Indicati forma corecta a verbului "decir" (a spune) la Prezent in aceasta propozitie: "Yo (decir) siempre la verdad."
digas digo decir
Yo digo siempre la verdad.
- Eu spun mereu adevarul.
PHP MySQL - Introducere si Tipuri de Date - Tutorial PHP