Baze de date -...

22
BAZE DE DATE

Transcript of Baze de date -...

BAZE DE DATE

BAZA DE DATE RELAŢIONALĂ

• Chiar dacă F.E. Codd, ca matematician, a construit un model riguros, cu concepte matematice, baza de date relaţională este percepută de utilizatorii săi ca o colecţie de tabele (tablouri bidimensionale de date, numite şi relaţii), noţiune care nu necesită definiţii suplimentare.

• Sunt aici patru concepte care trebuie reţinute şi înţelese:

• tabelele

• coloanele tabelului

• rândurile tabelului

• câmpurile din tabel, de pe o anumită coloană şi linie.

ExempluTabela CLIENŢI

--------------------------------------------------

| NrS NUME STARE ORAS |

|------------------------------------------------|

| S1 Ionescu 20 LONDRA |

| S2 Popescu 10 PARIS |

| S3 Teodorescu 30 PARIS |

--------------------------------------------------

Tabela PIESE

---------------------------------------------------------

| NrP NUMEP CULOARE GREUTATE ORAS |

|-------------------------------------------------------|

| P1 NIT ROSU 12 LONDRA |

| P2 PIRON VERDE 17 PARIS |

| P3 SURUB ALBASTRU 17 ROME |

| P4 SURUB ROSU 14 LONDON |

---------------------------------------------------------

Exemplu

Tabela CUMPARATURI

-------------------

| NrS NrP QTY |

|-----------------|

| S1 P1 300 |

| S1 P2 200 |

rând--------->| S1 P3 400 |

| S2 P1 300 |

| S2 P2 400 --|----câmp

| S3 P3 200 |

-------------------

Modelul relaţional

• Modelul relaţional al bazei de date imită procesele unei ramuri a algebrei, cunoscute sub numele de "Algebră relaţională". Aceste procese implică:

• o colecţie de obiecte cunoscute sub numele de RELAŢII

• o mulţime de operatori care acţionează asupra relaţiilor pentru a produce noi relaţii.

• O relaţie, în cazul discret, poate fi privită şi înţeleasă ca o Tabela.Modificarea datelor se realizează prin operaţii relaţionale aplicate asupra tabelelor. Spre exemplu, restricţia unei relaţii, a unui tabel, va fi un nou tabel în care se păstrează doar anumite linii. Iar proiecţiaunei relaţii - unui tabel - va fi un nou tabel în care se păstrează doar anumite coloane.

Operatorii relaţionaliOperatorii relaţionali (în cadrul bazelor de date relaţionale) sunt definiţi în tabelul următor:

Operatorul Relaţional Descrierea

Restricţia

este o operaţie care preia şi afişează datele din relaţie.Este posibil să se afişeze toate

rândurile sau doar rândurile care îndeplinesc o anume condiţie (sau mai multe

condiţii). Aceasta este de multe ori numită "submulţime orizontală"

Proiecţiaeste operaţia care afişează anumite coloane din relaţie, fiind numită de aceea şi

"submulţime verticală".

Produsuleste rezultatul obţinut când rândurile a două mulţimi de date sunt concatenate conform

condiţiilor specificate.

"Join"este rezultatul obţinut când rândurile a două mulţimi de date sunt concatenate conform

condiţiilor specificate.

Reuniunea afişează toate rândurile care apar în una, în cealaltă, sau în ambele relaţii.

Intersecţia afişează toate rândurile care apar în ambele relaţii.

Diferenţaafişează rândurile care apar numai în prima relaţie fără să apară în cea de a doua (în

SQL se utilizează chiar semnul - operatorul minus).

Proprietăţi ale bazelor de date

relaţionale• O bază de date relaţională apare ca o colecţie de relaţii (tabele)

• Există o mulţime de operatori pentru transformarea şi combinarea relaţiilor:• selecţia,

• proiecţia,

• produsul,

• join-ul,

• reuniunea,

• intersecţia,

• diferenţa

• Nu apar pointeri; conexiunile sunt făcute numai pe baza datelor.

• Există o independenţă totală a datelor.

• Limbajul utilizat pentru interogarea bazei de date este non-procedural şi similar limbii engleze.

• Utilizatorul nu specifică calea de acces şi nu are nevoie să ştie cum este aranjată fizic informaţia.

• Comenzile pentru selecţia sau refacerea datelor, cât şi acelea pentru realizarea schimbărilor în baza de date sunt incluse într-un singur limbaj, standardizat acum ca SQL.

Proprietăţile relaţiilor tabelare

Fiecare tabelă, individual, are următoarele proprietăţi:

• Nu există rânduri duplicate

• Nu există nume de coloane identice (duplicate)

• Ordinea rândurilor este neimportantă

• Ordinea coloanelor este neimportantă

• Valorile (câmpurile) sunt atomice (nedecompozabile).

SQL

• este limbajul utilizat pentru a accesa o bază de date

relaţională;

• poate fi utilizat atunci când accesul la baza de date este

necesar, de fiecare instrument de gestiune a bazelor de

date (Access, Oracle, SQL-Server, MySQL,...);

• este un limbaj simplu, ne-procedural, cu comenzi intuitive

în limba engleză;

• este un limbaj standard pentru bazele de date.

Trăsături caracteristice ale limbajului

SQL• SQL, ca şi majoritatea limbajelor de programare, foloseşte cuvinte din limba engleză. In

mod special cuvintele select, insert, delete ca elemente ale setului de comenzi.

• SQL este un limbaj neprocedural: specifică care sunt informaţiile dorite, nu cum se obţin acestea. Cu alte cuvinte, SQL nu cere să fie specificată metoda de acces la date.

• Execuţia comenzilor SQL asupra înregistrărilor nu se poate face decât secvenţial, asupra câte unei singure înregistrări. Setul de înregistrări fiind văzut ca set de linii ale unui tabel.

• SQL poate fi folosit de un şir de utilizatori, incluzând administratorul bazei de date, programatorii de aplicaţii, personalul de management şi multe alte tipuri de utilizatori.

• SQL include comenzi pentru o varietate de sarcini, incluzând: • selecţia unor date

• inserarea, extragerea şi ştergerea rândurilor dintr-un tabel

• crearea, modificarea şi ştergerea obiectelor de tip bază de date

• controlul accesului la baza de date şi la obiectele de tip bază de date

• verificarea - garantarea consistenţei bazei de date

Setul de comenzi SQL• Comenzile de definire a datelor (DDL): CREATE, ALTER, DROP

• aceste trei comenzi sunt utilizate dinamic pentru a crea, utiliza şi şterge orice structură de date, în particular tabele.

• Comenzile de manipulare a datelor (DML): INSERT, UPDATE, DELETE şi SELECT • utilizate pentru a introduce noi rânduri, pentru a schimba (actualiza) rândurile

existente, pentru a şterge rândurile nedorite din baza de date respectivă, şi, în fine, SELECT - comanda cea mai utilizată, folosită pentru a căuta, a selecta înregistrări din tabel sau dintr-o combinaţie de tabele ale bazei de date.

• Comenzile de control (grupul DCL), la dispoziţia administratorului(DBA): GRANT, REVOKE • utilizate pentru a da sau a lua drepturi de acces (la comenzi DML, deci la

operarea unor modificări a bazei de date).

Exemplu

CREATE TABLE CUSTOMER (

CustomerID Integer PRIMARY KEY

FirstName Character (15),

LastName Character (20) NOT NULL,

Title Character (5),

Street Character (25),

City Character (25),

State Character (2),

Phone Character (15) );

INSERT INTO CUSTOMER (CustomerID, FirstName, LastName)

VALUES (:vcustid, 'Dana', 'Popescu');

GRANT SELECT INSERT

ON CUSTOMER

TO Ana, Victor

Scrierea comenzilor SQL

• Comenzile SQL pot fi scrise pe una sau mai multe linii.

• Clauzele sunt uzual plasate pe linii separate.

• Poate fi folosită tabelarea.

• Cuvintele de comandă nu pot fi separate pe mai multe linii.

• Comenzile SQL pot fi scrise fie cu majuscule fie cu minuscule (nu sunt 'case sensitive').

• O comandă SQL este introdusă la prompterul SQL, iar liniile subsecvenţelor sunt numerotate.

• O singură declaraţie poate fi considerată curentă, cât timp ea este într-un buffer şi poate fi rulată într-un anumit număr de moduri :

• plasând un punct şi virgulă(;) la sfârşitul ultimei clauze.

• plasând un punct şi virgulă urmat de semnul / (slash) pe ultima linie în buffer.

• plasând un slash (/) la prompterul SQL.

• scriind comanda SQL R[UN] la prompterul SQL.

Blocul de interogare de bază

• Declaraţia SELECT regăseşte informaţia din baza de

date, putând îngloba şi unul sau mai mulţi operatori din

algebra relaţională.

• In cele mai simple forme trebuie să conţină:

• O clauză SELECT, care listează coloanele pentru afişare

astfel încât este esenţiala o Proiecţie.

• O clauză FROM care specifică tabela implicată.

Exemple

• SELECT * FROM EMP;

• SELECT ENAME, SAL*12, COMM FROM EMP;

• SELECT ENAME, SAL*12 ANNSAL, COMM FROM EMP;

• SELECT EMPNO||ENAME EMPLOYEE FROM EMP;

• SELECT DISTINCT DEPTNO FROM EMP;

• SELECT ENAME, JOB, SAL*12, DEPTNO FROM EMP ORDER BY ENAME;

• SELECT ENAME, JOB, HIREDATE FROM EMP ORDER BY HIREDATE DESC;

Sa nu ne stresam foarte tare

Utilizam serverul de baze date MySQL

Interfata phpmyadmin

Crearea unei tabele

Inserarea unei inregistrari

Afisarea inregistrarilor

Conectarea la baza de date

conect.php

<?php

$host = "localhost";

$user = "root";

$passw = “";

$db = “studentil";

$link= mysql_connect($hoste,$user,$passw)

or die("Nu raspunde serverul MySQL!");

mysql_select_db($dbe,$link)

or die("Nu gasesc baza de date!");

?>

Afisarea inregistrarilor

SELECT

[ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN]

[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]

[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [,

select_expr ...] [

FROM table_references [

WHERE where_condition] [

GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]]

[HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC |

DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}]

[PROCEDURE procedure_name(argument_list)] [INTO OUTFILE 'file_name'

export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name]]

[FOR UPDATE | LOCK IN SHARE MODE]]

SELECT * FROM studenti

SELECT nume FROM studenti

SELECT nume, data_n FROM studenti ORDER BY nume ASC

Si surpriza

• Exemplul