accesarea bazelor de date - alexandru ioan cuza university

24
Programare Programare Perl Perl Sabin Sabin - - Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busaco www.infoiasi.ro/~busaco / / 1 1 Programare Programare Perl Perl Accesarea Accesarea bazelor bazelor de date de date Sabin-Corneliu Buraga Facultatea de Informatica, UAIC, Romania http://www.infoiasi.ro/~busaco/

Upload: others

Post on 16-Oct-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 11

ProgramareProgramare PerlPerlAccesareaAccesarea bazelorbazelor de datede date

Sabin-Corneliu BuragaFacultatea de Informatica, UAIC, Romania

http://www.infoiasi.ro/~busaco/

Page 2: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 22

“Computers are useless.They can only give you answers.”

Pablo Picasso

Page 3: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 33

CuprinsCuprins

• Sisteme de baze de date• Modulul DBI• Exemple

Page 4: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 44

BazeBaze de datede date• În vederea organizarii si regasirii facile

a informatiilor, acestea pot fi stocateîn baze de date (relationale)– Fiecare baza de date contine mai multe tabele– O tabela este structurata în coloane (cimpuri) si

rânduri (înregistrari)– Fiecare cimp se desemnat de un nume si un tip de

date (numeric, sir de caractere, data,...)– Pentru facilitarea cautarii/sortarii pot fi asociati si

indecsi, conform valorilor unui/unor cimp(uri)– Intre tabelele unei baze de date se pot defini

diverse relatii

Page 5: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 55

BazeBaze de datede date• Ansamblul de aplicatii care realizeaza

managementul bazelor de date se numestesistem de baze de date relational(Relational DataBase Management System –RDBMS)– DB2– Informix– Microsoft SQL Server– MySQL– Oracle– PostgreSQL– …

Page 6: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 66

BazeBaze de datede date

• Operatiile asupra bazelor de date, tabelelor, valorilor inregistrarilor etc. se specificaintr-un limbaj declarativ: SQL (Structured Query Language)

• Accesul la un server de gestiune a bazelorde date se realizeaza via un client

Page 7: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 77

MySQLMySQL

• Arhitectura open source• Foarte rapid, optimizat pentru acces la date• www.mysql.com• Larg folosit in cadrul solutiilor de comert

electronic (e.g., aplicatii Web de tip e-shop)• API-uri disponibile in majoritatea limbajelor

de programare (C, C++, Perl, PHP, Python,…)• Componente: server (mysqld) + client (mysql,

PHPMyAdmin, script Perl, program PHP,…)

Page 8: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 88

MySQLMySQL

• Accesul la server via un client in linie de comanda: mysql [ optiuni ] [ nume_baza_de_date ]

• Optiuni uzuale:-h masina (numele masinii/serverului)-p [ parola ] (parola pentru autentificare)-u utilizator (numele utilizatorului)

• Exemplu: mysql –u magazin –p

• Alte detalii: info mysql (in UNIX/Linux)

Page 9: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 99

MySQLMySQL | | exempluexemplu

(infoiasi)$ mysql -u busaco –pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 2 to server version: 4.0.11a-gammaType 'help;' or '\h' for help. Type '\c' to clear the buffer.mysql> use clienti;Reading table information for completion of table and column namesDatabase changed

Page 10: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 1010

MySQLMySQL | | exempluexemplu

mysql> select nume, prenume from comenzi;+---------+---------+| nume | prenume |+---------+---------+| Savon | Buritin || Vigoniu | Bonzui || Nilla | Sapo || Lzian | Xi || Tin | Debre |+---------+---------+5 rows in set (0.01 sec)

Page 11: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 1111

MySQLMySQL | | exempluexemplu

mysql> select nume from comenziwhere id > 3;

+-------+| nume |+-------+| Lzian || Tin |+-------+2 rows in set (0.11 sec)

Page 12: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 1212

MySQLMySQL

• Alte operatii uzuale:– insert– update– delete– create database– create table– drop table– grant

Page 13: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 1313

MySQLMySQL | | exempluexemplumysql> create database studenti;Query OK, 1 row affected (0.00 sec)mysql> use studentiDatabase changedmysql> create table note (

-> nume char (40),-> adresa char(40),-> grupa integer,-> nota integer not null);

Query OK, 0 rows affected (0.01 sec)mysql> insert into note values

-> ("Radu Filip", "[email protected]", 2, 10);

Query OK, 1 row affected (0.00 sec)

Page 14: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 1414

MySQLMySQL | | exempluexemplu

mysql> grant usage on studenti.* to busaco@localhost;

Query OK, 0 rows affected (0.00 sec)mysql> grant select, insert, delete on studenti.* to busaco@localhost;

Query OK, 0 rows affected (0.00 sec)

Page 15: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 1515

CuprinsCuprins

• Sisteme de baze de date• Modulul DBI

– Caracterizare– Arhitectura– Moduri de interactiune– Operatii

Page 16: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 1616

DBIDBI• Modulul DBI asigura independenţa de

arhitectura internă şi modul de comunicare cu sistemele de gestiune a bazelor de date relaţionale

• Componente:– interfaţa de programare DBI

(ofera suport la nivel înalt pentru diferite operaţii cu baze de date)

– driver-e(asigură modalitatea efectivă de conexiune la un server de baze de date particular)

Page 17: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 1717

DBIDBI

• Arhitectura:

Page 18: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 1818

DBIDBI

• Interactiunea cu un server de baze de date se realizeaza via descriptori (handlers):– Driver handler – reprezinta driver-ul asociat

unui sistem de baze de date relationale(MySQL, PostgreSQL, Oracle etc.)

– Database handler – specifica o conexiune unicala o baza de date particulara stocate de un server

– Query handler – reprezinta o interogare (comanda) SQL ce va fi executata asupra unei baze de date

Page 19: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 1919

DBIDBI

• Operatii cu baze de date (MySQL):– Conectarea:

connect ($masina, $baza, $utiliz, $parola)

use Mysql; $dbh = Mysql->connect (‘localhost’, ‘studenti’,

‘busaco’, ‘P@roLa’);$mesaj_eroare = Mysql->errmsg();

Page 20: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 2020

DBIDBI

• Operatii cu baze de date (MySQL):– Interogarea:

query ($sql)

$qh = $dbh->query (‘select * from note’);# numarul de inregistrari obtinute$inreg = $qh->numrows ();

Page 21: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 2121

DBIDBI

• Operatii cu baze de date (MySQL):– Accesul la inregistrarile obtinute:

fetchrow_array ()fetchrow ()fetchhash ()

while (@inreg = $qh->fetchrow_array()) { print ("Studentul: " . $inreg{‘nume’} .

" are nota " . $inreg{‘nota’} . "\n");

Page 22: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 2222

DBIDBI

• Alte metode utile:– listtables() – furnizeaza tabelele unei baze

de date– listfields() – furnizeaza numele campurilor

dintr-o tabela– prepare() – pregateste o comanda SQL

spre a fi executata– execute() – executa o comanda SQL– finish() – finalizeaza o comanda SQL– disconnect () – intrerupe conectarea

Page 23: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 2323

PerlPerl• Exercitiu

– Să se realizeze o aplicaţie Web care să proceseze informaţiile privitoare la cursele aeriene furnizate de o anumită companie (datele vor fi stocate intr-o bazăde date relatională)

Page 24: Accesarea bazelor de date - Alexandru Ioan Cuza University

ProgramareProgramare PerlPerl

SabinSabin--Corneliu Buraga Corneliu Buraga www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// 2424

RezumatRezumat

• Sisteme de baze de date• Modulul DBI• Exemple