Sunteți pe pagina 1din 3

Pentru a ne putea face o baza de date trebuie ca serverul MySQL sa fie pornit.

In continuare va
trebui sa folosim o aplicatie cu ajutorul careia sa comunicam cu serverul. Aplicatia se numeste
mysql.exe si se gaseste in c:\mysql\bin\. Pentru a rula, din prompul MSDOS scriem:
"c:\mysql\bin\mysql.exe -p -u root" iar cand ni se cere parola apasam ENTER (sau scriem parola
daca am introdus la instalare vreuna). Daca serverul nu este pornit vom primi mesajul de eroare
"Can't connect to MySQL server on 'localhost'".

SHOW DATABASES; # afiseaza o lista cu numele bazelor de date


existente
USE numele_bazei_de_date # alegerea bazei de date cu care lucram in
continuare
SHOW TABLES; # afiseaza tabelele existente in baza curenta
SHOW COLUMNS; # afiseaza informatii despre coloanele unui tabel
CREATE DATABASE numele_bazei; # creeaza o baza de date cu numele respectiv
CREATE TABLE tabel_unu (camp_a TEXT); # creeaza tabelul tabel_unu cu un camp numit
'camp_a' al carui tip este TEXT (vezi Tipuri de date)
CREATE TABLE tabel_unu (camp_a TEXT, camp_b # creeaza tabelul 'tabel_unu' cu un camp numit
INT, camp_c TINYINT); 'camp_a' al carui tip este TEXT, un camp numit
'camp_b' in care datele de pe coloana respectiva
vor fi numere intregi si in campul 'camp_c' vor fi
introduse doar numere intre -128 si 127
DROP TABLE tabel_unu; # sterge tabelul numit 'tabel_unu'
DROP DATABASE numele_bazei; # sterge baza de date cu numele 'numele_bazei'
INSERT INTRO tabel (camp1, camp2, camp3) # introduce in tabelul cu numele 'tabel', in
VALUES (valoarea1, valoarea2, valoarea3); 'campul1' 'valoarea1', in 'campul2' 'valoarea2' si in
'campul3' 'valoarea3'. Iata cum ar arata in format
tabelar:
campul1 campul2 campul3
valoarea1 valoarea2 valoarea3
INSERT INTRO tabel (camp1, camp2) VALUES # Se poate omite una din coloane, daca avem 5
(valoarea1, valoarea2); coloane, dar vrem sa introducem numai in 3,
specificam campul si valoarea doar pentru cele pe
care le vrem, restul le ignoram.
campul1 campul2 campul3
valoarea1 valoarea2  
INSERT INTRO tabel VALUES (valoarea1, # o varianta simplificata care se poate aplica doar
valoarea2, valoarea3); cand introducem valori in toate campurile tabelului
(nu se poate omite)
INSERT INTRO tabel VALUES (valoarea1, # identica ca cea dinainte, doar ca in lipsa unei
valoarea2, ``); valori se pun ghilimele.
SELECT * FROM tabel; # Afiseaza tot (*) ce exista in tabelul cu numele
'tabel'
SELECT campul1 FROM tabel; # afiseaza continutul campului 'campul1' din tabelul
'tabel'
SELECT campul1, campul2 FROM tabel # afiseaza continutul campurilor 'campul1' si
'campul2' din tabelul 'tabel'
SELECT * FROM tabel WHERE campul1 = # afiseaza campurile a caror continut este la fel cu
'valoare1'; 'valoare1'
SELECT campul1, campul2 FROM tabel WHERE # cauta si afiseaza toate inregistrarile in care
campul2 LIKE 'valoare2'; 'campul2' este asemanator cu 'valoare2'
SELECT campul1, campul2 FROM tabel WHERE # cauta si afiseaza toate inregistrarile in care
campul2 LIKE 'valoare2%'; 'campul2' incepe cu 'valoare2'
SELECT campul1, campul2 FROM tabel WHERE # cauta si afiseaza toate inregistrarile in care
campul2 LIKE '%valoare2'; 'campul2' se termina cu 'valoare2'
SELECT campul1, campul2 FROM tabel WHERE # cauta si afiseaza toate inregistrarile in care
campul2 LIKE '%valoare2%'; 'campul2' se aseamana cu 'valoare2' oriunde in
cadrul textului.
SELECT * FROM tabel WHERE campul1=valoare1 # afiseaza toate campurile care contin 'valoarea1'
AND campul2 LIKE '%valoare2%'; si se asemanana cu 'valoare2'
SELECT campul1, campul2 FROM tabel WHERE # cauta si afiseaza toate campurile care difera de
campul1 != valoarea3; 'valoarea3'
SELECT campul1, campul2 FROM tabel WHERE # cauta si afiseaza toate campurile care nu incep
campul2 NOT LIKE 'valoarea3%'; cu 'valoare3'
SELECT campul1 FROM tabel ORDER BY campul1 # afiseaza continutul campului 'campul1' in ordine
ASC; crescatoare
SELECT campul1, campul2 FROM tabel ORDER BY # afiseaza continutul campului 1 in ordine
campul1 ASC, campul2 DESC; crescatoare si campul 2 in ordine descrescatoare.
SELECT count(*) FROM tabel; # afiseaza cate inregistrari sunt in total in tabel
SELECT count (*) FROM tabel WHERE # cate inregistrari sunt in tabel al caror 'camp1'
campul1=variabila1; este 'variabila1'
SELECT camp1 FROM tabel GROUP BY camp1 # afiseaza continutul campului 1 grupat dupa
ORDER BY camp1 ASC; 'camp1' ascendent
SELECT * FROM tabel LIMIT 0,3; # afiseaza din tabel incepand de la prima
inregistrare inca 3.
SELECT * FROM tabel LIMIT 10,5; # afiseaza incepand de la inregistrarea 10 inca 5
inregistrari din tabel
DELETE FROM tabel WHERE conditii; # sterge inregistrarea din tabel. Sintaxa este la fel
ca la comanda SELECT.
UPDATE tabel SET coloana1='noua valoare a # pentru actuaizarea continutului unei inregistrari
coloanei 1', coloana2='noua valoare a coloanei 2' din tabel. Sintaxa este la fel ca la comanda SELECT.
WHERE conditii;
ALTER TABLE tabel ADD dat TEXT; # adaugare la tabelul existent a unei coloane
numita 'dat' de tip text.
ALTER TABLE tabel CHANGE dat data TEXT; # redenumeste coloana numita 'dat' cu numele
'data'
ALTER TABLE tabel CHANGE data data DATE; # modifica tipul coloanei 'data' din 'TEXT' in
coloana de tip 'DATE'
ALTER TABLE tabel ADD nr MEDIUMINT UNSIGNED # adauga o coloana numita 'nr' dupa 'coloana1' in
AFTER coloana1; tabelul 'tabel'
INDECSI # vezi descrierea mai jos
   
   

Desi MySQL are suport pentru diacritice si setul de caractere 8859-2,


este preferabil sa nu folositi diacritice in numele bazelor de date, tabelelor sau
campurilor.
De asemenea, nu puteti folosi ca nume de tabel sau de camp cuvinte
rezervate (nume de functii, tipuri de caractere din MySQL precum create, drop
sau column). Se pot folosi nume de tabele care contin spatii dar in practica
trebuie sa incadrati numele intre back-ticks ` (semul ` il gasiti pe tasta aflata
imediat sub Escape si inainte de 1).
Exemplu:
CREATE TABLE `tabel al carui nume are spatii` (`camp 1`, TEXT);
SHOW COLUMNS FROM `tabel al carui nume are spatii`;
Semnul * este definit in MySQL ca insemnand tot/toate.

Semnul % este folosit in interogarile MySQL daca vrem sa gasim cuvantul


oriunde in carul textului. Mai exact:
%cuvant_cautat - daca vrem sa afiseze toate cuvintele care se termina cu
'cuvantul_cautat' (poate fi si cateva litere)
cuvant_cautat% - afiseaza toate cuvintele care incep cu 'cuvantul_cautat'
%cuvant_cautat% - afiseaza toate cuvintele care contin 'cuvantul_cautat'
oriunde in text.
Putem afla cate inregistrari sunt pentru un criteriu de selectie cu ajutorul lui
count(). Putem afla astfel cate inregistrari sunt in total in tabel sau cate
inregistrari sunt in tabel al caror camp este cel cautat...
Cu ajutorul instructiunii GROUP BY putem "grupa" rezultatele astfel incat sa
nu vedem duplicatele si sa vedem doar valorile unice. Pentru a limita numarul
de rezultate folosim instructiunea LIMIT. Daca avem 10000 de inregistrari si
nu dorim sa vedem decat primele 3, folosim LIMIT 0,3 (adica de la prima
inrgistrare afiseaza 3 inregistrari) sau LIMIT 10,5 (afiseaza incepand de la
inregistrarea 10 inca 5 inregistrari).

Pentru stergerea inregistrarilor dintr-un tabel se foloseste comanda DELETE.


Pentru stergerea unui tabel sau a unei baze de date comanda este DROP.

Comanda UPDATE se foloseste cand vrem sa modificam continutul unei


inregistrari fara a o sterge.

Daca dorim sa schimbam structura unui tabel existent sau sa adaugam alte
coloane folosim comanda ALTER TABLE.

INDECSI - Cel mai folosit tip de index este id-ul. Id-ul este un numar unic de
identificare pentru un element distinct (un rand) al unui tabel. Un exemplu de
id din viata reala este numerotarea cd-urilor. Cand aveti un cd nou il
numerotati si il puneti in raft la sfarsit iar in catalog puteti sa il puneti sortat
dupa titlu sau dupa numarul de ordine. La fel si intr-o baza de date, puteti
crea un camp care sa introduca automat un nr pentru fiecare rand nou
adaugat in baza de date si la afisare puteti sa il folositi (de exemplu la
vizualizarea ultimilor 10 vizitatori folositi id-ul - vezi sectiunea de monitorizare
a traficului de pe acest site).
Pentru a creea un index avem urmatoarele comenzi:
Sa zicem ca avem o baza de date numita lista cu un camp caseta si adaugam
campul id_casete - comanda este urmatoarea:
ALTER TABLE `caseta` ADD `id_caseta` INT;
ALTER TABLE `caseta` CHANGE `id_caseta` `id_caseta` INT(11) UNSIGNED
NOT NULL;
ALTER TABLE `caseta` ADD PRIMARY KEY (id_caseta);
ALTER TABLE `caseta` CHANGE `id_caseta` `id_caseta` INT(11) UNSIGNED
DEFAULT "0" NOT NULL AUTO_INCREMENT;
Si din acest moment, orice caseta noua introdusa va avea automat un nr de
ordine. Este posibil ca toata insiruirea de comenzi de mai sus sa se poata face
printr-o singura linie de cod, dar este mai sigur sa faceti cate o modificare in
parte decat toate odata, pentru a detecta eventualele erori. Este bine sa
creati un id la inceputul tabelului, cand nu aveti intrari in baza de date, pentru
a face incrementarea automat, altfel e posibil sa va dea erori. Cu ajutorul id-
ului puteti afisa de exemplu noutatile, cu o comanda de genul - afiseaza
ultimele 10 intrari sortate dupa id..., stiind ca intotdeauna ultima intrare are
numarul cel mai mare...