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.
Exemplu Tabela
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ţia unei relaţii - unui tabel - va fi un nou tabel în care se păstrează doar anumite coloane.
Operatorii relaţionali Operatorii 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ţia
este operaţia care afişează anumite coloane din relaţie, fiind numită de aceea şi "submulţime verticală".
Produsul
este 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ţa
afiş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 FirstName LastName Title Street City State Phone
Integer Character Character Character Character Character Character Character
PRIMARY KEY (15), (20) NOT NULL, (5), (25), (25), (2), (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 întrun 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 SELECT SELECT SELECT SELECT SELECT SELECT
* FROM EMP; ENAME, SAL*12, COMM FROM EMP; ENAME, SAL*12 ANNSAL, COMM FROM EMP; EMPNO||ENAME EMPLOYEE FROM EMP; DISTINCT DEPTNO FROM EMP; ENAME, JOB, SAL*12, DEPTNO FROM EMP ORDER BY ENAME; 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
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