baze de date relationale în sql - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · de exemplu:...

97
Baze de date relat , ionale în SQL (Informatic ˘ a Aplicat ˘ a 1 - Cursul 5) Victor BUCAT ˘ A Facultatea de Inginerie Electric ˘ a - U.P.B. 2 Decembrie 2019

Upload: others

Post on 31-Aug-2019

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Baze de date relat,ionale în SQL(Informatica Aplicata 1 - Cursul 5)

Victor BUCATA

Facultatea de Inginerie Electrica - U.P.B.

2 Decembrie 2019

Page 2: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Partea I

Modelul relat,ional al bazelor de date

Page 3: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Cuprins Partea I-a

1 Concepte fundamentale

2 Entitat,i, Tabele, Relat,ii

3 Tipuri de chei s, i relat,ionarile tabelelor

4 Integritatea referent,iala

5 Valori nule

6 Normalizarea datelor

Page 4: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Obiectivele acestei part,i

I Prezentarea conceptelor fundamentale s, i a terminologieimodelului relat, ional (introdus de E.F. Codd de la IBM în 1970).

I Înt,elegerea modului în care relat, iile sunt diferite fat,a de tabelelenerelat,ionale.

I Înt,elegerea semnificat,iei s, i a important,ei cheilor, ale cheilor straines, i ale conceptelor corelate.

I Înt,elegerea modului în care cheile straine construiesc relat, ionarile(asocierile).

I Prezentarea scopului s, i folosirii cheilor surogat.I Înt,elegerea semnificat,iei dependent,elor funct, ionale.

I Prezentarea procesului de normalizare a relat, iilor.

Page 5: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Ce este o entitate?

I O entitate este un aspect important pentru un utilizator sau pentruo organizat,ie s, i care trebuie sa fie reprezentat într-o baza de date.

I O entitate este reprezentata de o tema, de un subiect sau de unconcept organizat, ional. De exemplu: Clienti, Comenzi, Carti,Proiecte etc.

I Exemplu:

Page 6: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Ce este o relat,ie?

I O relat,ie este un tabel bidimensional care are nis, te caracteristicispeciale (pe slideul urmator).

I Dimensiunile tabelului, la fel ca în cazul unei matrice constau dinrânduri s, i coloane.

I Obs: Termenul „relat,ie” nu este acelas, i lucru cu termenul„relat,ionare” („asociere”) pe care îl vom folosi ulterior.

Page 7: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Caracteristicile unei relat,ii

I Rândurile cont,in date despre instant,ele unei entitat,i (în exemplulanterior cu angajat,i, fiecare rând reprezinta un singur angajat).

I Coloanele cont,in date despre atributele entitat,ii.

I Celulele tabelului (intersect, ia dintre un rând cu o coloana) cont,in osingura valoare.

I Toate valorile dintr-o coloana sunt de acelas, i fel (acelas, i tip dedate). De exemplu Id-urile sunt de tip întreg.

I Fiecare coloana are un nume unic în tabelul respectiv. Pot existacoloane cu acelas, i nume dar în tabele diferite.

I Ordinea coloanelor nu este importanta.

I Ordinea rândurilor nu este importanta.

I Nu pot exista rânduri identice.

Page 8: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Ce este o relat,ie - exemplu, contraexemplu

Exemplu:

Contraexemplu:

Acest tabel are câteva probleme care-l descalifica de a fi o relat,ie.

I Exista o celula ce cont,ine doua valori.I Doua rânduri sunt identice.

Toate relat,iile sunt tabele dar nu toate tabelele sunt relat,ii!

Page 9: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Terminologie

Divers, i utilizatori folosesc cuvinte diferite pentru aceleas, i concepte.Urmatorii termeni sunt folosit,i interschimbabil (sinonime):

I Tabel = Fis, ier (folosit mai rar) = Relat,ie

I Rând = Înregistrare = Tuplu (folosit mai rar)

I Coloana = Câmp = Atribut

Obs: Termenul „relat,ie” nu este acelas, i lucru cu termenul „relat,ionare”(„asociere”) pe care îl vom folosi ulterior.

Page 10: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Ce este o cheie?

I Ideea principala: Prin cheie înt,elegem de obicei o coloana sau maimulte ale unei relat,ii ale carei valori sunt folosite pentru a identificaun rând (o înregistrare).

Chei unice:

I Valorile sunt unice pentru fiecare înregistrare

I Prin urmare, cheia va identifica în mod unic un rând.

Chei non-unice:

I Valorile se pot repeta în mai multe înregistrari.

I Prin urmare, cheia va identifica un set de înregistrari.

Page 11: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Ce este o cheie non-unica - exemplu:

Clasificarea cheilor:

Page 12: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Cheile compuse - exemplu

I O cheie compusa este o cheie care este compusa din doua saumai multe atribute.

I Se combina una sau mai multe coloane pentru a obt,ine unicitatea.

I Adesea, pentru ca o cheie sa fie unica, ea trebuie sa fie compusa.

Page 13: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Cheile compuse - exemplu

I Ilustram acest concept cu un exemplu din viat,a reala: presupunemca dorim sa mergem cu un tren pe ruta Bucures, ti - Craiova într-oanumita data.

I Un tren cu un anumit numar nu circula decât o data pe zi pe rutarespectiva.

I Pentru a identifica o calatorie specifica trebuie sa combinamnumarul trenului cu data calatoriei. Aceasta combinat,iereprezinta o cheie compusa.

Page 14: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Cheile candidat:

I O cheie „candidat” este denumita astfel deoarece poate devenicheie primara.

I O cheie candidat este o cheie unica.

Cheile primare:

I O cheie primara este o cheie candidat aleasa drept cheia principalaa relat,iei.

I Daca este cunoscuta valoarea cheii primare, atunci oriceînregistrare din tabel poate fi identificata în mod unic.

Page 15: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Cheile surogat

I O cheie surogat este o valoare numerica unica care este adaugatarelat,iei pentru a servi drept cheie primara.

I Valorile cheilor surogat nu au nicio semnificat, ie pentru utilizatori s, isunt de obicei ascunse pe formulare, interogari s, i rapoarte.

I Adesea o cheie surogat este folosita în locul unei chei primarecompuse.

Page 16: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Relat,ionarile (asocierile) dintre tabele

I Un tabel poate fi relat,ionat cu alte tabele.

I Vom introduce conceptul de cheie straina.I Exemple:

I Un Angajat lucreaza într-un Departament.I Un Director controleaza un Proiect.

I În cazul unui departament, acesta poate avea mai mult, i angajat, idar un angajat apart,ine unui singur departament.

I Bazele de date relat, ionale permit folosirea acestor relat,ionariierarhice.

Page 17: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Cheile straine

I Pentru a stabili relat,ionarile (asocierile), trebuie folosita o cheiestraina.

I O cheie straina este o cheie primara dintr-un tabel care esteplasata în alt tabel.

I Cheia este denumita „cheie straina” în tabelul care primes, te cheia.

Exemplu:

Page 18: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Integritatea referent,iala

I Integritatea referent,iala stipuleaza ca toate valorile unei chei strainetrebuie sa corespunda valorii unei chei primare existente.

I Aceasta serves, te la ment,inerea calitat,ii datelor din baza de date.

I Exemplu (Nu exista clientul cu IdClient=5. (Obs: cheia straina poateavea valori multiple - este non-unica.))

Page 19: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Valori nule (Null)

I O valoare nula (Null) înseamna ca nu exista date în acel loc.

I Putem privi o valoarea nula ca o celula goala din acel tabel.

I Aceasta nu este acelas, i lucru cu o valoare zero, un caracter spat,iu,un string gol sau un caracter tab.

I O valoare nula conduce adesea la ambiguitat, i.

Posibilitat,i:

I Valoarea atributului respectiv nu este potrivita pentru tipul de dataal coloanei.

I Valoarea atributului nu a fost înca decisa.

I Valoarea coloanei este necunoscuta.

I Toate acestea pot avea implicat,ii complet diferite.

Page 20: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Normalizarea datelor:Dependent,ele funct,ionale

I Dependent,a funct,ionala este un tip de relat,ie între atribute prin careun atribut (sau un grup de atribute) dicteaza valoarea altui atributdin cadrul aceluias, i tabel.

I Exemplu: Pret,ul unei cutii de chibrituri determina pret,ul unei duzine.

I (PretCutie,Cantitate) -> PretDuzina

Page 21: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Determinant,ii:

I Atributul (sau atributele) care este folosit drept punct de plecare alrelat,iei (adica variabila din partea stânga a ecuat,iei) se numes, tedeterminant .

I (PretCutie,Cantitate) -> PretDuzina

I (PretCutie,Cantitate) este determinantul.

Cheile primare / Cheile candidat s, i dependent,a funct,ionala:

I Prin definit,ie, o cheie candidat a unei relat,ii va determina funct, ionaltoate celelalte atribute care nu sunt chei din înregistrare.

I Prin extensie o cheie primara a unei relat,ii va determina funct,ionaltoate celelalte atribute care nu sunt chei din înregistrare.

(IdAngajat) -> (Nume, Telefon)(IdProiect) -> (NumeProiect, DataInceperii)

Page 22: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Normalizarea datelor

I Normalizarea datelor este un proces de analizare a unei relat,iipentru a asigura ca aceasta este bine structurata.

I Normalizarea implica descompunerea relat,iilor cu anomalii în relat,iimai mici s, i bine structurate.

I Mai precis, daca o relat,ie este normalizata (este bine structurata),rândurile pot fi introduse, s, terse sau modificate fara a creaanomalii. (Exista trei tipuri de anomalii: anomalii de s, tergere,anomalii de actualizare s, i anomalii de inserare)

Principiile normalizarii:I Principiile de proiectare relat,ionala a relat,iilor normalizate sunt:

I Orice determinant trebuie sa fie o cheie candidat.I Orice relat,ie care nu este bine structurata trebuie descompusa în

doua sau mai multe relat,ii bine-structurate!

I Artificiu: Ca o regula generala, o relat, ie bine structurata nu vacont, ine mai mult de un concept organizat, ional.

Page 23: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Normalizarea datelor - Exemplul 1

(IdStudent) -> (NumeStudent, NumarulCaminului, CostulCaminului)

, dar daca:

(NumarulCaminului) -> (CostulCaminului)

atunci atributul CostulCaminului va trebui plasat în relat,ia sa proprierezultând relat,iile:

(IdStudent) -> (NumeleStudentului, NumarulCaminului)(NumarulCaminului) -> (CostulCaminului)

Page 24: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Normalizarea datelor - Exemplul 2

(IdAvocat, IdClient) -> (NumeClient, DataS, edint,ei, Durata)

, dar daca:

(IdClient) -> (NumeClient)

atunci atributul NumeClient va trebui plasat în relat,ia sa proprie rezultândrelat,iile:

(IdAvocat, IdClient) -> (DataS, edint,ei, Durata)(IdClient) -> (NumeClient)

Page 25: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Pas, ii pentru normalizarea datelor

Obs: Exista s, i forme normale cu grad mai mare, netratate aici.

Page 26: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Prima forma normala

I Tabelul nu cont,ine atribute cu mai multe valori.I Toate atributele sunt atomice (nu se pot diviza).

I Exemplul de pe slideul urmator nu este în forma normala 1, deci nueste o relat,ie.

I Toate relat, iile sunt în prima forma normala. (Reamintesc: Toaterelat,iile sunt tabele dar nu toate tabelele sunt relat,ii!)

Page 27: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplu de tabel ce NU respecta prima forma normala

Page 28: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Tabelul (Relat,ia) ce respecta prima forma normala

Page 29: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

A doua forma normala

I Include prima forma normala PLUS „orice atribut care nu estecheie trebuie sa fie complet dependent funct, ional de cheiaprimara ÎN TOTALITATEA EI”.

I Orice atribut care nu este cheie trebuie sa fie definit prin cheiaîntreaga, nu numai printr-o parte a cheii.

I Nu sunt permise dependent,e part, iale.

Page 30: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplu de diagrama a dependent,elor

Obs: cheia primara este exprimata prin câmpurile subliniate.IdComanda -> DataComanda, IdClient, NumeClient, AdresaClientIdClient -> NumeClient, AdresaClientIdProdus -> Descriere, PretUnitarIdComanda, IdProdus -> CantitateDe aceea nu este în Forma Normala 2!Strategia de trecere de la o forma normala inferioara la o forma normalasuperioara este descompunerea relat, iilor în relat, ii mai mici.

Page 31: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Eliminarea dependent,elor part,iale

Dependent,ele part,iale au fost eliminate dar exista înca dependent,etranzitive în tabelul ComenzileClientilor.

Page 32: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

A treia forma normala

I Include a doua forma normala PLUS „nu trebuie sa existedependent,e funct, ionale de atributele care nu sunt cheiprimare”.

I Astfel de dependent,e sunt denumite tranzitive deoarece cheiaprimara determina un alt atribut care la rândul lui determina un altatribut.

I Solut,ie: Determinant,ii care nu sunt chei cu dependent,e tranzitive setrec într-un tabel nou; determinantul repectiv devine cheie primaraîn noul tabel s, i ramâne cheie straina în vechiul tabel.

Page 33: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Eliminarea dependent,elor tranzitive

Dependent,ele tranzitive au fost eliminate!

Page 34: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Regula de aur

Regula de aur se enunt,a astfel:FIECARE TABEL (DENUMIT S, I RELAT, IE) TREBUIE SA CONT, INADOAR UN SINGUR CONCEPT ORGANIZAT, IONAL (TEMA, ENTITATE)!

De exemplu: Clienti, Comenzi, Carti, Proiecte etc.

Astfel se obt,in automat primele 3 forme normale.

Page 35: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Partea II

Limbajul SQL

Page 36: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Cuprins Partea a II-a

1 Ce este SQL?

2 Istoricul SQL

3 Sisteme SQL

4 Sintaxa, instruct,iuni, exemple

5 Concluzii

Page 37: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Ce este SQL?

I Structured Query Language (Limbaj structurat de interogare).

I limbaj standard folosit pentru gestiunea bazei de date, pentrucomunicarea cu ea.

I pronuntare: es-q-l sau precum cuvântul englezesc "sequel".

I limbaj neprocedural, declarativ (un limbaj procedural foloseste oserie de instructiuni executate secvential).

I se spune calculatorului ce rezultate se doresc fara a spune cum seobtin.

I SQL este adesea folosit în combinatie cu un limbaj procedural sauorientat spre obiecte (ex: MySQL+PHP).

Page 38: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Istoric al limbajului SQL

I Sfârsitul anilor ’70 - cercetatori de la IBM dezvolta System/R bazatpe lucrarile Dr. E. F. Codd.

I Oracle dezvolta Relational Software.

I Relational Technology dezvolta Ingres.

I 1982 - IBM SQL/DS.I standardizari (utile pentru portabilitate):

I 1986 - standardul ANSII 1987 - standardul ISOI 1989 - standardul SQL-89I 2016 - ultimul standard

I Oracle Database 19c - ultima versiune stabila: 13 februarie 2019

Page 39: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Structura unui sistem SQL

I Structura de tip client/server

Page 40: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Sisteme SQL

I Clienti în linia de comandaI Clienti cu interfata graficaI Clienti interfata bazata pe web

Sisteme SQL:

I Access: produs de Microsoft, nu are client SQL; clientul, interfata simotorul pe acelasi calculator

I SQL Server: produs de Microsoft, clientul (iSQL sau QueryAnalyzer) ruleaza ca aplicatie în linia de comanda într-un nucleu decomenzi Microsoft Windows

I MySQL: sub licenta libera (locul 2 în clasamentul SGBDR gratuiteca utilizare) cumparat în 2010 de Oracle prin achizitia SunMicrosystems care la rândul ei l-a cumparat de la o firma suedeza.Client în linia de comanda sub diferite sisteme de operare

I Oracle: clienti iSQL*Plus, SQL*Plus, SQL Worksheet

I Sybase: client iSQL

Page 41: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Conventii de sintaxa SQL

I Mai departe vom folosi termenul de tabel în loc de termenul relat,ie

I Fiecare instructiune începe cu o comanda, de obicei sub formaunui singur cuvânt

I Fiecare instructiune se termina cu punct si virgula (;)

I O instructiune se poate scrie pe mai multe liniiI Instructiunile sunt organizate într-o serie de clauze care trebuie sa

apara într-o anumita ordineI Nu se face diferenta între majuscule si minuscule - case-insensitive

(cu exceptia numelor de tabele)

I Virgulele sunt folosite pentru separarea articolelor dintr-o lista

Page 42: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Conventii de sintaxa SQL (continuare)

I Sirurile de caractere se pun între ghilimeleI Numele obiectelor bazei de date sunt formate numai din litere, cifre

si liniute de subliniere

I Exista un set de cuvinte rezervateI Un comentariu pe o singura linie începe cu doua liniute de

despartire s, i apoi spat,iu (−− )

I Un comentariu pe mai multe linii se include între /* si */

Page 43: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Categorii de instructiuni SQL

I Limbajul de definire a datelor (DDL - Data Definition Language):CREATE, ALTER, DROP

I Limbajul de interogare a datelor (DQL - Data Query Language):SELECT

I Limbajul de manipulare a datelor (DML - Data ManipulationLanguage): INSERT, UPDATE, DELETE

I Limbajul pentru controlul datelor (DCL - Data Control Language):GRANT, ALTER

I Comenzile pentru controlul tranzactiilor (Transaction ControlCommands)

Page 44: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Crearea si manipularea tabelelor

Dorim sa cream un tabel cu numele STUDENTI care pe lânga cheiaprimara id sa cont,ina s, i nume, prenume, grupa, varsta s, i numar derestant,e, ca în figura de mai jos:

Page 45: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Crearea si manipularea tabelelor

Se foloseste instructiunea CREATE TABLE:

I numele noului tabelI numele si definitiile coloanelor separate prin virgule

I precizarea constrângerii cheie primara

I dupa ultimul rând din tabel nu se pune virgula

Exemplu:

CREATE TABLE Studenti(id int auto_increment not null,nume_student varchar(20),prenume_student varchar(20),grupa varchar(5),varsta smallint,restante smallint,PRIMARY KEY(id));

Page 46: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Crearea si manipularea tabelelor

Pentru a vedea structura tabelului creat anterior folosim comandaDESCRIBE Studenti;

Page 47: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Chei primare

CREATE TABLE Angajati(id_angajati INT(11) NOT NULL PRIMARY KEY,....);

sau:

ALTER TABLE AngajatiADD CONSTRAINT PRIMARY KEY (id_angajati);

Page 48: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Chei externe (straine)

CREATE TABLE Angajati(...id_functie INT(4) NOT NULL

REFERENCES Posturi(id_posturi););

sau:

ALTER TABLE AngajatiADD CONSTRAINTFOREIGN KEY (id_functie)

REFERENCES Posturi(id_posturi);

Page 49: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Actualizarea definitiilor tabelelor - instructiunile ALTER siDROP

Modificarea tabelelor:

ALTER TABLE AngajatiADD email_ang VARCHAR(25);

sau:

ALTER TABLE AngajatiDROP COLUMN spor_noapte;

Stergerea tabelelor:

DROP TABLE AngajatiCopie;

Page 50: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Inserarea datelor - instructiunea INSERT

I pentru a insera o singura înregistrare completaI pentru a insera o singura înregistrare partialaI pentru a insera rezultatele unei interogari

Exemple:

INSERT INTO AngajatiVALUES ("Cristea", "Dan", "Str. Uverturii,

nr.22", NULL, 23, NULL);

sau:

INSERT INTO Angajati (nume_ang, prenume_ang,adresa_ang, tel_ang, varsta_ang, id_functie)VALUES ("Cristea", "Dan",

"Str. Uverturii, nr.22", NULL, 23, NULL);

Page 51: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Actualizarea si stergerea datelor - instructiunile UPDATE siDELETE

Se foloseste instructiunea UPDATE, formata din trei componente:

I tabelul care urmeaza a fi actualizat

I numele coloanelor si noile valori ale acestora

I conditia de filtrare care determina înregistrarile ce urmeaza a fiactualizate

Pentru a sterge date (înregistrari) dintr-un tabel se foloseste instructiuneaDELETE. Exemplu:

DELETE FROM AngajatiWHERE id_angajati=8;

Pentru a sterge anumite coloane se foloseste instructiunea UPDATEatribuind valori NULL. Daca se omite clauza WHERE, operatiile deactualizare/stergere vor fi aplicate tuturor rândurilor din tabel.

Page 52: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplu instructiunea UPDATE

UPDATE AngajatiSET tel_ang = "07112233"WHERE id_angajati = 7;

Page 53: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Instructiunea SELECT

Regasirea datelor - Instructiunea SELECT (face parte din categoria DQL- Data Query Language)

I SELECT este instructiunea SQL cea mai folosita.

I e nevoie de doua informatii: ce se selecteaza + de unde seselecteaza

Page 54: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 1 - selectarea unei coloane

SELECT nume_studentFROM Studenti;

Page 55: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 2 - selectarea mai multor coloane

SELECT nume_student, prenume_student, varstaFROM Studenti;

Page 56: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 3 - selectarea tuturor coloanelor

Pentru a selecta toate coloanele se foloseste semnul asterisc (*)

SELECT *FROM Studenti;

Page 57: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 4 - sortarea datelor regasite

Instructiunile SQL sunt alcatuite din clauze, unele obligatorii (deexemplu FROM în instructiunea SELECT), altele optionale.Pentru a sorta datele se foloseste clauza ORDER BY.

SELECT nume_student, prenume_student FROM StudentiORDER BY nume_student;

Page 58: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 5 - sortarea în functie de mai multe coloane

SELECT id, nume_student, prenume_student,varsta

FROM StudentiORDER BY varsta, nume_student;

Page 59: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 6 - sortarea în functie de pozitia coloanei

SELECT id, nume_student, prenume_student,varsta

FROM StudentiORDER BY 4, 2;

Page 60: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 7 - specificarea directiei de sortare

Pentru ordine descrescatoare se foloseste cuvântul cheie DESC.

SELECT id, nume_student, prenume_studentFROM StudentiORDER BY nume_student DESC;

Page 61: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Filtrarea datelor: utilizarea clauzei WHERE

I Se folosesc criterii de cautare (adica "conditii de filtrare").

I Clauza ORDER BY trebuie plasata dupa WHERE.

I Operatorii clauzei WHERE: =,<>,!=,<,<=,>,>= ,BETWEEN,IS NULL

I când o coloana nu contine nicio valoare, se spune ca include ovaloare NULL (cu totul altfel decât un câmp care contine 0 sauspatiu)

Page 62: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 8 - clauza WHERE

SELECT nume_student, prenume_student, varstaFROM StudentiWHERE varsta = 20;

Page 63: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 9 - operatorii clauzei WHERE

SELECT id, nume_student, prenume_student,grupa

FROM StudentiWHERE grupa <> "112A";

Page 64: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 10 - operatorii clauzei WHERE

SELECT id, nume_student, prenume_student,varsta

FROM StudentiWHERE varsta BETWEEN 21 AND 23;

Page 65: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 11 - filtrarea avansata (operatorul AND)

SELECT nume_student, prenume_studentFROM StudentiWHERE grupa = "111A" AND varsta > 21;

Page 66: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 12 - filtrarea avansata (operatorul OR)

SELECT nume_student, prenume_student, grupa,varsta

FROM StudentiWHERE grupa = "111A" OR varsta < 21;

Page 67: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 13 - filtrarea avansata (operatorul IN)

SELECT nume_student, prenume_student, varstaFROM StudentiWHERE varsta IN (20, 21, 22);

Page 68: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 14 - filtrarea avansata (operatorul NOT)

SELECT nume_student, prenume_student, varstaFROM StudentiWHERE NOT varsta = 20;

Page 69: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 15 - filtrarea avansata (operatorul LIKE)

I caracterul de înlocuire (oricâte): procent(%)I caracterul de înlocuire (un singur caracter): liniuta de subliniere (_)

SELECT nume_student, prenume_student, grupaFROM StudentiWHERE prenume_student LIKE "S%";

Page 70: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 16 - filtrarea avansata (operatorul LIKE)

SELECT nume_student, prenume_student, varsta,grupa

FROM StudentiWHERE grupa LIKE "11_ _";

Page 71: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 17 - alias-uri

Un alias este un nume alternativ al unui câmp sau al unei valori. Seatribuie prin intermediul cuvântului cheie AS.

SELECT nume_student,varsta AS "VARSTA STUDENTULUI"

FROM Studenti;

Page 72: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 18 - efectuarea calculelor matematice

SELECT nume_student,2018-varsta AS "AN NASTERE"

FROM Studenti;

Page 73: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Functii pentru manipularea datelor

I functii pentru manipularea sirurilor de caractere (eliminarea saucompletarea cu valori, conversia în majuscule sau minuscule)I LENGTH()I LOWER()I UPPER()I RTRIM() - elimina spatiile albe de la dreapta sirului

I pentru operatii matematiceI ABS()I COS()I EXP()I PI()I SQRT()

I de tip data si oraI functii de sistem

Page 74: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 19 - functii pentru manipularea datelor

SELECT CONCAT(UPPER(nume_student), " ",prenume_student)AS NUME

FROM Studenti;

Page 75: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 20 - functii matematice

SELECT PI(), SQRT(625), SIN(PI()/2);

Page 76: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Sintetizarea datelor

Utilizarea functiilor agregatI lucreaza cu seturi de înregistrari pentru a calcula si returna o

singura valoare

I AVG() - media valorilor dintr-o coloana

I COUNT() - numarul de înregistrari dintr-un tabel sau de înregistraricare satisfac un anumit criteriu

I MAX(), MIN()

I SUM()

Page 77: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 21 - functia AVG()

SELECT AVG(varsta) AS "Varsta medie"FROM Studenti;

Page 78: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 22 - functia COUNT()

SELECT COUNT(nume_student)AS Numarul_studentilor

FROM Studenti;

Page 79: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 23 - functia MAX()

SELECT MAX(varsta) AS Varsta_maximaFROM Studenti;

Page 80: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 24 - argumentul DISTINCT

SELECT AVG(DISTINCT varsta) AS "Varsta medie"FROM Studenti;

Page 81: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Gruparea datelor

I Grupurile permit împartirea datelor în seturi logice pentru a puteaefectua calcule de sinteza cu fiecare grup.

I Se foloseste clauza GROUP BY plasata dupa clauzele WHERE siORDER BY.

I Grupurile pot fi filtrate cu clauza HAVING (spre deosebire de clauzaWHERE care filtreaza înregistrari, HAVING filtreaza grupuri).

Page 82: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 25 - Gruparea datelor

SELECT grupa, SUM(restante) AS Restante_grupaFROM StudentiGROUP BY grupa;

Page 83: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 26 - clauza HAVING

SELECT grupa, SUM(restante) AS Restante_grupaFROM StudentiGROUP BY grupaHAVING SUM(restante) >= 5;

Page 84: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 27 - sub-interogari

SQL permite crearea sub-interogarilor, adica a interogarilor care suntînglobate în alte interogari.

SELECT nume_ang, prenume_ang, tel_angFROM AngajatiWHERE id_functie IN (SELECT id_postFROM PosturiWHERE sal_min >= 4000);

Page 85: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 27 - sub-interogari

Page 86: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 28 - sub-interogari (crearea de câmpuri cu valoarecalculata)

SELECT den_post, (SELECT COUNT(*)FROM AngajatiWHERE Angajati.id_functie = Posturi.id_post) AS Nr_posturiFROM Posturi;

Page 87: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 29 - unirea tabelelor

SELECT nume_ang, prenume_ang, den_post, sal_minFROM Angajati, PosturiWHERE Angajati.id_functie = Posturi.id_post;

Page 88: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 30

SELECT nume_ang, prenume_ang, den_post, sal_minFROM Angajati, Posturi;

Page 89: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 31 - uniune interioara

SELECT nume_ang, prenume_ang, den_post, sal_minFROM Angajati INNER JOIN PosturiON Angajati.id_functie = Posturi.id_post;

Page 90: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 32 - uniune exterioara

Se foloseste RIGHT sau LEFT pentru a specifica tabelul din careurmeaza a se include toate rândurile.

SELECT nume_ang, prenume_ang, den_postFROM Angajati RIGHT OUTER JOIN PosturiON Angajati.id_functie = Posturi.id_post;

Page 91: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 33 - combinarea interogarilor

SELECT nume_ang, prenume_ang, varsta_angFROM AngajatiWHERE varsta_ang > 40UNIONSELECT nume_ang, prenume_ang, varsta_angFROM Angajati, PosturiWHERE Angajati.id_functie = Posturi.id_post

AND spor_noapte > 15;

Page 92: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Exemplul 33 - combinarea interogarilor

Page 93: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Caracteristici avansate: Gestiunea prelucrarii tranzactiilor

Grupuri de operatii SQL ce se executa în totalitate sau deloc. Exemplu înMySQL:

START TRANSACTION...

Comanda SQL ROLLBACK este folosita pentru anularea instructiunilor.Pentru a crea un punct de salvare se foloseste instructiunea SAVEPOINT.

Page 94: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Caracteristici avansate: Securitatea bazelor de date

I autorizarea si autentificarea utilizatorilor

I securitatea este gestionata prin intermediul instructiunilor SQL:GRANT sau REVOKE

Page 95: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Bibliografie SQL

I https://www.w3schools.com/sql/

I https://www.tutorialspoint.com/sql/

I http://www.youtube.com/watch?v=4Z9KEBexzcM/

Page 96: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Concluzie s, i resurse suplimentare

I Acest curs a prezentat modelul relat,ional al bazelor de date s, ilimbajul SQL.

I Am vazut ce înseamna o relat,ie, ce sunt cheile s, i tipurile lor.

I Am vazut cum se proiecteaza o baza de date relat,ionala.

I Am vazut ce sunt formele normale 1, 2 s, i 3.

I O prezentare a modelului relat,ional precum s, i alte informat,ii despreSGBD gasit,i lahttp://www.youtube.com/watch?v=4Z9KEBexzcM (întotal 8 cursuri).

I Am prezentat limbajul SQL folosind numeroase exemple.

Page 97: Baze de date relationale în SQL - itee.elth.pub.rovbucata/ia/cursuri/curs5.pdf · De exemplu: Clienti, Comenzi, Carti, Proiecte etc. I În alte modele decât modelul relat,ional

Întrebari ?

Va mult,umesc pentru atent,ie!