Sunteți pe pagina 1din 22

Baze de date

BAZA DE DATE
RELAIONAL

Chiar dac F.E. Codd, ca matematician, a construit un
model riguros, cu concepte matematice, baza de date
relaional este perceput de utilizatorii si ca o colecie
de tabele (tablouri bidimensionale de date, numite i
relaii), noiune care nu necesit definiii suplimentare.
Sunt aici patru concepte care trebuie reinute i nelese:
tabelele
coloanele tabelului
rndurile tabelului
cmpurile din tabel, de pe o anumit coloan i linie.
Exemplu
Tabela CLIENI
--------------------------------------------------
| 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 |
rnd--------->| S1 P3 400 |
| S2 P1 300 |
| S2 P2 400 --|----cmp
| S3 P3 200 |
-------------------
Modelul relaional
Modelul relaional al bazei de date imit procesele unei
ramuri a algebrei, cunoscute sub numele de "Algebr
relaional". Aceste procese implic:
o colecie de obiecte cunoscute sub numele de RELAII
o mulime de operatori care acioneaz asupra relaiilor
pentru a produce noi relaii.
O relaie, n cazul discret, poate fi privit i neleas ca o
Tabela. Modificarea datelor se realizeaz prin operaii
relaionale aplicate asupra tabelelor. Spre exemplu,
restricia unei relaii, a unui tabel, va fi un nou tabel n
care se pstreaz doar anumite linii. Iar proiecia unei
relaii - unui tabel - va fi un nou tabel n care se pstreaz
doar anumite coloane.
Operatorii relaionali
Operatorii relaionali (n cadrul bazelor de date relaionale) sunt definii n tabelul urmtor:
Operatorul Relaional Descrierea
Restricia
este o operaie care preia i afieaz datele din relaie.Este posibil s se afieze toate
rndurile sau doar rndurile care ndeplinesc o anume condiie (sau mai multe
condiii). Aceasta este de multe ori numit "submulime orizontal"
Proiecia
este operaia care afieaz anumite coloane din relaie, fiind numit de aceea i
"submulime vertical".
Produsul
este rezultatul obinut cnd rndurile a dou mulimi de date sunt concatenate conform
condiiilor specificate.
"Join"
este rezultatul obinut cnd rndurile a dou mulimi de date sunt concatenate conform
condiiilor specificate.
Reuniunea afieaz toate rndurile care apar n una, n cealalt, sau n ambele relaii.
Intersecia afieaz toate rndurile care apar n ambele relaii.
Diferena
afieaz rndurile care apar numai n prima relaie fr s apar n cea de a doua (n
SQL se utilizeaz chiar semnul - operatorul minus).
Proprieti ale bazelor de
date relaionale
O baz de date relaional apare ca o colecie de relaii (tabele)
Exist o mulime de operatori pentru transformarea i combinarea relaiilor:
selecia,
proiecia,
produsul,
join-ul,
reuniunea,
intersecia,
diferena
Nu apar pointeri; conexiunile sunt fcute 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 informaia.
Comenzile pentru selecia sau refacerea datelor, ct i acelea pentru realizarea
schimbrilor n baza de date sunt incluse ntr-un singur limbaj, standardizat acum
ca SQL.

Proprietile relaiilor
tabelare
Fiecare tabel, individual, are urmtoarele
proprieti:
Nu exist rnduri duplicate
Nu exist nume de coloane identice
(duplicate)
Ordinea rndurilor este neimportant
Ordinea coloanelor este neimportant
Valorile (cmpurile) sunt atomice
(nedecompozabile).

SQL
este limbajul utilizat pentru a accesa o baz de
date relaional;
poate fi utilizat atunci cnd 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.

Trsturi caracteristice ale
limbajului SQL
SQL, ca i majoritatea limbajelor de programare, folosete 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 informaiile dorite,
nu cum se obin acestea. Cu alte cuvinte, SQL nu cere s fie specificat
metoda de acces la date.
Execuia comenzilor SQL asupra nregistrrilor nu se poate face dect
secvenial, asupra cte unei singure nregistrri. Setul de nregistrri
fiind vzut ca set de linii ale unui tabel.
SQL poate fi folosit de un ir de utilizatori, incluznd administratorul
bazei de date, programatorii de aplicaii, personalul de management i
multe alte tipuri de utilizatori.
SQL include comenzi pentru o varietate de sarcini, incluznd:
selecia unor date
inserarea, extragerea i tergerea rndurilor 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 consistenei 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 rnduri, pentru a schimba
(actualiza) rndurile existente, pentru a terge rndurile
nedorite din baza de date respectiv, i, n fine, SELECT -
comanda cea mai utilizat, folosit pentru a cuta, a selecta
nregistrri din tabel sau dintr-o combinaie de tabele ale bazei
de date.
Comenzile de control (grupul DCL), la dispoziia
administratorului(DBA): GRANT, REVOKE
utilizate pentru a da sau a lua drepturi de acces (la comenzi
DML, deci la operarea unor modificri 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
subsecvenelor sunt numerotate.
O singur declaraie poate fi considerat curent, ct timp ea este ntr-
un buffer i poate fi rulat ntr-un anumit numr de moduri :
plasnd un punct i virgul(;) la sfritul ultimei clauze.
plasnd un punct i virgul urmat de semnul / (slash) pe ultima linie n
buffer.
plasnd un slash (/) la prompterul SQL.
scriind comanda SQL R[UN] la prompterul SQL.

Blocul de interogare de baz
Declaraia SELECT regsete informaia din
baza de date, putnd ngloba i unul sau mai
muli operatori din algebra relaional.
In cele mai simple forme trebuie s conin:
O clauz SELECT, care listeaz coloanele
pentru afiare astfel nct este eseniala o
Proiecie.
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

S-ar putea să vă placă și