Baze de date in pagini Web

Notiuni introductive despre SQL si MySQL

    Baza de date MySQL este una dintre cele mai populare baze de date SQL (Structured Query Language) de tip "open source".
    MySQL este o baza de date relationala gestionata prin intermediul limbajului SQL. SQL-ul este un limbaj de interogare standardizat ANSI si ISO. Majoritatea sistemelor de gestiune a bazelor de date (SGBD) recunosc acest limbaj. SQL permite gestionarea bazelor de date avand posibilitatea de a crea baze de date, tabele, si de a inserara, modifica, sterge si regasi date continute de tabele.

  • Baze de date MySQL

        In cadrul bazelor de date MySQL, datele sunt pastrate in tabele. O baza de date este compusa din una sau mai multe tabele, fiecare tabela fiind structurata pe linii si coloane.
        Bazele de date pot stoca informatie structurata pe categorii fiind foarte utile in realizarea aplicatiilor client-server care realizeaza acces la baze de date.

  • Crearea bazelor de date si a tabelelor

        Bazele de date, tabelele si gestionarea bazei de date poate fi facuta direct prin comenzi SQL sau se pot utiliza apicatii prietenoase oferite de producatorii bazelor de date. MySQL ofera un client mysql pentru comenzi SQL precum si interfete grafice de genul MySQL Query Browser sau MySQL Administrator in vederea gestionarii bazelor de date MySQL. Bazele de date MySQL pot fi gestionate si prin intermediul aplicatiilor realizate in Php, cel mai popular fiind phpMyAdmin.



        Aplicatia phpMyAdmin este oferita de majoritatea provide-rilor in vedera gestoinarii bazelor de date la nivel de utilizator.
        In cazul in care avem drepturi de administrator al intregului sistem de baze de date MySQL este mult mai usor sa utilizam MySQL Query Browser sau MySQL Administrator. In imaginea de jos este prezentat ecranul aplicatiei MySQL Query Browser. Dupa logare, conectare la baza de date , selectia unei tabele si lansarea comenzii :SELECT * FROM nume_tabela;


        Gstionarea bazei de date poate fi facuta si direct prin comenzi SQL. Pentru crearea bazei de date numita "cons_el" vom lansa comanda:

    CREATE DATABASE cons_el;
    USE Cons_el;
    


        Vom utiliza aceasta baza de date pentru a stoca date referitoare la diferiti consumatori electrici. Vom avea nevoie de o tabela in care sa pastram informatii de genul: denumire consumator (den_c), tensiune nominala (tens_n), curent nominal (crnt_n), ungiul de defazajul (def) introdus in cazul in care este un consumator inductiv sau capacitiv.
        Pentru crearea tabela numita "ap_electr" vom lansa comanda:

    CREATE TABLE  cons_el . ap_electr  (
       ap_id  SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
       den_ap  VARCHAR(25) NOT NULL,
       tens_n  INTEGER UNSIGNED NOT NULL,
       crnt_n  DOUBLE(5,2) NOT NULL,
       def  DOUBLE(3,2) NOT NULL,
      PRIMARY KEY( ap_id )
    )
    ENGINE = InnoDB
    COMMENT = 'Aparate electrice';
    


        Daca utilizam MySQL Query Browser obtinem:



  • Inserarea datelor in tabele

        
        Pentru a insera date in tabela numita "ap_electr" vom lansa comanda:

    INSERT INTO  ap_electr  ( ap_id , den_ap , tens_n , crnt_n , def ) VALUES 
     (1,'Motor electric',220,10.50,1.27),
     (2,'Bec electric',220,23.00,0.00),
     (3,'Motor trifazat',380,16.75,2.44);
    


        Au fost introduse trei inregistrari , atribuindu-se valori pentru fiecare camp din fiecare linie.

  • Afisarea datelor introduse in tabele

        Datele introduse, pot fi vizualizate folosind domanda "Select"

    SELECT * FROM ap_electr ;
    

        Folosind MySQL Query Browser obtinem:



  • Cautarea datelor introduse in tabele

        In cazul in care dorim sa gasim o anumite date stocate in baza de date vom folosi tot instructiunea "Select" insa cu clauza "Where". Daca dorim sa gasim toate aparatele care funcioneaza la 220 v lansam comanda: Datele introduse, pot fi folosind domanda "Select"

    SELECT * FROM ap_electr WHERE tens_n=220;
    

        Dupa lansarea comenzii vor fi selectate numai doua inregistrari adica inregistrarile cu tens_n=220

  • Modificarea datelor introduse in tabele

        In cazul in care dorim sa mdificam anumite date stocate in baza de date vom folosi tot instructiunea "Update" cu clauza "Where" pentru a ajunge la inregistrarea sau inregistrarile dorite. Daca dorim sa modificam defazajul inregistrarii cu numarul 3 adica _ap_id=3, la valoarea 2.55, lansam comanda: Datele introduse, pot fi folosind domanda "Select"

    UPDATE ap_electr
    SET def=2.55
    WHERE ap_id=3;
    

        Dupa lansarea comenzii aparatul cu nr 3 (Motor trifazat) va avea setat defazajul la 2.55

  • Stergere datelor introduse in tabele

        In cazul in care dorim sa stergem anumite inregistrari vom folosi comanda "Delete" cu clauza "Where" Pentru stergerea inregistrarilor cu defazaj 0, lansam comanda:

    DELETE *FROM ap_electr
    WHERE def=0;
    

        Dupa lansarea comenzii se va sterge inregistrarea 2 (Bec electric).

  • Afisarea datelor introduse in tabele dupa diverse criterii de ordonare

        In cazul in care dorim sa controlam ordinea in care se selecteaza inregistrarile lansam comanda:

    SELECT *FROM ap_electr
    ORDER BY den_ap ASC;
    

        Dupa lansarea comenzii se vor afisa datele in ordinea alfabetica directa a denumirii aparatelor.

    Utilizare PHP si MySQL pentru realizarea aplicatiilor client-server

        Puterea unei aplicatii "pe partea" serverului este data de posibilitatea conectarii acesteia la o baza de date.

  • Conectarea la o baza de date MySQL din PHP

        Conectarea la serverul bazei de date se face folosind functia de conectare mysql_connect

        Sintaxa acestei functii este urmatoarea:

    mysql_connect(nume_server, nume_utilizator, parola);
    

        Dupa conectarea la serverul bazei de date, se face selectia bazei de date folosind functia mysql_select_db

    mysql_select_db(baza_de_date);
    

        Sa presupunem ca am creat baza de date "cons_el" si tabela "ap_electr" descrise mai sus. Vom crea si un utilizator numit "student" care se autentifica cu parola "psw". Alocam drepturile :SELECT, INSERT, UPDATE si DELETE.
        Vom realiza un script "con_mysql.php" care realizeaza conectarea la serverul bazei de date si selecteaza baza de date "cons_el".
        Vom utiliza acest script pentru a realiza aplicatii mai complexe cu acces la baze de date.



        Conectarea la serverul bazei de date se face folosind functia de conectare mysqli_connect

        Functia mysql_connect a fost inlocuita in ultimele versiuni cu mysqli_connect functie careia i se transmite numele bazei de date la care se face conectarea fara a fi necesara conectarea in prealabil la aceasta.
        Sintaxa acestei functii este urmatoarea:

    mysqli_connect(nume_server, nume_utilizator,parola, nume_baza_de_date);
    

        Scriptul "con_mysqli.php" care realizeaza conectarea la serverul bazei de date si selecteaza baza de date "cons_el" devine:



        Sa presupunem ca vrem sa creem o tabela "electr" in cadrul schemei "cons_el", cu urmatoarea structura:

        Urmatoarele fraze SQL de exemplu genereaza tabela "electr" si o initializeaza cu doua inregistrari.



        Vom scrie in continuare o aplicatie server in php, care sa afiseze valorile tuturor inregistrarilor, din tabela "electr" din baza de date "cons_el", unde se va folosi functia de conectare mysql_connect


        Dupa cum se observa, fraza de interogare a bazei de date este trimisa ca parametru functiei @mysql_query . Functia @mysql_query returneaza raspunsul bazei de date sub forma unui tablou. Variabila $rezult este defapt un tablou care are atatea linii cate inregistrari s-au gasit in baza de date.
        Extragerea unei linii din acest tablou se face cu functia mysql_fetch_array() . Variabila $row este deci un vector care contine atatea elemente cate campuri au fost selectate din baza de date.
        Extragerea unei valori corespunzatoare unui camp se face desigur utilizand un index sau denumirea asociata. Astfel pentru a obtine de exemplu valoarea id_el vom folosi $row[0] sau $row['id_el'], identic pentru a obtine valoarea min vom folosi: $row[3] sau $row['min']

        Vom relua aplicatia care afiseaza valorile tuturor inregistrarilor, din tabela "electr" din baza de date "cons_el", dar se va folosi functia de conectare mysqli_connect

  • Vizualizarea datelor dintr-o baza de date MySQL



    Connect Error (2002) Connection refused