Menu

Notiuni de baza in lucrul cu MySQL

In lectia Introducere in MySQL alaturi de PHP am vorbit despre MySQL impreuna cu PHP , un fel de pregatire pentru ce va urma. Dar lectiile viitoare sunt putin mai complicate iar daca nu ati mai avut nici o legatura cu MySQL atunci nu ati fi inteles complet despre ce este vorba. In lectiile viitoare despre MySQL si PHP vom discuta mai multe despre lucrurile importante ca adaugarea, modificarea, eliminarea sau stergerea datelor dintr-o baza de date si nu despre tabele si coloane de exemplu. Aceasta lectie va avea teorie mai multa deoarece doresc sa ma asigur ca vei fi pregatit pentru lectiile viitoare.

1. Structura

Structura este de felul urmator:
  • bazele de date contin tabele
  • tabelele contin coloane
  • tabelele contin randuri
  • randurile contin date
  • fiecare rand are o parte specifica unei coloane
O imagine mai buna de ansamblu o sa vezi in diagrama de mai jos:
In diagrama de mai sus avem o baza de date cu numele Nume baza de date, baza de date contine 4 tabele, tabelele contin 2 coloane, tabelele contin 2 randuri. Simplu nu? De retinut insa ca nu este deloc recomandat ca numele tabelelor sau bazelor de date sa contina spatii, cel mai bine folositi caracterul _ pentru a inlocui spatiile.

2. Putin SQL

Eu recomand pentru incepatori sa foloseasca PHPMyAdmin pentru a crea baze de date, tabele , coloane sau pentru a adauga, modifica, vizualiza sau sterge randuri insa ele se pot face si manual.

2.1 Creare baza de date

Sintaxa pentru a crea o baza de date este:
CREATE DATABASE nume_baza;
...unde nume_baza este numele bazei de date. Dar daca baza de date nume_baza deja exista va genera o eroare. Insa mai aveti si o alternativa care va crea o baza de date in caz ca nu exista deja.
CREATE DATABSE IF NOT EXISTS nume_baza;
...sintaxa SQL de mai sus va crea baza de date nume_baza in caz ca ea nu exista deja.

Insa in caz ca doriti sa introduceti in baza de date si caractere romanesti(diacritice) trebuie sa specificati charset-ul utf8. Sintaxa este:
CREATE DATABASE nume_baza CHARACTER SET utf8 COLLATE utf8_general_ci;

2.2 Tipuri de date

Tipurile de date sunt folosite in general cand cream coloane, este necesar sa le stiti in caz ca nu doriti sa lucrati doar cu PHPMyAdmin dar oricum le veti prinde cu timpul, dar mai bine sa le stiti mai devreme.
Tip Descriere
CHAR(x) Folosit pentru a stoca string-uri scurte de x caractere, unde x poate fi un numar de la 0 la 255 caractere. In caz ca string-ul adaugat in tabel este mai mic decat x se vor adauga spatii pentru a ajunge la lungimea x. In caz ca stringul adaugat in tabel este mai mare decat x se vor sterge caracterele in plus si va fi generat un advertisment.
VARCHAR(x) Folosit pentru a adauga string-uri mai mari, fara lungime fixa dar cu lungime maxima de x caractere(x bytes). Unde x poate fi un numar de la 0 la 65,535 caractere. Unul din cele mai folosite tipuri.
BLOB si TEXT Datele nu au o lungime maxima sau fixa, consumul de resurse creste cu aceste tipuri de date(vezi aici de ce, in engleza). Aceste tipuri nu pot avea o valoare DEFAULT.
INT Folosit pentru numere, aveti grija deoarece numarul maxim este 2147483647(iar minimul -2147483648) iar cu Unsigned maximul 4294967295 iar minimul 0. Pentru numere mai mari folositi BIGINT care are maximul 9223372036854775807 fara Unsigned iar cu Unsigned il are 18446744073709551615. Retineti insa ca daca este cu Unsigned minimul devine 0.
DATE, DATETIME si TIMESTAMP DATE este data in format YYYY-MM-DD cu perioada cuprinsa intre 1000-01-01 si 9999-12-31
DATETIME este data si ora in format YYYY-MM-DD HH:MM:SS cu perioada cuprinsa intre 1000-01-01 si 9999-12-31
TIMESTAMP este data si ora in format YYYY-MM-DD HH:MM:SS cu perioada cuprinsa intre 1970-01-01 00:00:01 UTC si 2038-01-19 03:14:07 UTC. La update se actualizeaza cu TIMESTAMP-ul curent iar ca valoare DEFAULT are timestamp-ul curent.

2.3 Creare tabel

Sintaxa pentru a crea un tabel este urmatoarea:
CREATE TABLE nume_tabel (
	nume VARCHAR(30),
	ani INT
);
...exemplul de mai sus va crea un tabel cu numele nume_tabel cu coloana nume de tip VARCHAR(30) si coloana ani de tip INT. Observati ca coloanele sunt separate prin virgula. In caz ca tabelul deja exista va fi generata o eroare, pentru a crea un tabel in caz ca el nu exista deja folosim:
CREATE TABLE IF NOT EXISTS nume_tabel (
	nume VARCHAR(30),
	ani INT
);

Dar coloanele mai pot avea si atribute speciale. PRIMARY KEY(cheia primara sau index-ul primar) este folosita pentru o ordonare logica a randurilor si sporeste semnificativ viteza de cautare, valorile din coloana care este cheie primara trebuie sa fie unice , nu pot fi doua valori la fel. AUTO_INCREMENT este o proprietate speciala, o valoare default a unei coloane, la fiecare rand adaugat i se da un id incrementat astfel primul rand va avea id-ul 1, al doilea va avea id-ul 2, al 3-lea id-ul 3 si tot asa. Index-ul este o proprietate folosita pentru o viteza mai buna de cautare, deoarece toate randurile sunt salvate deja incat cautarea pe baza acelui index sa se faca mai rapid. Urmatorul cod stabileste cheia primara cu proprietatea AUTO_INCREMENT(o coloana nu poate fi AUTO_INCREMENT daca nu este un index).
Urmatorul exemplu creaza un tabel cu numele nume_tabel2 in caz ca nu exista deja cu coloana id care este cheie primara si se incrementeaza automat la fiecare insert si cu coloana nume de tip VARCHAR(30) si coloana ani de tip INT:
CREATE TABLE IF NOT EXISTS nume_tabel2 (
	id INT PRIMARY KEY AUTO_INCREMENT,
	nume VARCHAR(30),
	ani INT
);
Cam atat cu crearea tabelelor, daca mai doriti cateva exemple dati click aici.

2.4 Stergerea sau modificarea tabelelor

Pentru a sterge un tabel folosim:
DROP TABLE nume_tabel;

Pentru a sterge o coloana folosim
ALTER TABLE nume_tabel DROP nume_coloana;

Pentru a adauga o coloana unui tabel folosim
ALTER TABLE nume_tabel ADD nume_coloana tip_date;
...unde tip_date este orice tip de date invatat la capitolul 2.2 Tipuri de date
Putem insa si adauga coloane intr-o ordine(da, coloanele au o ordine), urmatorul cod adauga o coloana ca prima coloana din tabel:
ALTER TABLE nume_tabel ADD nume_coloana tip_date FIRST;
Putem specifica insa si dupa ce coloana sa fie pozitionata:
ALTER TABLE nume_tabel ADD nume_coloana1 tip_date AFTER nume_coloana2;
...unde nume_coloana2 este coloana dupa care va fi pozitionata nume_coloana1


Ti-a placut articolul? Asigura-te ca-ti dam de veste cand publicam altele noi.


Tags: Tutoriale, Programare Web, Tutoriale Mysql, Php, Php Si Mysql, Curs Php

Comments Nota 0 din 0