Documente Academic
Documente Profesional
Documente Cultură
Bibliografie
Baze de Date relaionale. Teorie i Aplicaii in Visual FoxPro,
Cornelia Gyorodi, R. Gyorodi, G. Pecherle, Editura Mediamira ,
2008.
Gyrdi Cornelia Baze de date relaionale. Teorie i aplicaii,
TREIRA, Oradea 2000, ISBN 973-8159-23-7, nr. pag 236
Analiza, proiectarea si implementarea bazelor de date aplicatii in Visual FoxPro, Colin Dan Maier, Editura Albastra
David M. Kroenke Database Processing Fundamentals,
Design and Implementation, Pretice-Hall , 1995.
Oracle Education."SQL1", Oracle Corporation, 2007
https://academy.oracle.com/index1.html
Curs Baze de Date - Gyorodi
Cornelia
anumite
relaii (relaii structurale).
Organizarea datelor
Organizarea datelor presupune:
definirea structurarea, ordonarea i gruparea datelor n colecii
de date omogene
stabilirea relaiilor ntre date
stocarea datelor pe suport informaional.
Scopul organizrii datelor l constituie regsirea automat a
datelor dup diverse criterii.
Colecie de date
Principalele probleme pe care le implic ns o colecie de date format
dintr-un ansamblu de fiiere de date sunt:
Soluia care poate rezolva aceast problem este reunirea datelor ntr-o
colecie unic numit baza de date.
Baza de date
Baza de date(database) poate fi definit ca fiind una sau mai multe
colecii de date aflate n interdependen, mpreun cu descrierea
datelor i a relaiilor dintre ele.
Din punct de vedere al serviciilor pe care le ofer, baza de date
este o colecie de date care poate descrie ntreaga activitate a unei
organizaii i care furnizeaz acces la diferite informaii,
prezentate n diferite formate.
Din punct de vedere al organizrii datelor sub forma unei
structuri de date pe mediul de memorare, ea este forma optim de
organizare a datelor. Se poate spune c este o colecie de fiiere i
nregistrri legate ntre ele.
Pentru a permite accesul difereniat la datele din colecia de date, se poate defini o
schem general a bazei de date care descrie ntreaga colecie de date i diferite
scheme pariale care descriu seturile de date din colecie la care pot avea acces anumii
utilizatori sau anumite grupuri de utilizatori.
Baza de date
Modele de date
Modelul relaional
Modelul relaional are urmtoarele avantaje fa de
celelalte modele de organizare:
Modelul relaional
n modelul relaional o baz de date este compus dintr-o mulime
finit de relaii, fiecare relaie reprezentnd un tip de entitate sau
o asociere dintre dou sau mai multe tipuri (multimi) de entiti.
In modelul relaional avem urmtoarele concepte:
SGBDR
Cel mai utilizat SGBD relaional din ntreaga lume rmne n
continuare Oracle produs de firma Oracle Corporation, deoarece are
urmtoarelor avantaje:
Poate fi folosit cu diferite sisteme de operare: Windows , Unix
Permite dezvoltarea unor baze de date de orice dimensiune (de la
civa octei pn la gigaoctei).
Respect standardele n vigoare referitoare la limbajele de
accesare a datelor (SQL).
Accept un numr mare de utilizatori simultani, minimiznd
conflictele care pot s apar n cererile simultane de acces la date.
Asigur o securitate mrit datorit siguranei foarte mari la
limitarea i monitorizarea accesului la date.
constrngeri intra-relaie
constrngeri inter-relaii.
constrngeri de domeniu,
constrngeri de tuplu
constrngeri impuse prin dependene de date (dependente funcionale,
multivalorice sau de jonciune).
constrngeri intra-relaie
constrngeri inter-relaii.
constrngeri de domeniu,
constrngeri de tuplu
constrngeri impuse prin dependene de date (dependente funcionale,
multivalorice sau de jonciune).
Constrngeri de integritate
Pentru modelul relational, constrngerile de domeniu,
constrngerile de tuplu i constrngerile de integritate referentiala
sunt exemple de constrngeri implicite.
Constrngerile implicite sunt memorate n baza de date i sistemul
de gestiune impune automat respectarea acestora.
Constrngeri de integritate
Constrngerile de domeniu sunt condiii impuse valorilor atributelor,
astfel nct acestea s corespund semnificaiei pe care o au n realitatea
modelat. Dat fiind c, n reprezentarea unei relaii printr-un tabel,
valorile atributelor sunt reprezentate pe coloane, constrngerile de
domeniu se mai numesc si constrngeri de coloana.
Dintre constrngerile de domeniu, constrngerea NOT NULL i
constrngerea de valoare implicita (DEFAULT) sunt constrngeri cu
caracter mai general, care se pot aplica oricarui atribut; constrngerea de
verificare (CHECK) se poate aplica unor anumite atribute, n funcie de
semnificaia acestora.
Constrngerile de tuplu: cheia primar i chei secundare. O relaie este
definit ca o mulime de tupluri, deci tuplurile unei relaii trebuie s fie
distincte. Aceasta nseamn ca ntr-o relaie nu pot exista dou (sau mai
multe) tupluri care s conin aceeai combinaie de valori ale tuturor
atributelor.
Curs Baze de Date - Gyorodi
Cornelia
Ce este o entitate?
"Ceva" de importan pentru afaceri despre care
datele trebuie s fie cunoscute
Un nume pentru un set de lucruri similare pe care le
putei lista
De obicei, un substantiv
Exemple: objects, events, people
Entitile au instane. O instan este o singur apariie
a unei entiti.
Entiti i instane
Entiti
PERSON
PRODUCT
PRODUCT TYPE
JOB
SKILL LEVEL
CONCERT
ANIMAL
CAR
Instane
Popescu Ion
Nike Air Jordan
shoe
electrician
beginner
U2 at the Palladium
Dog
Volkswagen Golf
Ce este un Atribut ?
La fel ca o entitate, un atribut reprezint ceva de
importan pentru afaceri.
Un atribut este o informaie care:
Descrie o entitate
Cuantific o entitate
Calific o entitate
Clasific o entitate
Specific o entitate
Atributul
Atributele au valori.
O valoare a unui atribut
poate fi un numr, un ir
de caractere, o dat, o
imagine, un sunet, etc.
Acestea sunt numite
"tipuri de date" sau
"formate".
Fiecare atribut are un tip
de date
Atributul
Unele atribute (cum ar fi vrsta) au valori care n mod constant se
modific. Acestea sunt numite atribute volatile.
Alte atribute (cum ar fi data unei comenzi) se va schimba foarte
rar, sau niciodat. Acestea sunt atribute nevolatile.
Dac exist o posibilitate de alegere ntre atribute, atunci se va
folosi atribute nevolatile. De exemplu, se va utiliza Data nasterii n
loc de vrst.
Unele atribute trebuie s aib o valoare. Acestea sunt atribute
obligatorii. De exemplu: n cele mai multe aplicaii de business, n
informaii cu caracter personal, "nume" este necesar.
Alte atribute pot avea o valoare sau pot fi nule. Acestea sunt
atributele opionale. De exemplu: numrul de telefon mobil, nu
este necesar de multe ori, cu excepia cazului n aplicaii mobile.
Curs Baze de Date - Gyorodi
Cornelia
Ct de multe joburi deine un angajat? Unul sau mai multe? Doar unul?
Un loc de munc poate fi deinut de mai muli angajai? Unul sau mai muli?
Doar unul?
Exemple:
Supertip i subtip
Uneori cteva instane ale unei entiti au atribute i / sau relaii
pe care ale instane nu le au.
Exemplu: Imaginai-v o afacere care are nevoie pentru a urmri
plile de la clieni. Clienii pot plti n numerar, prin cec sau prin
card de credit. Toate plile au unele atribute comune: data plii,
suma de plat i aa mai departe. Dar, numai cardurile de credit
au un numr de card atribut. Pentru cardul de credit se verific
plile pe care le poate face pentru ca s tie care CLIENT a
efectuat plata, n timp ce acest lucru nu este necesar pentru plile
n numerar.
Trebuie sa creem o singur entitate PAYMENT sau trei entiti
distincte CASH, CHECK i CREDIT CARD? i ce se ntmpl
dac n viitor vom introduce a patra metod de plat?
Supertip i subtip
Supertype i subtype
Uneori are sens de a mpri o entitate n subtipuri. Acesta poate fi
cazul atunci cnd un grup de instane are proprieti speciale, cum
ar fi atribute sau relaii care exist doar pentru acel grup. n acest
caz, entitatea se numeste un supertip supertype " i fiecare grup
se numeste un subtip subtype .
Un subtip:
Supertype
Nevertebrate sunt animale fr coloan vertebral (cum ar fi
viermi pmnt). Vertebrate au coloana vertebral i pot fi
mprite n psri, mamifere, reptile si etc
Exemplu
EXAM este un supertype
al lui QUIZ (TEST),
MIDTERM (PARIAL),
i FINAL (EXAMEN
FINAL).
Subtipurile au mai multe
atribute n comun. Aceste
atribute comune sunt
enumerate la nivel de
supertype. Acelai lucru
se aplic i n cazul
relaiilor. Subtipurile
motenesc toate atributele
i relaiile entitii
supertype.
Curs Baze de Date - Gyorodi
Cornelia
Supertype i subtype
Atunci cnd un model ER este complet, niciodat nu
avem subtipuri de sine stttoare. Cu alte cuvinte, n
cazul n care o entitate are un subtip, trebuie s existe
ntotdeauna cel puin un al doilea subtip.
Exist dou reguli ale subtype-ului:
Subtype-uri imbricate
Subtipurile pot fi
imbricate pe mai
mult de dou
niveluri.
Exemplu
Procesul de dezvoltare a bazei de date ncepe cu specificarea cerinelor de
business( Business Information Requirements)
Exemplu:
Reguli de business
n procesul de dezvoltare a unui model conceptual de
date, nu toate regulile de business pot fi modelate.
Unele reguli, cum ar fi cele dou enumerate mai jos
trebuie s fie implementate prin programare:
Relaii transferabile
Opionalitatea:
Putem avea un TYPE care nu clasific nici o
melodie (SONG)?
Fiecare melodie (SONG) trebuie s aibe un tip?
Cardinalitatea:
Ct de multe piese pot fi clasificate de un singur
tip (TYPE) ?
Ct de multe tipuri (TYPE) poate o melodie
(SONG) avea ?
Transferabilitatea:
Se poate ca unei melodii (SONG) s i se schimbe
tipul de la un tip la un alt tip? Rspuns: DA
Relaie netransferabil
Exemplu de relaie netransferabil:
Relaie netransferabil:
Relaia dintre un student
i propria chitan.
Aceste relaii sunt
reprezentate printr-un
romb pe relaie
Curs Baze de Date - Gyorodi
Cornelia
Tipuri de relaii
Exist mai multe tipuri de relaii:
Exemplu
Intr-o afacere, fiecare partener
poate fi desemnat s lucreze la
unul sau mai multe evenimente.
Fiecare eveniment poate fi un
loc de munc pentru unul sau
mai muli parteneri.
Atunci cnd un EVENT
PLANNER, un DJ, sau un
MANAGER lucreaz la un
eveniment, noi dorim s se
nregistreze statutul locului de
munc.
Crei entiti ar aparine
atributul "statut?
Curs Baze de Date - Gyorodi
Cornelia
Exemple
Fiecare emisiune
TV poate fi
vizionat de ctre
una sau mai multe
persoane.
Fiecare persoan
poate viziona
spectacole la unul
sau mai multe TV.
Analiza CRUD
O modalitate bun de a valida o diagram ERD este aceea de a
face o analiz CRUD pe ea. CRUD este un acronim pentru creare
(create), regsire (retrieve), actualizare (update), si tergere
(delete). Acestea sunt cele patru operaii de baz pe care o baz de
date le permite.
Partea de verificare a unui model de date pentru integralitatea i
acurateea este asigurarea c toate funciile CRUD specificat de
scenariul de afaceri i regulile de business sunt reprezentate n
diagrame ER.
Dac avei entiti n diagrama ER pe care nu se aplic nici o
operaie a analizei CRUD( adica nu se realizeaz adugri, cutri
actualizri, sau tergeri pe ea), atunci s-ar putea ca aceea entitate
s nu fie necesar ca entitate n modelul dumneavoastr
Curs Baze de Date - Gyorodi
Cornelia
Identificatorul unic
(the unique identifier - UID)
Identificator unic (UID) este foarte important ntr-o baze de date
relaional.
Un UID este o valoarea sau o combinaie de valori care permite
utilizatorului s identifice c un element este unic n rndul
tuturor elementelor.
Identificarea corect a atributului sau a combinaiei de atribute,
i / sau de relaii este o abilitate care orice designer de baz de date
trebuie s dobndeasc.
De exemplu: Identificatorul unic este modul de a gsi o
nregistrare ntr-un fiier, un card special ntr-o mulime de
carduri, un pachet ntr-un depozit, etc.
Identificatorul unic
( UID) artificial
UID-uri artificiale sunt cele care nu apar n lumea real, dar sunt
create n scopul identificrii ntr-un sistem.
Oamenii nu se nasc cu "numere", dar o mulime de sisteme aloca
numere unice pentru a identifica persoane:ID-ul studenilor, IDuri de client, etc
Un pantof are o culoare, o dimensiune, un stil, dar nu are cu
adevrat un "numr descriptiv. Cu toate acestea, un magazin de
pantofi va atribui numere unice pentru fiecare pereche de pantofi
astfel nct s poat fi identificat n mod unic o pereche de
pantofi.
UID-uri artificiale
Cum putem identifica n mod unic
un student?
Putem folosi o combinaie de
prenume i nume de familie?
Numai dac suntem siguri c o
combinaie este unic.
De multe ori, este mai simplu i
direct a creea un atribut
artificial i a-l face cod unic de
identificare.
Un UID poate fi att artificial ct
i compus.
Curs Baze de Date - Gyorodi
Cornelia
UID-uri candidat
Uneori exist mai mult de un identificator unic ntr-o entitate.
De exemplu, atunci cnd, comanzi un produs de pe un site
comercial, de obicei, vi se va atribui un cod unic de client i, de
asemenea, se va cere s introducei adresa de e-mail.
Fiecare dintre aceste identific n mod unic persoana, i fiecare ar
putea fi aleas ca UID. Ambele sunt UID-uri candidat.
Numai unul dintre UID-urile candidat este ales ca UID real.
Aceasta se numete UID primar. Ceilali candidai sunt numite
UID-uri secundare.
UID-uri candidat
Atributul Student ID a
fost ales ca i UID primar
in ambele entiti
STUDENT.
Prima entitate are un UID
secundar, n timp ce cea
de-a doua entitate are
dou UID-uri secundare
(unul dintre aceste este
compus)
Curs Baze de Date - Gyorodi
Cornelia
Normalizarea BDR
Teoria normalizrii aparine celui ce a fundamentat
mode-lul relaional al bazelor de date n 1970,
americanul E. F. Codd.
La baza acestui model de optimizare st conceptul de
dependen funcional .
Normalizarea reprezint procesul de transformare
succesiv a unei BDR n vederea aducerii sale ntr-o
form standard optimizat, denumit form normal.
Prin normalizare se are n vedere eliminarea
anomaliilor, dependenelor nedorite ntre date,
eliminarea redundanelor .
23
Normalizarea BDR
E.F. Codd presupune un proces de normalizare
pe etape. O baz de date nenormalizat fiind
adus mai nti n forma normal unu (FN1),
apoi n forma normal 2 (FN2) .a.m.d., prin
aplicarea unor reguli de optimizare a structurii
bazei de date ce urmresc spargerea unui tabel
ne-normalizat n dou sau mai multe tabele
normalizate, fr pierdere de informaii.
24
25
Dependena datelor
Dependena datelor:
dependena funcional - se refer la faptul c un
cmp al unui tabel depinde de un alt cmp al unui
tabel, adic se spune c un cmp x depinde
funcional de un cmp y dac i numai dac pentru
o valoare a cmpului x corespunde o singur
valoare a cmpului y
dependena multivaloric - se refer la faptul c
valoarea unui cmp x poate forma cte o
nregistrare cu toate combinaiile posibile ale
valorilor cmpurilor y i z
27
28
FN1
Examinai entitile din
dreapta. Exist atributele
multivaloare?
FN1
Cnd toate
atributele unei
entiti sunt valori
singulare, atunci
entitatea se afl n
FN1.
35
36
FN2
37
39
Algoritmul FN3
Algoritmul FN3
1. Pentru fiecare dependen funcional tranzitiv se
transfer atributele implicate n dependen tranzitiv
ntr-o nou relaie.
2. Se determin cheia primar a fiecrei noi relaii create
la pasul 1.
3. Se introduc n relaia iniial n locul atributelor
transferate, cheile primare determinate la pasul 2 .
4. Se reanalizeaz relaia iniial. Dac n cadrul ei exist
noi dependene tranzitive se trece la pasul 1, altfel
procesul de aducere la FN3 s-a terminat.
40
Exemplu 1 de FN3
Adresa de magazin este
dependent de numrul de CDul, care este UID a entitii CD.
Deci, aceast entitate este n 1NF
i 2NF.
Dar adresa de magazin este, de
asemenea, depinde de nume de
magazin, care nu este atribut
UID.
Acesta este un exemplu de o
dependen tranzitiv i o
nclcare a FN3.
Modelul corect normalizat este
prezentat aici: a crea o nou
entitate Store, cu o relaie pe
CD.
Exemplu 2 de FN3
Exemple de constrngeri:
Fiecare angajat trebuie s lucreze numai ntr-un singur
departament.
Supertipul
PARTNER din acest
model este
reprezentat prin arc
n aceast diagram.
Exemplu
Care sunt UIDurile pentru
fiecare entitate?
Relaiile sunt
notate barat
deoarece UID-ul
entiti de pe un
nivel depinde de
UID-ul entitii
nivelului
anterior.
Exemplu
Pentru a modela
modificrile salariul de-a
lungul timpului, se adaug
o entitate SALARY
HISTORY .
UID-ul entiti SALARY
HISTORY este asociat cu
id-ul entitii EMPLOYEE
i cu salary start date.
Exemplu
Este important s se in o
eviden a modificrilor de pre.
n acest model, vom presupune c
fiecare achiziie este doar a unui
singur produs.
Preul pe care a fost pltit se poate
determina prin potrivirea datei de
cumprare ntre data de nceput
i data de sfrit de pre.
Exemplu
Exemplu
Pentru a gsi toi angajai din departamentul cu numrul 10, vom
scrie urmtoarea secven SQL:
SELECT *
FROM employees
WHERE department_id = 10;
Exemplu
Cheia primar
O cheie primar (PK) este o coloan sau un set de coloane care
identific unic fiecare rnd din tabel.
Fiecare tabel trebuie s aibe o cheie prim i cheia primar
trebuie s fie unic. Nici o parte din cheia primar nu poate fi null.
No part of the primary key can be null.
Cheie candidate
O tabel poate avea mai mult dect o coloan sau combinaie de
coloane care pot servi ca i cheie primar. Fiecare din aceste sunt
numite chei "candidate .
Chei alternative
Selectm una dintre aceste chei candidate pentru a deveni cheie
primar pentru tabel. Celelalte chei candidate devin chei
alternative (sau chei unice).
Integritatea coloanei
O coloan trebuie s conin numai valori care corespund
formatului de dat definit n acea coloan
Tipurile de constrngeri
Terminologia mapri
Terminologia mapri
Maparea relaiilor
Relaiile sunt mapate n chei externe care permit tabelelor s se
refere una la cealalt. Cheile externe vor permite utilizatorilor s
acceseze informaiile din mai multe tabele. Dac nu vom mapa
relaiile, noi vom avea o mulime de tabele standalone care conin
informaii care nu pot fi legate de restul bazei de date.
Maparea relaiilor este prima parte a procesului de crearea intr-o
prima etapa a bazei de date, care va servi ca fundament pentru
continuarea discuiilor ntre designeri, dezvoltatori, i
administratori bazei de date.
Maparea relaiilor
Exemplu
Exemplu
Exemplu
Maparea relaiilor
Exemplu-Maparea relaiilor
Modelul fizic
Exemplu
Exemplu
Exemplu
Maparea arcurilor
Exemplu
Limbajul SQL
Standardul SQL include:
un limbaj de definire a datelor (a schemei
unei baze de date relaionale) (LDD),
un limbaj de manipulare a datelor
(LMD),
un limbaj de interogare a bazei de date
(LID),
un limbaj de control al bazei de date
(LCD)
Curs Baze de Date - Gyorodi
Cornelia
Limbajul SQL
Exemplele din acest capitol se refer la un sistem formal
conceput, care ine evidena angajaiolor unei firme.
Diagrama conceptual pentru modelul relaional este
prezentat n urmtoarea figur:
EMP
DEPT
empno
ename
job
mgr
hiredate
sal
comm
deptno
deptno
dname
loc
SALGRADE
grade
losal
hisal
Limbajul SQL
Descrierea tabelelor corespunztoare acestor scheme relaionale:
EMP:
DEPT:
deptno : codul departamentului, care trebuie s fie unic,
(cheie primar).
dname : denumirea departamentrului
loc : locul unde se afl departamentul
SALGRADE:
grade : un cod care indic gradul de salarizare,
este cheie primar
losal : limita inferioar
hisal : limita superioar
Curs Baze de Date - Gyorodi
Cornelia
Limbajul SQL
Exemplu
Crearea unui tabel cu denumirea dept se va
realiza astfel:
CREATE TABLE dept
(deptno
NUMBER (2),
dname
VARCHAR2(14),
loc
VARCHAR2(13));
Cheie unic
Tipuri de constrngeri
[table_constraint]);
unde:
schema : este numele utilizatorului care a creat tabela, este
opional n cazul n care utlizatorul este i deintorul tabelei ;
table : numele tabelei;
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Exemple
a. Definirea unei constrngeri de cheie primar
(PRIMARY KEY) coloanei empno din tabela emp.
CREATE TABLE emp(
empno
NUMBER (4),
ename
VARCHAR(10),
..
deptno
NUMBER(7,2) NOT NULL,
CONSTRAINT emp_empno_pk PRIMARY KEY
(empno));
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Definirea constrngeri de cheie unic pentru coloana
dname i cheie primar pentru coloana deptno din
tabela dept.
CREATE TABLE dept(
deptno
NUMBER (2),
dname
VARCHAR(12),
loc
VARCHAR2(13),
CONSTRAINT dept_dname_uk UNIQUE(dname),
CONSTRAINT dept_deptno_pk PRIMARY KEY
(deptno));
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
CHECK CONSTRAINT
Definirea unei constrngeri care trebuie ndeplinit de
toate tuplurile din tabel. Coloana deptno din tabela
dept trebuie s aibe valori cuprinse ntre 10 i 99,
pentru toate rndurile din tabel.
CREATE TABLE dept(
deptno
NUMBER (2),
dname
VARCHAR(12),
loc
VARCHAR2(13),
CONSTRAINT dept_deptno_ck CHECK (DEPTNO
BETWEEN 10 AND 99));
Curs Baze de Date - Gyorodi
Cornelia
CHECK CONSTRAINT
tergerea constrngerilor
tergerea constrngeri de cheie primar din tabela dept
precum i tergerea constrngeri de cheie extern
asociat din tabela emp.
ALTER TABLE dept
DROP PRIMARY KEY CASCADE;
tergerea unei tabele se realizeaz cu ajutorul comenzii
DROP TABLE care are sintaxa:
DROP TABLE table;
unde: table este numele unei tabele
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Crearea unui view care conine informaii despre
angajaii din departamentul 10.
CREATE VIEW
AS SELECT
FROM
WHERE
empvu10
empno, ename, job
emp
deptno = 10;
Comanda SELECT
3. Dac clauza SELECT include funcii pe grup,
atunci se introduce clauza GROUP BY i se
reiau toate atributele menionate n clauza
SELECT la are au fost aplicate funcii pe
grup.
4. Se determin condiiile care limiteaz
selectarea. Condiiile care se refer la grup
apar n clauza HAVING. Iar cele care se refer
la valori individuale apar n clauza WHERE.
Comanda SELECT
5. Dac este necesar valoarea unui atribut din
alt tabel sau este necesar o funcie pe grupuri
n clauza WHERE, atunci se utilizeaz un
subquery (o alt instruciune SELECT).
6. Dac este necesar fuzionarea rezultatelor din
dou clauze SELECT, se utilizeaz clauza
UNION.
6. Cu ajutorul clauzei ORDER BY se precizeaz
ordinea n care apar tuplurile.
Curs Baze de Date - Gyorodi
Cornelia
Comanda SELECT
Utiliznd instruciunea SELECT putem face
urmtoarele operaii:
Selecie selecteaz rnduri dintr-o tabel de
date dup un anumit criteriu. Sunt vzute doar
rndurile care ndeplinesc condiia din criteriul
specificat.
Proiecie selecteaz anumite coloane dintr-o
tabel de date.
Join
permite afiarea datelor din mai
multe tabele, tabelele avnd o legtur ntre
ele.
Curs Baze de Date - Gyorodi
Cornelia
Exemple
Selectarea tuturor coloanelor din tabela DEPT.
SELECT *
FROM dept;
Selectarea unor coloane specificate explicit i
toate rndurile dintr-o tabel. Afim numrul
departamentului i localitatea din tabela
DEPT.
SELECT deptno , loc
FROM dept;
Curs Baze de Date - Gyorodi
Cornelia
Exemple
Afim numele persoanei, salariul pe o lun i salariul
anual care a fost calculat din salariul pe o lun plus un
bonus de 100 nmulit cu 12, din tabela EMP.
SELECT ename, sal, 12*(sal+100)
FROM emp;
OBS: Folosirea parantezelor va fora evaluarea expresiei.
Utilizarea unui alias pentru o coloan se face astfel:
SELECT ename AS name, sal salary;
FROM emp;
OBS: cuvntul cheie AS poate fi opional. Coloanele
name i salary implicit vor fi afiate cu litere mari.
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Afieaz numele angajatului (ename), job-ul (job) i
numrul departamentului (deptno), pentru toi
angajaii din tabela EMP al cror nume de job este
ANALIST.
SELECT ename, job, deptno
FROM emp;
WHERE job = ANALIST;
OBS: irurile de caractere i tipul dat calendaristic
trebuiesc incluse ntre apostroafe.
Formatul de
dat n Oracle implicit este: DD_MON_YY.
Curs Baze de Date - Gyorodi
Cornelia
Operatorii de comparaie
Operatorii de comparaie sunt:
=
egal
>
mai mare
<
mai mic
>= mai mare egal
<= mai mic egal
<> diferit
Operatorii de comparaie pot fi utilizai n compararea unei expresii
cu o alt expresie. Ei sunt utilizai n clauza WHERE n urmtorul
format :
WHERE expresie operator valorare
Curs Baze de Date - Gyorodi
Cornelia
Exemple
Exemple
WHERE hiredate = '01-JAN-95'
WHERE sal > 1500
WHERE ename ='SMITH'
BETWEENAND
IN (list)
cuprins n lista de valori.
LIKE
dac se potrivete cu macheta.
IS NULL
compar cu o valoare NULL
Exemple
Afieaz toi angajai care au salariul ntre 1000 i 1500.
SELECT ename, sal
FROM
emp
WHERE sal BETWEEN 1000 AND 1500;
Trebuie specificat mai nti limita inferioar apoi limita superioar.
Operatorii logici
Operatorii logici sunt:
AND -returneaz TRUE cnd ambele componente sunt
TRUE.
OR -returneaz TRUE cnd cel puin una din
componente este TRUE.
NOT -returneaz TRUE cnd componenta este
FALSE.
Afieaz toi angajai care au job ='CLERK' i salariul >= 1100.
SELECT empno, ename, job, sal
FROM emp
WHERE sal >=1100 AND job = 'CLERK';
Curs Baze de Date - Gyorodi
Cornelia
Exemple
Afieaz toi angajai care au job = 'CLERK' sau
salairul >= 1100.
SELECT empno, ename, job, sal
FROM emp
WHERE sal >= 1100 OR job = 'CLERK';
Afieaz toi angajaii din tabela EMP a cror job nu
este CLERK, MANAGER sau ANALYST.
SELECT ename, job
FROM emp
WHERE job NOT IN ('CLERK', 'MANAGER',
'ANALYST');
Curs Baze de Date - Gyorodi
Cornelia
Clauza ORDER BY
Clauza ORDER BY permite afiarea rndurilor ntr-o
ordine specific.
Trebuie plasat ultima clauz ntr-o comand
SELECT.
Clauza ORDER BY revine ultimei comenzi SELECT.
DESC - descendent
Afieaz angajai n ordine descresctoare dup data
de angajare. (hiredate).
SELECT ename, job, deptno, hiredate
FROM emp
ORDER BY hiredate DESC;
Curs Baze de Date - Gyorodi Cornelia
Clauza ORDER BY
Putem sorta datele dup mai multe coloane. Numrul
maxim de coloane fiind cel pe care l are tabela.
Putem specifica n clauza ORDER BY i coloane care
nu apar n clauza SELECT.
Tipuri de index
Index compus
Index compus(cont)
Exemplu
Inserarea unui rnd coninnd valori pentru
fiecare coloan a tabelei. Vom insera un rnd
nou n tabela dept prin urmtorea secven:
INSERT INTO
VALUES
Exemplu
Inserarea valorilor prin utilizarea variabilelor de
substituie va permite introducerea valorilor
interactiv. De exemplu, vom introduce
informaii interactiv n tabela dept prin
secvena urmtoare:
INSERT INTO dept(deptno, dname, loc)
VALUES (&dept_id, '&dept_name',
'&dept_loc');
Curs Baze de Date - Gyorodi
Cornelia
Comanda INSERT
Copierea unor nregistrri dintr-o alt tabel utiliznd
comanda INSERT va fi exemplificat prin urmtorul
exemplu:
INSERT INTO manager(id, name, salary, hiredate)
SELECT empno, ename, sal, hiredate
FROM emp
WHERE job = ' MANAGER';
Comanda UPDATE
Modificarea unui rnd existent dintr-o tabel se realizeaz utiliznd
comanda UPDATE, care are sintaxa:
UPDATE
table
SET
column = value [, column = value]
[WHERE
condition]
unde:
table
este numele tabelei.
column
este numele coloanei din tabel.
value
valoarea corespunztoare coloanei.
condition
condiia care identific rndurile care vor fi
modificate.
Exemplu
Utilizarea clauzei WHERE pentru a specifica
rndurile care vor fi modificate ntr-o tabel:
UPDATE
SET
WHERE
emp
deptno = 20
empno = 7782;
Comanda DELETE
Pentru a suprima un rnd existent dintr-o tabel
se va utiliza comanda DELETE, care are
urmtoarea sintax:
DELETE [FROM]
table
[WHERE
condition]
unde:
table
este numele tabelei.
condition este o condiie care identific
rndurile care vor fi suprimate.
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Rndurile care se vor terge se vor specifica prin clauza
WHERE.
DELETE FROM
dept
WHERE
dname = 'ANALIST';
Se vor terge toate rndurile din tabela dept care au
numele departamentului ANALIST.
Comanda MERGE
Comanda MERGE ndeplinete dou sarcini n
acelai timp. MERGE va face INSERT i
UPDATE simultan. Dac o valoare este lips o
nou valoare se va insera. Dac o valoare
exist, dar este necesar s se modifice, comanda
MERGE o va actualiza.
Pentru a putea executa aceste modificri pe
tabelele bazei de date, este necesar s ai
privilegiul de INSERT i UPDATE pe tabelele
int trebuie i privilegiul SELECT pe tabela
surs
Curs Baze de Date - Gyorodi
Cornelia
Funcii n SQL
Exist dou tipuri de funcii n SQL.
funcii care manipuleaz un singur rnd (single-row)
funcii care manipuleaz un grup de rnduri (multiplerow).
Funciile single-row sunt:
Funcii pentru tipul caracter
Funcii pentru tipul numeric
Funcii pentru dat calendaristic
Funcii de conversie dintr-un tip de dat n altul
Funcii speciale : NVL
DECODE
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Afieaz informaii pentru angajatul cu numele
'Blake'.
SELECT empno, ename, sal, comm, deptno
FROM
emp
WHERE INITCAP(ename) ='Blake';
Rezultatul
GoodString
Str
6
3
******5000
Exemplu
Afieaz informaii despre angajaii care
lucreaz la departamentul FINANCIAR.
SELECT ename, sal, comm, LENGTH(ename)
FROM
emp
WHERE SUBSTR(job, 1, 9) ='FINANCIAR';
Funcia
ROUND(45.926, 2)
TRUNC(45.926, 2)
MOD(1600, 300)
Rezultatul
45.93
45.92
100
Rezultat
Dat
Descriere
Adun un numr de zile la o dat
Dat - numr
Dat
Dat - Dat
Dat+numr/24
Dat
Exemple
MONTHS_BETWEEN('01-SEP-95', '11-JAN-94')
=> 19.6774194
ADD_MONTHS('11-JAN-94', 6)
NEXT_DAY('01-SEP-95','FRIDAY')
LAST_DAY('01-SEP-95')
ROUND('25-JUL-95','MONTH')
ROUND('25-JUL-95','YEAR')
TRUNC('25-JUL-95','MONTH)
TRUNC('25-JUL-95','YEAR')
=> '11-JUL-94'
=> '08-SEP-95'
=> '30-SEP-95'
=> 01-AUG-95
=> 01-JAN-96
=> 01-JUL-95
=> 01-JAN-95
Exemplu
Afieaz numrul angajailor i data angajrii
pentru toi angajaii din 1987.
SELECT ename, hiredate, ROUND(hiredate,'MONTH'),
TRUNC(hiredate,'MONTH')
FROM emp
WHERE hiredate like '%87' ;
Exemplu
Afieaz numele i data angajrii pentru toi
angajaii din tabela EMP.
SELECT ename, TO_CHAR(hiredate, 'fmDD Month
YYYY') DATA_ANG
FROM emp ;
Convertirea unui ir de caractere la un numr se face
folosind funcia: TO_NUMBER(char).
Convertirea unui ir la o dat se face folosind funcia:
TO_DATE(char[,'fmt']).
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Afim salariul lui SCOTT folosind simbolul $ i
indicatorul de mii.
SELECT TO_CHAR(sal, '$99,999') SALARY
FROM emp
WHERE ename = 'SCOTT ';
Afieaz numele i data angajrii tuturor angajailor
din tabela EMP care s-au angajat n 22 februarie 1981.
SELECT ename, hiredate
FROM emp
WHERE hiredate = TO_DATE('February 22, 1981',
'Month dd, YYYY');
Curs Baze de Date - Gyorodi
Cornelia
Funcia NVL
Convertete o valoare NULL la o valoare actual.
Tipurile de date care pot fi folosite sunt: date, number i
char:
NVL(comm, 0)
NVL(hiredate, '01-JAN-97')
NVL(job, 'No job yet').
Sintaxa:
NVL(expr1, expr2)
unde:
expr1 este expresia care poate conine NULL
expr2 este valoarea la care va fi convertit o expresie
NULL.
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Afieaz numele, salariul, comisionul i
salariul anual pentru toi angajaii din tabela
EMP, dac comisionul este NULL va fi
convertit la 0.
Funcia DECODE
Este similar cu CASE sau IF-THEN-ELSE.
Are sintaxa:
DECODE(col/expresie, s1, r1[,s2, r2,..][,default])
Funcia DECODE evalueaz expresia, dup care o
compar cu fiecare valoare s1, s2,.. Dac valoarea
expresiei este aceai cu una dintre valorile s1, s2,
atunci se va returna rezultatul corespunztor valorii
gsite. Dac valoarea implicit [default] este omis, o
valoare NULL va fi returnat atunci cnd nu se gsete
nici o valoare identic cu expresia.
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
SELECT job, sal,
DECODE(job, 'ANALIST', sal*1.1,
'CLERK', sal*1.15,
'MANAGER',
sal*1.2,
sal)
REVISED_SALARY
FROM emp;
Exemplu
Aceeai instruciune poate fi scris folosind IFTHEN-ELSE astfel:
IF job = 'ANALIST' THEN sal = sal*1.1
IF job = 'CLERK ' THEN sal = sal*1.15
IF job = 'MANAGER' THEN sal = sal*1.2
ELSE sal = sal
Exemplu
Afieaz numele managerului, cel care nu mai are ef
(mgr este NULL).
SELECT ename,NVL(TO_CHAR(mgr), 'No Manager')
FROM emp
WHERE mgr IS NULL;
OBS: Funciile avnd ca i rezultat un singur rnd, pot fi
ncuibate pn la orice adncime. Funciile ncuibate
sunt evaluate ncepnd cu cel mai adnc nivel spre
nivelul superior.
Tipuri de Join
Tipul de Join
Descriere
Inner
Left (outer)
Right (outer)
Full
Equijoin
O condiie de equijoin se va scrie astfel:
SELECT tabel1.coloan, tabel2.coloan
FROM tabel1, tabel2
WHERE tabel1.coloan = tabel2.coloan;
Exemplu
Afieaz numele angajatului, numele
departamentului precum i localitatea unde se
afl departamentul, pentru toi angajai.
SELECT emp.empno, emp.ename, emp.depno,
dept.dname, dept.loc
FROM emp, dept
WHERE emp.depno = dept.depno;
Observaii
Relaia dintre tabela EMP i DEPT este un
equijoin, valorile din coloana depno din ambele
tabele trebuie s fie egale.
Deoarece coloana depno are acelai nume n
ambele tabele, ea trebuie prefixat cu numele
tabelei pentru a nu exista ambiguiti.
n plus, de condiia de join se poate aduga un
criteriu de cutare n clauza WHERE.
Exemplu
Afieaz numele angajatului, numele
departamentului precum i localitatea unde se
afl departamentul, pentru angajatul cu
numele King.
Non-Equijoin
EMP:
SALGRADE
Empno Ename
Sal
7839
7698
7782
7566
7654
7499
7844
7900
5000
2850
2450
2975
1250
1600
1500
950
KING
BLAKE
CLARK
JONES
MARTIN
ALLEN
TURNER
JAMES
Grade
1
2
3
4
5
Losal
700
1201
1401
2001
3001
Hisal
1200
1400
2000
3000
9999
Exemplu
Afim numele angajailor, salariul i gradul de
salarizare pentru fiecare angajat din tabela
EMP.
SELECT e.ename, e.sal, s.grade
FROM emp e, salgrade s
WHERE e.sal BETWEEN s.losal AND s.hisal;
Obs: Se poate folosi >= AND <= nlocuind astfel
BETWEEN.
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Vom considera tabele EMP i DEPT:
ENAME
KING
BLAKE
CLARK
JONES
DEPTNO
10
20
30
10
DEPTNO
10
20
30
40
DNAME
RESEARCH
SALES
OPERATIONS
ACCOUNTING
SELF-JOIN
Self-Join = interogarea unei tabele cu ea nsi
Cteodat este nevoie s interoghezi o tabel cu
ea nsi. Vom lua spre exemplificare
urmtoarea tabel:
EMP(ANGAJAI)
EMP(MANAGERI)
EMPNO
ENAME
MGR
EMPNO
ENAME
7839
KING
7698
BLAKE
7839
7839
KING
7782
CLARK
7839
7839
KING
7566
JONES
7698
7698
BLAKE
Exemplu
De exemplu, pentru a gsi numele managerului
lui Blake va trebui s parcurgem urtorii pai :
1. Gsirea lui Blake n tabela EMP, cutnd n
coloana ename
2. Gsirea codului managerului pentru Blake
adic mgr, care este 7839.
3. Gsirea persoanei care are empno=7839 i
afiarea numelui acestei persoane. Deci
persoana care are empno=7839 este KING.
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Afiarea numelui unui i numele managerului
acelui angajat ( spre exemplu angajul Blake).
SELECT angajati.ename || ' work for ' ||
manager.ename
FROM emp angajati, emp manager
WHERE angajati.mgr = manager.empno
and angajati.nume= Blake '
n acest exemplu tabela EMP a fost interogat cu ea nsi prin
folosirea unor aliasuri cu nume diferit pentru aceei tabel.
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Afim numele angajatului salarul angajatului
i numele managerului angajatului i salarul
managerului.
SELECT a.ename, a.salar || ' works for ' ||
m.ename, m.salar
FROM emp a, emp m
WHERE a.mgr = m.empno
n acest exemplu tabela EMP a fost interogat cu ea
nsi prin folosirea unor aliasuri cu nume diferit
pentru aceei tabel.
Curs Baze de Date - Gyorodi
Cornelia
Clauza USING
Funcii pe grup
Aceste funcii opereaz pe seturi de rnduri
avnd un rezultat pe grup.
AVG([DISTINCT | ALL], n)
- returneaz valoarea
medie a lui n, ignornd valorile nule.
COUNT( {*| [DISTINCT | ALL], expr}) - returneaz
numrul de rnduri pentru care expresia expr este
diferit de null. Returneaz toate rndurile selectate
utiliznd * incluznd duplicatele i rndurile cu valori
null.
MAX([DISTINCT | ALL], expr) - returneaz valoarea
maxim a expresiei expr, ignornd valorile null.
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Afiarea numrului de departamente distincte
din tabela EMP (nu se vor lua i valorile
duplicate)
SELECT COUNT(DISTINCT(deptno))
FROM emp;
Exemplu
Toate funciile pe grup exceptnd funcia COUNT(*)
ignor valorile nule. Funcia NVL foreaz includerea
valorilor null de ctre funciile pe grup.
Exemplu
Afim numrul departamentului i media
aritmetic a salariului pe departament.
SELECT deptno, AVG(sal)
FROM emp
GROUP BY deptno;
OBS: Cnd utilizm clauza GROUP BY, trebuie s
includem n clauza GROUP BY toate coloanele din lista
SELECT care nu sunt incluse n funciile pe grup (n
exemplu de mai sus coloana deptno).
Curs Baze de Date - Gyorodi
Cornelia
Clauza GROUP BY
Exemplu
Afim media aritmetic a salariului pe
departament, fr s afiam numrul
departamentului.
SELECT AVG(sal)
FROM emp
GROUP BY deptno;
OBS: Coloanele din clauza GROUP BY nu
trebuie neaparat s fie incluse n lista
coloanelor SELECT.
Curs Baze de Date - Gyorodi
Cornelia
Cluaza GROUP BY
Clauza GROUP BY
Exemplu
Afim numrul departamentului i media
aritmetic a salariului grupat pe departament
n ordine cresctoare a mediei aritmetice a
salariului pe departament.
Exemplu
Uneori este nevoie s afim rezultatele unui grup din
interiorul unui alt grup. Acest lucru se realizeaz
specificnd n clauza GROUP BY lista de coloane. n
clauza GROUP BY pot fi specificate mai multe coloane.
Clauza HAVING
Nu putem folosi clauza WHERE pentru a restriciona
grupurile.
Vom exemplifica acest lucru prin urmtorul exemplu:
SELECT deptno, AVG(sal)
FROM emp
WHERE AVG(sal) > 2000
GROUP BY deptno;
OBS: Acest exemplu are o eroare la clauza WHERE
AVG(sal) > 2000 deoarece nu se poate utiliza clauza
WHERE mpreun cu clauza GROUP BY
Curs Baze de Date - Gyorodi
Cornelia
Clauza HAVING
Vom utiliza clauza HAVING ntr-o instruciune SELECT
pentru a specifica care dintre grupuri vor fi afiate.
SELECT coloane, funcii_pe _grup(coloan)
FROM
tabele
[WHERE condiii]
[GROUP BY
expresia_de_ grupare]
[HAVING BY
condiie_de_ grupare]
[ORDER BY
lista_de_coloane];
unde:
condiie_de_grupare: specific condiia de restricionare a
grupurilor.
Curs Baze de Date - Gyorodi
Cornelia
Clauza HAVING
Cnd se utilizeaz clauza HAVING ntr-o instruciune
SELECT se vor executa urmtorii pai:
se vor grupa rndurile.
se vor aplica funciile pe grup.
se vor afia grupurile care respect condiia din clauza
HAVING.
OBS: Este recomandat s plasm clauza GROUP BY
nainte de clauza HAVING deoarece este mult mai
logic. Grupurile sunt formate i funciile pe grup sunt
calculate nainte ca, clauza HAVING s fie aplicat
grupurilor din lista SELECT.
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Se cere s se afieze salariul total lunar pentru
fiecare funcie (job), pentru care salariul total
este mai mare dect 10 000, ordonat dup
salariul total lunar.
SELECT job, SUM(sal) SUMA_SALAR
FROM
emp
GROUP BY
job
HAVING SUM(sal) > 10.000
ORDER BY
SUM(sal);
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Pentru a afla maximul salariului mediu pe
depatament, vom scrie secvena urmtoare:
SELECT MAX(AVG(sal))
FROM emp
GROUP BY
deptno;
OBS: Funciile pe grup pot fi ncuibate doar
maxim 2 adncimi
Subinterogrile (subqueries)
O subinterogare este o interogare ale crei rezultate
sunt transmise ca argumente unei alte interogri.
O subinterogare va permite s transmitem setul de
rezultate al unei interogri la alta. Sintaxa general
este urmtoarea:
SELECT
coloane
FROM
tabela
WHERE
expr operator
(SELECT
coloane
FROM
tabela);
operator: include operatorii de comparaie.
Curs Baze de Date - Gyorodi
Cornelia
IN
ANY
ALL
Curs Baze de Date - Gyorodi
Cornelia
Tipuri de subinterogri
Exist 3 tipuri de subinterogri:
Subinterogri care returneaz un singur rnd
(single-row subqueries).
Exemplu
S se afieze departamentele (deptno) care au salariul
minim pe departament mai mare dect salariul minim
pe departamentul 20.
SELECT
deptno, MIN(sal)
FROM
emp
GROUP BY deptno
HAVING
MIN(sal) >
(SELECT MIN(sal)
FROM
emp
WHERE deptno =20);
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Afiarea tuturor angajailor care au salariul
egal cu salariul minim pe departamente, se va
realiza n urmtoarea secven:
SELECT ename, sal, deptno
FROM
emp
WHERE sal IN (SELECT MIN(sal)
FROM
emp
GROUP BY deptno);
Exemplu
Afiarea tuturor angajailor care au salariul mai mic
dect salariul angajaiolor din departamentul
'Financiar', excluznd angajai din departamentul
'Financiar', se realizeaz prin urmtoarea secven:
SELECT
ename, job, sal
FROM
emp
WHERE sal <ANY
(SELECT sal
FROM
emp
WHERE job ='Financiar')
AND
job<> 'Financiar';
Curs Baze de Date - Gyorodi
Cornelia
Operatorul ANY
Query principal va compara salariul cu valoarea
maxim returnat de subquery.
< ANY va compara cu valoarea maxim
returnat de subinterogare, deci va returna
valori mai mici dect valoarea maxim.
>ANY va compara cu valoarea minim
returnat de subinterogare, deci va returna
valori mai mari dect valoarea minim.
=ANY este echivalent cu IN.
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Afiarea tuturor angajailor care au salariul mai mare
dect media aritmetic a salariului pe departamente, se
realizeaz prin urmtoarea secven:
SELECT
ename, job, sal
FROM
emp
WHERE sal >ALL
(SELECT AVG(sal)
FROM
emp
GROUP BY deptno);
Operatorul ALL
Query principal va compara salariul cu valoarea
maxim returnat de subquery, 2900.
< ALL va compara cu valoarea minim
returnat de subinterogare, deci va returna
valori mai mici dect valoarea minim.
>ALL va compara cu valoarea maxim
returnat de subinterogare, deci va returna
valori mai mari dect valoarea maxim.
OBS: Operatorul NOT nu poate fi utilizat cu
operatorii IN, ANY i ALL.
Curs Baze de Date - Gyorodi
Cornelia
Exemplu
Afiarea tuturor angajailor care nu au subordonai, se
realizeaz prin secvena:
SELECT angajai.ename
FROM emp
WHERE angajati.empno NOT IN
(SELECT manager.mgr
FROM
emp manager);
Privilegii i schema
Privilegiile sunt acele drepturi de executare a
unor instruciuni SQL
Dreptul de DBA este cel mai mare drept care
permite acordarea de drepturi userilor la baza
de date i la obiectele acesteia
Useri au nevoie de privilegii pe obiectele bazei
de date pentru a manipula aceste obiecte.
Useri pot acorda de asemenea privilegiile lor
altor userii sau altor roluri.
Curs Baze de Date - Gyorodi
Cornelia
Privilegii i schema
O schem este o colecie de obiecte cum ar fi:
tabele, view-uri i secvene.
Schema este ceea ce i aparine unui user al
bazei de date i are acelai nume ca i user-ul.
In this course, your schema name is a
combination of your city, state/country, your
school name, course name and student number.
For example: uswa_skhs_sql01_s22..
Curs Baze de Date - Gyorodi
Cornelia