»  Pagina principala  »  PHP si mysql »  Comenzi MySQL

Comenzi MySQL

Baza de date este coloana vertebrala a unui site dinamic. In acest articol aflati cam tot ce aveti nevoie pentru a construi o baza de date.
Pentru pornirea serverului de MySQL din Windows trebuie sa rulati fisierul mysqld.exe aflat (daca sa facut instalarea standard) in c:\mysql\bin\mysqld.exe pe Windows 95/98 sau c:\mysql\bin\mysqldnt.exe pe NT/2000/XP.
Daca vreti ca serverul de MySQL sa porneasca automat la fiecare repornire a Windows-ului, puteti adauga un shortcut in Start Menu/Start up. Este recomandat ca pe Windows NT/2000/XP sa setati serviciul MySQL sa porneasca automat.
Daca vreti sa verificati daca serverul MySQL este pornit scrieti urmatoarea linie de cod in comand prompt:
c:\mysql\bin\mysqladmin version status proc
La Windows NT4 trebuie sa aveti instalat Service Pack 3 minim ca sa ruleze MySQL. Mai are nevoie si de protocolul TCP/IP.
Daca atunci cand accesati adresa http://localhost nu se vede o pagina trimisa de server (de obicei contine mesajul "If you can see this, if means that the installation of the Apache web server software on this system was successful."), verificati intai daca serverul este pornit si daca nu cumva aveti atl server HTTP (PWS, IIS) care ruleaza.
La Windows 95 trebuie sa downloadati si sa instalati Windows Socket 2 Update de la Microsoft inainte de a incepe instalarea Apache. Windows NT 4.0, 98, ME si 2000 nu au nevoie de acest update.
Cu Windows XP, ca sa ruleze serverul Apache trebuie sa fie instalat Windows XP Service Pack 1 (minim).
Pe unele sisteme poate fi necesar sa copiati fisierele php4apache.dll si php4ts.dll din directorul /php/ in directorul /windows.

Cel mai bun exemplu pe care il stiu despre cum arata (virtual) o baza de date este un document Microsoft Excel cu randurile si coloanele aferente. La fel ca si in Excel se pot face calcule, sortari, adunari si chiar mai mult...
MySQL este cel mai popular sistem de management pentru baze de date relationale deoarece este Open Source (gratuit). Intr-o baza de date relationala datele sunt stocate in mai multe tabele separate, fiind astfel imbunatatita viteza si flexibilitatea. Tabelele pot fi legate intre ele prin relatii definite de noi, fiind astfel posibil sa combinam la cerere datele din mai multe tabele.
SQL, acronimul pentru "Structured Query Language", este limbajul standard pentru comunicarea cu bazele de date. Comenzile SQL sunt folosite pentru a interactiona cu baza de date (de exemplu sa adauge, sa modifice sau sa stearga datele). Alte sisteme de baze de date care folosesc SQL sunt Microsoft SQL Server, Acces, Oracle, Sybase, etc.

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 INT, camp_c TINYINT); # creeaza tabelul 'tabel_unu' cu un camp numit '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) VALUES (valoarea1, valoarea2, valoarea3); # introduce in tabelul cu numele 'tabel', in '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 (valoarea1, valoarea2); # Se poate omite una din coloane, daca avem 5 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, valoarea2, valoarea3); # o varianta simplificata care se poate aplica doar cand introducem valori in toate campurile tabelului (nu se poate omite)
INSERT INTRO tabel VALUES (valoarea1, valoarea2, ``); # identica ca cea dinainte, doar ca in lipsa unei 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 = 'valoare1'; # afiseaza campurile a caror continut este la fel cu 'valoare1'
SELECT campul1, campul2 FROM tabel WHERE campul2 LIKE 'valoare2'; # cauta si afiseaza toate inregistrarile in care 'campul2' este asemanator cu 'valoare2'
SELECT campul1, campul2 FROM tabel WHERE campul2 LIKE 'valoare2%'; # cauta si afiseaza toate inregistrarile in care 'campul2' incepe cu 'valoare2'
SELECT campul1, campul2 FROM tabel WHERE campul2 LIKE '%valoare2'; # cauta si afiseaza toate inregistrarile in care 'campul2' se termina cu 'valoare2'
SELECT campul1, campul2 FROM tabel WHERE campul2 LIKE '%valoare2%'; # cauta si afiseaza toate inregistrarile in care 'campul2' se aseamana cu 'valoare2' oriunde in cadrul textului.
SELECT * FROM tabel WHERE campul1=valoare1 AND campul2 LIKE '%valoare2%'; # afiseaza toate campurile care contin 'valoarea1' si se asemanana cu 'valoare2'
SELECT campul1, campul2 FROM tabel WHERE campul1 != valoarea3; # cauta si afiseaza toate campurile care difera de 'valoarea3'
SELECT campul1, campul2 FROM tabel WHERE campul2 NOT LIKE 'valoarea3%'; # cauta si afiseaza toate campurile care nu incep cu 'valoare3'
SELECT campul1 FROM tabel ORDER BY campul1 ASC; # afiseaza continutul campului 'campul1' in ordine crescatoare
SELECT campul1, campul2 FROM tabel ORDER BY campul1 ASC, campul2 DESC; # afiseaza continutul campului 1 in ordine crescatoare si campul 2 in ordine descrescatoare.
SELECT count(*) FROM tabel; # afiseaza cate inregistrari sunt in total in tabel
SELECT count (*) FROM tabel WHERE campul1=variabila1; # cate inregistrari sunt in tabel al caror 'camp1' este 'variabila1'
SELECT camp1 FROM tabel GROUP BY camp1 ORDER BY camp1 ASC; # afiseaza continutul campului 1 grupat dupa '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 coloanei 1', coloana2='noua valoare a coloanei 2' WHERE conditii; # pentru actuaizarea continutului unei inregistrari din tabel. Sintaxa este la fel ca la comanda SELECT.
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 AFTER coloana1; # adauga o coloana numita 'nr' dupa 'coloana1' in 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...

Cat de mare poate fi un tabel?

MySQL stocheaza fizic datele unui tabel intr-un fisier pe hard disc si cu cat tabelul e mai mare, cu atat marimea acestui fisier creste. Versiunea 3.22 a MySQL are o limita de 4 GB pentru marimea unui tabel. In versiunile superioare aceasta limita este extinsa pana la 8 milioane TB pentru tipul de tabel MyISAM. Cu toate acestea, sistemele de operare pot avea propriile limitari ale marimii fisierelor. Marimea impicita a tabelelor MySQL este de aproximativ 4 GB. Puteti verifica marimea maxima pentru un tabel cu ajutorul comenzilor SHOW TABLE STATUS sau myisamchk -dv table_name. Pe platforma Windows va trebui sa folositi sistemul de fisiere NTFS daca doriti sa aveti tabele mai mari de 4 GB.





Link-ul autorului:
www.tutoriale.far-php.ro

Comentarii




Voteaza acest articol!
 



Trimite un comentariu!

Nume *
E-mail *
Comentariu *
  Vreau sa fiu anuntat de urmatoarele mesaje la acest articol

Security image

Fanache A. Remus

www.farsoft.far-php.ro - portofoliu
http://www.farsoft.far-php.ro

Cloud tag

tutorial, photoshop, html, css, javascript, flash, php, mysql, grafica 3D, tutorial, coduri, scripturi, generator de coduri, cursuri php