suport de curs id
Post on 02-Mar-2018
253 Views
Preview:
TRANSCRIPT
-
7/26/2019 Suport de Curs ID
1/62
Note de curs Baze de date
Ctlin Tudor
Frcalculator
Cu calculator,
fr baze de date
Cu baze de date
-
7/26/2019 Suport de Curs ID
2/62
Note de curs Baze de date
Ctlin Tudor
BAZE DE DATE Concept general
Organizarea datelor n baze de date Conceptul de baz de date:
Baza de date = un ansamblu de structuri dedate corelate logic i funcional, memorate pesuporturi adresabile,ce pot fi accesate simultan de maimuli utilizatori, n mod selectivi n timp real.
Scop: regsirea rapid a informaiei de oricetip, prin stabilirea de criterii de interogaredefinite de utilizatori.
Utilizatorii bazei de date: Administratorul bazei de date
Analistul/proiectantul bazei de date
Programatorii de aplicaii
Utilizatorii finali
Structuri de date:
O structur de date corespunde unei clase(grupri) de obiecte reale sau conceptualei areca atribute caracteristicile acestor obiecte.
Se identific printr-un nume unic i sereprezintn planul datelor printr-o mulime de
realizri (nregistrri).
Gestiunea datelor se focalizeaz pe precizareastructurilor de date i a relaiilor care exist
ntre realizrile acestora.
-
7/26/2019 Suport de Curs ID
3/62
Note de curs Baze de date
Ctlin Tudor
Cerine pentru gestiunea corectadatelor Independena datelor fade programele de
aplicaii: Baza de date trebuie s aib o structur de sine-
stttoare, a crei existen s nu depind de alteprograme care o utilizeaz.
Asigurarea unei structuri ct mai puin redundante: Informaiile din cadrul unei baze de date trebuie s fie
unice (s nu se repete) n cadrul bazei de date.
Integritatea datelor: Datele trebuie s respecte diverse restricii i corelaiilogice ntre ele, restricii ce mpiedic apariia erorilorlogice sau structurale la nivelul bazei de date.
BAZE DE DATE generaliti
volumul de date ce urmeaz a fi stocati procesat
gradul de expunere la riscuri
tipul de aplicaii care vor exploata datele (aplicaiiweb, aplicaii de tip business intelligence, sistemeinformatice clasice, etc)
previziunile de extindere pe termen mediu n
privina volumului de date din cadrul organizaiei costurile de liceniere i politica de liceniere a
productorului
Considerente n alegerea unei soluii pentrumanagementul datelor:
-
7/26/2019 Suport de Curs ID
4/62
Note de curs Baze de date
Ctlin Tudor
Conceptul de SGBD
SGBD = pachet de programe constituind o interfantre
utilizatori i bazele de date, ce permite crearea, actualizarea
i consultarea acestora.
Sisteme de gestiune a bazelor de date (S.G.B.D.)
SGBD-urile pun la dispoziia utilizatorilor limbaje distincte pentru: descrierea bazei de date
(Limbaj de Descriere a Datelor DDL)
utilizarea bazelor de date(Limbaj de Manipulare a Datelor DML)
controlul datelor(Limbaj de Control al Datelor DCL)
Limbajele de manipulare a bazelor de date pot fi:-declarative - permit utilizatorului sdeclare de ce
informaii are nevoie.-procedurale - obligutilizatorul sdescrie procedura
pentru obinerea informaiilor.
Funciile ndeplinite de un SGBD:
descrierea bazei de date (prin LDD)
coerena datelor (meninerea unor relaii logice ntre
date);
securitatea datelor (confidenialitatea i remedierea
daunelor);
partajarea datelor (tratare acces concurent);
controlul i administrarea datelor prin drepturi diferite
acordate utilizatorilor;
repararea bazei de date;
salvarea i restaurarea datelor etc.
Sisteme de gestiune a bazelor de date (S.G.B.D.)
-
7/26/2019 Suport de Curs ID
5/62
Note de curs Baze de date
Ctlin Tudor
Pentru volum mare de date (server database)
Microsoft SQL Server
Oracle
IBM DB2
Sybase
Flexibilitate Performate crescute in procesarea datelor
Facilitati complexe de administrare Instrumente specifice pentru analiza datelor
(implementarea tehnologiilor Datawarehouse siDataminining)
Securitate sporita a datelor
Scalabilitate
Server de date: un SGBD avansat instalat, deregul, pe o staie de lucru mai puternic, cu rolulde a furniza informaii ntr-o organizaie.
-
7/26/2019 Suport de Curs ID
6/62
Note de curs Baze de date
Ctlin Tudor
Desemneaz relaia dintre dou entitisoftware care partajeaz sarcini comune
ntr-o reea de calculatoare.Un program care poart denumirea de
client, iniiaz o cerere informaional ctreun alt program, denumitserver, capabil sfurnizeze rspunsul la cererea clientului .
Avantajul principal:
accesul permanent la date din orice locaie a uneiinstituii sau organizaii, prin conectarea tuturoraplicaiilor client la o singur baz de date.
Clientul este entitatea care asigurinterfaa cu utilizatorul, lanseazcereri de executare a unor operaii ctre o
entitate server afieaz datele primite de la server ntr-un format
inteligibil pentru utilizator.
Serverul este entitatea care
Recepioneaz cererile lansate de clieni, interpreteazcomenzile, executoperaiile necesare furnizeaz rspunsul ctre client.
-
7/26/2019 Suport de Curs ID
7/62
Note de curs Baze de date
Ctlin Tudor
Exemplificarea generica relaiei
Client-Server
Exemplu de utilizare a tehnologieiClient Server ntr-o organizaie
-
7/26/2019 Suport de Curs ID
8/62
Note de curs Baze de date
Ctlin Tudor
Client-Server se bazeazpe trei componente: logica prezentrii (responsabil cu interfaa grafic expus
utilizatorilor);
logica procesrii (responsabil cu gestionarea i aplicareatuturor regulilor legate de managementuli prelucrarea datelor);
logica stocrii datelor (ce va gestiona pstrarea i extragereadatelor).
n funcie de modul de grupare a componentelorClient-Server, exist:Arhitectura client-server pe dounivele (two tiers)
Arhitectura client-server pe trei nivele (three tiers)Arhitectura client-server multi-nivel (n tiers)
Tipologia sist emelor Cl i ent -Server
Arhitectura client-server pe dounivele (two tiers)
Logica prezentrii: Calculatorul ClientLogica datelor: Calculatorul ServerLogica procesrii: mprit ntre Clienti Server
-
7/26/2019 Suport de Curs ID
9/62
Note de curs Baze de date
Ctlin Tudor
Tipologia si st emelor Cl i ent -Server
Arhitectura client-server pe trei nivele (three tiers)
Logica prezentrii: Calculatorul ClientLogica datelor: Calculatorul ServerLogica procesrii: Serverul de aplicaie
Tipologia sist emelor Cl i ent -Server
Arhitectura client-server multi-nivel (n tiers)
Logica prezentrii: Calculatorul ClientLogica datelor: Calculatorul ServerLogica procesrii: Server de aplicaiei Server Web
-
7/26/2019 Suport de Curs ID
10/62
Note de curs Baze de date
Ctlin Tudor
SQL SERVER 2012 Prezentare general
SQL Server 2012:
o suitsoftware oferind posibilitatea gestionrii bazelorde date de foarte mari dimensiuni.
compatibil cu cele mai recente tehnologii existente.
SQL Server 2012 este disponibil n mai multe ediii cediferprin:
facilitile oferite,
resursele hardware capabile sle exploateze (numr de
procesoare, memorie RAM, etc.) politica de liceniere (numr de utilizatori, costuri
licene, etc)
SQL SERVER 2012 Versiuni (I) Enterprise
toate instrumentele necesare privind administrarea isecuritatea datelor precum i un set complet de instrumentepentru dezvoltarea aplicaiilor business intelligence.
Standard toate instrumentele pentru administrarea bazelor de date i
pentru programare
Developer dedicat dezvoltatorilor de aplicaii. Prezinttoate facilitile
disponibile n varianta Enterprise dar nu este destinatutilizrii ca server productiv, ci doar pentru teste iprogramare.
SQL Server 2012 Business Intelligence Editiondestinatn special pentru a deservi aplicaiile pentru asistareadeciziei n cadrul unei companii.
-
7/26/2019 Suport de Curs ID
11/62
Note de curs Baze de date
Ctlin Tudor
Web indicatpentru administrarea bazelor de date ce
urmeaza fi exploatate n mediul online.
SQL Server Express soluie oferitgratuit pentru utilizatorii ce doresc s
realizeze aplicaii client pentru sisteme de micidimensiuni sau pentru a nva
Compact
soluie gratuitpentru gestionarea bazelor de datedestinate aplicaiilor de tip desktop, a aplicaiilorpentru dispozitive mobile sau de tip client web peplatforme Windows.
SQL SERVER 2012 Versiuni(II)
SQL Server 2012 Componente SQL Server Database Engine
este componenta nucleu
responsabilcu memorarea, procesarea datelor stocatei asigurarea securitii acestora
Analysis Services
Suitde instrumente software pentru analiza datelor iinterpretarea rezultatelor
Reporting Services
componentele necesare pentru crearea i gestionarearapoartelor
Integration Services set de aplicaii i obiecte programabile ce pot fi utilizate
n copierea, mutarea sau transformarea datelor ntrediferite destinaii
-
7/26/2019 Suport de Curs ID
12/62
Note de curs Baze de date
Ctlin Tudor
Tipuri de date n SQL ServerCategorii de tipuri de date:
Numere exacteiruri de caractere non-Unicodeiruri de caractere Unicode Numere aproximativeiruri de caractere binare Dati orAlte tipuri de date
Tipuri de date n SQL ServerNumere exacte
Numere ntregi bigint int smallint tinyint bit
Numere cuzecimale Decimal Numeric Money Smallmoney
Numere aproximative Float
Real
iruri de caractere non-Unicode char
varchar
text
iruri de caractereUnicode nchar
nvarchar
ntext
-
7/26/2019 Suport de Curs ID
13/62
Note de curs Baze de date
Ctlin Tudor
Tipuri de date n SQL Serveriruri de caractere
binare binary
varbinary
image
Dati or
date
datetime
datetime2
smalldatetime
time
Alte tipuri de date cursor
uniqueidentifier
xml
table
Crearea tabelelor n SQL Server2012 Tabel: obiect din cadrul bazei de date utilizat
pentru a stoca informaii structurate conformdefiniiei cmpurilor existente.
Reprezintelementul de tip nucleu al bazei dedate pe care se bazeazcelelalte obiecte alebazei de date.
Tabelele sunt grupate n cadrul grupului Tables.
Structura unui tabel: - cmpuri (columns), chei(primare, externe), restricii (constraints),declanatori (triggers), indeci (indexes).
-
7/26/2019 Suport de Curs ID
14/62
Note de curs Baze de date
Ctlin Tudor
Crearea tabelelor n SQL Server 2012(II) Instruciuni pentru crearea tabelelor SQL Server: Forma minimalist:
CREATE TABLE Nume_tabel(nume_cmp1 tip_data(dimensiune) [restricie cmp],nume_cmp2 tip_data(dimensiune) [restricie cmp],nume_cmp3 tip_data(dimensiune) [restricie cmp],....,Nume_camp_cheie_externaCONSTRAINT cheie_externa REFERENCESnume_tabel_extern (cheie primartabel extern));
Crearea tabelelor n SQL Server 2012(III) Exemplu:
CREATE TABLE [dbo].[Produse]([IdProdus] [int] NOT NULL,[CodIntern] [nvarchar](255) NULL,[Denumire] [nvarchar](255) NULL,[Cantitate per unitate masura] [nvarchar](255) NULL,[Descriere] [nvarchar](255) NULL,[TermenValabilitate(zile)] [int] NULL,[Perisabil] [bit] NOT NULL,[CodCategorie] [int] NULL,CONSTRAINT PK_Produs PRIMARY KEY CLUSTERED
(IdProdus),CONSTRAINT FK_Categorie FOREIGN KEY
(CodCategorie), REFERENCES dbo.CategoriiProduse(CodCategorie)
-
7/26/2019 Suport de Curs ID
15/62
Note de curs Baze de date
Ctlin Tudor
Instruciuni pentru modificarea itergerea tabelelor din baza de date Instruciunea ALTER TABLE modificarea
structurii sau definiiei tabelului:ALTER TABLE [dbo].[Produse] WITH CHECK ADDCONSTRAINT [Produse_FK] FOREIGN KEY([CodCategorie])
REFERENCES [dbo].[CategoriiProduse] ([CodCategorie])
ON DELETE CASCADE
GO
Intruciunea DROP TABLE elimindefinitiv o tabeldin cadrul bazei de date
DROP TABLE dbo.Produse;
Tipuri de tabele n SQL Server 2012 Tabele permanente ale bazei de date sunt cele
obinute n urma definirii modelului relaional formndbaza de stocare pentru datele reinute pe server;
Tabele temporare sunt tabele locale ce au existende viascurt, definitpe perioada sesiunii n careutilizatorul care le creeazeste conectat. Sunt automat distruse (implicit) la terminarea procedurii n
care au fost utilizate temporar. Se regsesc n baza de date cu numele tempdb implicit
definitpe server Tipuri de tabele temporare:
globale (disponibile tuturor utilizatorilor i tuturor sesiunilor delucru)
locale (disponibile doar utilizatorului curent i sesiunii n careacesta lucreaz)
-
7/26/2019 Suport de Curs ID
16/62
Note de curs Baze de date
Ctlin Tudor
Tabele temporare - exemple Crearea unui tabel temporar local:
create table #Enumerare(NumeDepartament varchar(20),CodDepartament int
)
Crearea unui tabel temporar global:create table ##SesiuniDeLucru(NumeUtilizator nvarchar(50),IdSesiune int
)
Asocieri ntre tabele
Obiecte care grupeaz totalitatea legturilor ce secreeaz ntre entitile (tuplurile) a dou tabele(asocieri binare) sau aparinnd unei singure tabele(asocieri unare).
Au rolul de a permite accesarea mai multor tabele nacelai timp.
Asocierile pot avea: caracter permanent: completeaz structura bazei de
date i sunt ataate tabelelor existente, introducndrestricia de integritate referenial.
caracter temporar: utilizate n extragerea datelor dinbaza de date, fiind prezente doar n obiectele de tipcerere (interogare).
-
7/26/2019 Suport de Curs ID
17/62
Note de curs Baze de date
Ctlin Tudor
Implementarea restriciilor asupra datelor
Restricii privind integritatea referenial
Definesc constrngerile legate de relaia dintre cheiaprimari cheia extern
Restricii de domeniu
Definesc reguli impuse asupra datelor prin intermediulcmpurilor din tabele.
Declanatori (proceduri de tip Trigger)
Pot fi utilizate pentru implementarea de restriciicomplexe care privesc date din mai multe tabele.
Specificarea vizuala restriciilor de domeniu
la nivelul tabelelor
-
7/26/2019 Suport de Curs ID
18/62
Note de curs Baze de date
Ctlin Tudor
Exemplu: Implementarea restriciei privind
datele din factur
Restricii privind integritatea referenial
In fereastra de propriet i ale asocierii
se pot configura restriciile de integritate
-
7/26/2019 Suport de Curs ID
19/62
Note de curs Baze de date
Ctlin Tudor
Limbajul Transact-SQL (T-SQL)
un limbaj standardizatde interogare a bazelor de daterelaionale (ANSI SQL-89)
Este un limbaj declarativ:
utilizatorul trebuie sdescrie informaiile pe care vrea sle
obin, fra preciza algoritmii necesari pentru obinerea
rezultatelor.
nu sunt necesare cunotine de programare.
Poate fi utilizat prin apelarea unui vocabular specific,
recunoscut de toate bazele de date relaionale: Oracle,
Access, SQL Server, Informix, Ingres, DB2, Sybase, etc.
T-SQL: dialect al limbajului SQL pentru bazele de date
SQL Server
-
7/26/2019 Suport de Curs ID
20/62
Note de curs Baze de date
Ctlin Tudor
Vocabularul SQL:
Instruciuni permit execuia anumitor aciuni (CREATE,ALTER, SELECT, UPDATE, DELETE, etc.)
Clauze specific argumentele unei instruciuni (FROM,
WHERE, ORDER BY, etc.)
Funcii efectueaz prelucrri asupra datelor (care devin
argumente sau parametrii) n scopul afirii unor rezultate
specifice (SUM, ROUND, UPPER, LEFT, GETDATE, ISNULL
etc.).
Operatori acioneaz asupra datelor (care devin operanzi),
permind definirea unor expresii, calcule, etc. (aritmetici, de
comparare, logici, de concatenare, etc.).
instruciuni de definire a datelor (permit descriereastructurii bazei de date):
CREATE, ALTER, DROP
instruciuni de selecie a datelor (permit consultarea
bazei de date):
SELECT
instruciuni de manipulare a datelor (permit
adugarea, modificareaitergerea nregistrrilor):
INSERT, UPDATE, DELETE
instruciuni privind controlul accesului la date(permit acordarea sau revocarea drepturilor de acces
pe utilizatori):
GRANT, REVOKE
-
7/26/2019 Suport de Curs ID
21/62
Note de curs Baze de date
Ctlin Tudor
Formatul general al frazei SQL de selecie:
SELECT [ALL / DISTINCT / TOP N] FROM
[WHERE ][GROUP BY ]
[HAVING ][ORDER BY [ASC|DESC]];
unde: Lista de selecie precizeaz atributele sau expresiile ale cror valorivor fi returnate; list-tabele specific tabelele din care se vor extrage datele nlnuiteprin condiii de compunere; WHERE permite exprimarea criteriului de selecie naintea efecturiioricrei grupri n vederea sintetizrii informaiei; GROUP BY folosit pentru a partiiona o tabeln grupuri dup cmpulspecificat; HAVING specific criterii de selecie pentru date agregate; ORDER BY precizeaz atributul/atributele dup care se va faceordonarea.
Precizarea domeniului de selecie
Predicatele ALL, DISTINCT i TOP:
ALL permite selectarea tuturor nregistrrilor, afind
valorile cmpurilor specificate din tabelul selectat;
DISTINCT permite excluderea valorilor dublurpentru
fiecare cmp selectat (doar nregistrri unice la nivelul
atributelor vizibile);
TOP n permite afiarea primelor n nregistrri din
lista rezultatului interogrii, ordonat dup valorile unorcmpuri.
-
7/26/2019 Suport de Curs ID
22/62
Note de curs Baze de date
Ctlin Tudor
Functii SQL uzuale
Functia CONVERT coverteste rezultatul unei expresii intr-un anumit timp de date
Sintaxa:
CONVERT (tip_date_rezultat [(lungime)], expresie [, stil_coversie])
tip_date_rezultat tipul de date in care se converteste expresie lungime lungimea tipului de date, doar pentru tipurile de date care suporta expresie orice expresie admisibila SQL, al carei rezultat se va converti in
tip_date_rezultat
stil_conversie cod folosit atunci cand se doreste utilizarea unor modele de conversie SQL;
Cod Format data/ora rezultat
101 mm/dd/yyyy
103 dd/mm/yyyy
108 hh:mi:sec
113 dd mon yyyy hh:mi:ss:mmm
Cateva coduri uzuale pentru stil_conversiepentru conversia in/din data/ora:
-
7/26/2019 Suport de Curs ID
23/62
Note de curs Baze de date
Ctlin Tudor
Functia CONVERT (exemple)
Nota: In acest caz codul 103 indica in ce modeste specificata data in sirul de caractere(dd/mm/yyyy) pentru a fi corect convertita informatul datei serverului !Daca se doreste afisarea in formatuldd/mm/yyyy, o data calendaristica trebuieconvert ita in sir de caractere, cu cod 103, asa
cum este in primul exemplu, altfel se afiseaza informatul serverului.
Functia CONVERT (exemple)
-
7/26/2019 Suport de Curs ID
24/62
Note de curs Baze de date
Ctlin Tudor
Functia GETDATE()
returneaza data si ora serverului
Exemplu: data si ora serverului
Exemplu: data serverului
Exemplu: ora serverului
Functia NEWID() returneaza o valoare de tip UNIQUEIDENTIFIER
-
7/26/2019 Suport de Curs ID
25/62
Note de curs Baze de date
Ctlin Tudor
Functiile DAY, MONTH, YEAR
DAY (expresie)MONTH(expresie)
YEAR(expresie)
Sintaxa:
Functia DATEPART
DATEPART (informatie_calendaristica, expresie_data/ora)
Extrage dintr-o data calendaristica/ora o anumita informatie calendaristica,identificata printr-un cod
Sintaxa:
Informatie_calendaristic
(valori uzuale)
Rezultat
year An
month Luna
day Zi
dayofyear Numar zi din an
quarter Trimestru
week Numar saptamana din an
hour Ora
minute Minutele
second Secundele
-
7/26/2019 Suport de Curs ID
26/62
Note de curs Baze de date
Ctlin Tudor
Functia DATEPART (exemple)
Functia DATEDIFF
DATEDIFF (informatie_calendaristica, data/ora start, data/ora final)
Calculeaza diferenta dintre doua date calendaristice (data/ora final si data/ora start). Rezultatuleste furnizat intr-un anumit tip de informatie calendaristica, identificata printr-un cod
Sintaxa:
-
7/26/2019 Suport de Curs ID
27/62
Note de curs Baze de date
Ctlin Tudor
Functia DATEADD
DATEADD (informatie_calendaristica, n, data/ora start)
Calculeaz o data calendaristic, pornind de la o anumit datde referin la care se adaug un numr nde fraciuni ale datei(n format informaie calendaristic)
Sintaxa:
Functiile LTRIM, RTRIM LTRIM(expresie) elimina spatiile nesemnificative de la stanga unei
expresii de tip sir de caractere
RTRIM(expresie) elimina spatiile nesemnificative de la dreapta unei
expresii de tip sir de caractere
-
7/26/2019 Suport de Curs ID
28/62
Note de curs Baze de date
Ctlin Tudor
Functiile LEN, LOWER, UPPER LEN(expresie) returneaz numrul de caractere dintr-o
expresie LOWER(expresie) returneaz irul de caractere din expresie
scris cu litere mici
UPPER (expresie) returneaz irul de caractere din expresie
scris cu litere mari
Functiile LEFT, RIGHT, SUBSTRING LEFT(expresie, n) returneaza n caractere de la stanga unei expresii sir
de caractere
RIGHT(expresie, n) returneaza n caractere de la dreapta unei expresii
sir de caractere
SUBSTRING (expresie, start, n) returneaza n caractere dintr-o expresie
sir de caractere, incepand de la pozitia start
-
7/26/2019 Suport de Curs ID
29/62
Note de curs Baze de date
Ctlin Tudor
Agregarea datelor n limbajul T-SQLFuncii de agregare utilizate pentru grupuri de date:
AVG ( [ DISTINCT ] expression )COUNT ([ DISTINCT ] expression | * } )
SUM ( [DISTINCT ] expression )
MAX (expression),MIN (expression )
DISTINCT - valorile identice s fie luate n considerareo singur dat n momentul efecturii calculelor.
Simbolul * - numrarea tuturor valorilor domeniului pecare se aplic funcia, inclusiv a valorilor nule (NULL).
Rezultatul unei interogri de agregare va afia doar realizrile cmpului/cmpurilor de grupare i valorileagregate ale cmpului/cmpurilorde sintetizat.
Funciile de agregare pot fi utilizate pentru unul sau maimulte cmpuri din cadrul sursei de date, dar i pentrucmpuri calculate.
Gruparea se poate realiza pentru mai multe cmpuri alesursei de date sau calculate. Ordinea de grupare estecea a selectrii cmpurilor necesare pentru afiare.
n cazul n care intervin condiii de filtrare, mai nti areloc filtrarea i apoi vor fi agregate datele rezultate nurma acesteia.
Cmpurile folosite doar pentru a stabili condiii de filtrarenu sunt niciodat afiate n rezultatul final.
Considerente generale privind agregarea
datelor
-
7/26/2019 Suport de Curs ID
30/62
Note de curs Baze de date
Ctlin Tudor
Considerente generale privind agregarea datelorExemplu de agregare cu condiii de filtrare:
Care este preul cel mai mic la care a fost achiziionat fiecare produs n parte, afind doar produsele
facturate ntr-o cantitate mai micde 24?
Pasul 1: Filtrarea
nregistrrilor
Pasul 2: Gruparea iagregarea datelor
Grupri de date i funcii de grup
Sse afieze cte facturi au fost emise n luna februarie, anul 2012.
1. Funcii de agregare aplicate tuturor nregistrrilor, fr a finecesar gruparea:
SELECT Count(*) AS [Numar de facturi]FROM FacturiWHERE Month([DataFactura])=2 AND Year([DataFactura])=2012
2. Funcii de agregare aplicate pe grupuri de nregistrri:
Sse afieze pentru fiecare denumire de furnizor cte facturi au fost emise de
acesta.
SELECT DenumireFz, Count(*) AS [Numar de facturi]FROM Facturi INNER JOIN FurnizoriON Furnizori.CodFiscal=Facturi.CodFiscalGROUP BY DenumireFz
-
7/26/2019 Suport de Curs ID
31/62
Note de curs Baze de date
Ctlin Tudor
Grupri de date i funcii de grup
S se afieze cte facturi au fost emise n luna februarie anul 2012,
de fiecare furnizor.
3. Funcii de agregare aplicate grupurilor, cu criterii de filtrare:
SELECT Count(*) AS [Numar de facturi]FROM Facturi INNER JOIN FurnizoriON Furnizori.CodFiscal=Facturi.CodFiscalWHERE Month([DataFactura])=2 AND Year([DataFactura])=2012GROUP BY DenumireFz
4. Funcii de agregare aplicate pe grupuri cu filtrare pe expresii:
Sse afieze care sunt furnizorii care au emis mai mult de 3 facturi n luna
februarie a anului 2012.
SELECT DenumireFzFROM Facturi INNER JOIN FurnizoriON Furnizori.CodFiscal=Facturi.CodFiscalWHERE Month([DataFactura])=2 AND Year([DataFactura])=2012GROUP BY DenumireFzHAVING Count(*)>3
Afiai numrul total de pli, numrul total de bonuri de casi numrul distinct al bonurilor de
cas, tiind canumite bonuri de cassunt achitate prin mai multe tipuri de pli i alte bonuri de
casnu sunt achitate nc.
Select Count(*) as NrTotalInregistrari,
COUNT( P.NrBonCasa ) as NrBonuriCasa,
COUNT(Distinct P.NrBonCasa ) as NrBonuriCasaDistincte
FROM BonuriDeCasa BC
LEFT JOIN Plati P on P.NrBonCasa=BC.NrBonCasa
Grupri de date i funcii de grup
-
7/26/2019 Suport de Curs ID
32/62
Note de curs Baze de date
Ctlin Tudor
Funciile de clasificare Row_Number(),
Rank(), NTile(NrGrupe)Apelare: OVER ([PARTITION BY] ORDER BY )
Row_Number()
Atribuie un numr de ordine fiecrei nregistrri nfuncie de un criteriu de ordonare specificat n
clauza OVER.
Funciile de clasificare Row_Number(),
Rank(), NTile(NrGrupe)
RANK()Atribuie un rang fiecrei nregistrri n func ie de un
criteriu de ordonare. nregistrrile cu aceleai valori pecmpul dup care se face ordonarea vor avea acelairang.
NTile(NrGrupe) Permite distribuirea nregistrrilor dintr-un set de
rezultate pe N intervale n func ie de un criteriu deordonare.
Clauza PARTITION BY divide setul derezultate n partiii sau subseturi
asupra crora se va aplica mai departe
funcia de clasificare respectiv.
-
7/26/2019 Suport de Curs ID
33/62
Note de curs Baze de date
Ctlin Tudor
Funciile de clasificare - Exemplificare
SELECT Nume, Prenume, SalariuIncadrare,
Row_Number() over (order by SalariuIncadrare) as OrdineSalariu,
RANK() over (order by SalariuIncadrare) as RangSalariu,
NTILE(3) over (order by SalariuIncadrare) as IncadrareSalariuPeGrupe
FROM Vanzatori
Funciile de clasificare - ExemplificareSelect IdPlata, SumaPlatita, YEAR(DataOraPlata) as An,
Row_Number() over (partition by YEAR(DataOraPlata) order by
SumaPlatita DESC) as OrdonarePlata
FROM Plati
Order by year(DataOraPlata)
-
7/26/2019 Suport de Curs ID
34/62
Note de curs Baze de date
Ctlin Tudor
Alte funcii uzuale
ISNULL ( expresie , valoare de nlocuit )
evalueazdaco expresie conine valoarea NULL i, ncazul n care condiia este ndeplinit, nlocuieteexpresia cu valoarea specificatca al doilea argument .
ISDATE (expresie )
evalueazdaco expresie poate fi evaluatca o datcalendaristicvalid. n cazul n care condiia este
ndeplinitreturnez valoarea 1, n caz contrar 0.
ISNUMERIC(expresie)
evalueazdaco expresie poate fi evaluatca valoarenumeric. n cazul n care condiia este ndeplinitreturnez valoarea 1, n caz contrar 0.
Cutarea n cadrulirurilor de caractere
pe bazaabloanelor definite prinoperatorul de comparaie LIKE
nume de cmp dintr-un tabel sau orice alt expresie SQL valid ce poate fievaluat drept ir de caractere
irul sau tiparul ce urmeaz a fi regsit n cadrul expresiei pe carese efectueaz cutarea
Caractere speciale utilizabile la cutare:
ine locul unui ir de zero sau mai multe caractere
_ ine locul unui caracter
[ ] orice caracter din enumerarea sau intervalul cuprins ntre paranteze
[^ ] - orice caracter n afar de cele din enumerarea sau intervalul specificat dupsimbolul ^ intre paranteze.
Sintaxa: [NOT]LIKE
-
7/26/2019 Suport de Curs ID
35/62
Note de curs Baze de date
Ctlin Tudor
Utilizare operator LIKE n expresii Sse afieze toi vnztorii al cror nume ncep cu litere
de la N la R.SELECT * FROM Vanzatori
WHERE Nume LIKE '[N-R]%
Sse selecteze doar vnztorii de sex masculin care suntnscui n luna ianuarie.
SELECT * FROM Vanzatori
WHERE CNPVanzator LIKE '1__01%
Sse afle care sunt vnztorii care nu sunt nscui n anul1978.
Select * from VanzatoriWHERE CNPVanzator like '_[^7][^8]%'
Se folosete pentru a afia o valoare n funcie derezultatul evalurii unei condiii n clauza SELECT.
Structura alternativCASE
CASE expresieA
WHEN expresieB1 THEN expresie_Rezultat
[WHEN expresieB2 THEN expresie_Rezultat]
[ELSE expresie_Rezultat_F]
END
CASE WHEN expresie_logica1 THEN expresie_Rezultat
[WHEN expresie_logica2] THEN expresie_Rezultat
[ELSE expresie_Rezultat_F]
END
-
7/26/2019 Suport de Curs ID
36/62
Note de curs Baze de date
Ctlin Tudor
Structura alternativCASE: exempleSELECT NrBonCasa , SumaPlatita,
CASE NTILE(3)over(order by SumaPlatita)
when 1 then 'Valoare mica'
when 2 then 'Valoare medie'
else 'Valoare mare'
end as TipIncasare
FROM Plati
SELECT NrBonCasa , SumaPlatita,
CASE
whenNTILE(3)over(order by SumaPlatita)=1 then 'Valoare mica'
whenNTILE(3)over(order by SumaPlatita)=2 then 'Valoare medie'
else 'Valoare mare'end as TipIncasare
FROM Plati
Utilizarea sub-interogrilor n limbajul T-SQL
Sub-interogare=structur SQL al crei rezultat ajutn rezolvarea unei alte interogri (interogri imbricate)
Predicate utilizate pentru sub-interogri:ANY compar partea stng a sa cu oricare dintre
rezultatele unei sub-interogri situate n partea dreaptALL Compar partea stng a sa cu toate rezultatele sub-
interogriiEXISTS se comport ca un operator dup clauza
WHERE care evalueaz dac sub-interogarea returneazcel puin o nregistrareIN poate fi utilizat cnd se compar rezultatele a dou
mulimi, dintre care cea din dreapta este returnat de sub-interogare
-
7/26/2019 Suport de Curs ID
37/62
Note de curs Baze de date
Ctlin Tudor
Exemple de interogri cu sub-interogri1. Lista furnizorilor care nu au emis facturi n anul 2012
SELECT DenumireFurnizor FROM FurnizoriWHERE Furnizori.CodFiscal NOT IN
(Select Facturi.CodFiscal FROM FacturiWHERE Year(DataFactura)=2012)
2. Lista produselor cu categoria de calitate I care au
preul mai mic dect oricare dintre preurile produselorde calitate II:
SELECT DenumireProdus FROM ProduseWHERE CategorieCalitate=1 AND Pret >
ANY (Select [Pret] From ProduseWhere CategorieCalitate=2)
Exemple de interogri cu sub-interogri
3. Furnizorul care a emis cele mai multe facturi.
SELECT DenumireFurnizorFROM Furnizori, Facturi
WHERE Furnizori.CodFiscal = Facturi.CodFiscalGroup By DenumireFurnizorHaving Count(NrFactur)>=
ALL (Select Count(NrFactur)FROM Furnizori, Facturi
WHERE Furnizori.CodFiscal = Facturi.CodFiscalGroup ByDenumireFurnizor)
-
7/26/2019 Suport de Curs ID
38/62
Note de curs Baze de date
Ctlin Tudor
Exemple de interogri cu sub-interogri
4. Furnizorii care au emis cel puin o facturdupdatade 20 septembrie 2012.
SELECT Furnizori.DenumireFZ FROM Furnizori
WHERE EXISTS
(Select DataFactura FROM Facturi WHERE DataFactura>#09/20/2012#
AND Facturi.CodFiscal=Furnizori.CodFiscal)
SELECT Furnizori.DenumireFz
FROM Furnizori
WHERE Furnizori.CodFiscal IN
(Select Facturi.CodFiscal FROM FacturiWHERE DataFactura>#09/20/2012#)
Interogri SQL pentru adugarea de noi nregistrri
INSERT INTO nume-tabela (nume-atribut1, nume-atribut2,)
VALUES (valoare1, valoare2,)
Varianta 1: Adugarea pe baza unor valori noi
Exemplu: Sse adauge un nou client n baza de date cu codul fiscal R101221
i denumirea SC GAMA SA
INSERT INTO Clienti (CodFiscal, Denumire) VALUES (R101221, SC GAMA SA)
Varianta 2: Adugarea pe baza valorilor preluate dintr-un tabel
INSERT INTO nume-tabela SELECT nume-atribut1, nume-atribut2, FROM nume-tabela-sursa [WHERE Conditii ]
Exemplu: Sse adauge n tabela Parteneri toi Furnizorii din localitatea
Bucureti
INSERT INTO Parteneri SELECT * FROM Furnizori WHERE Localitate=Bucureti
-
7/26/2019 Suport de Curs ID
39/62
Note de curs Baze de date
Ctlin Tudor
Interogri SQL pentru modificarea valorilor cmpurilor
UPDATE nume-tabel
SET nume-atribut1=valoare1, nume-atribut2=valoare2,
WHERE Condiii
Exemplul 1: Sse transforme n KG toate unitile de msurale produselor
cu codul mai mare dect 3.
UPDATE Produse SET UnitateMasura=KG WHERE CodProdus:3
Exemplul 2: Sse majoreze cu 5% toate preurile din facturile emise dup
data de 12.09.2012.
UPDATE ProduseFacturate
SET PretFacturat=[PretFacturat]+[PretFacturat]*5/100
WHERE IDFactura IN
(Select IDFactura FROM Facturi WHERE DataFactura>#12.09.2012#)
Interogri SQL pentru tergerea nregistrrilor
DELETE *
FROM nume-tabel
WHERE Condiie
Exemplu: Sse teargtoi clienii din localitatea Brila
DELETE *
FROM Clienti
WHERE Localitate=Braila
-
7/26/2019 Suport de Curs ID
40/62
Note de curs Baze de date
Ctlin Tudor
tergerea tuturor nregistrrilor unui tabel
TRUNCATE TABLE NumeTabel
Exemplu: Sse teargtoate nregistrrile tabelului Parteneri
TRUNCATE TABLE Parteneri
Diferene ntre cele doucomenzi:
Instruciunea DELETE nregistreazn jurnalul de tranzacii al bazei de datestarea fiecrei nregistrri, TRUNCATE doar specificnumrul de nregistrri
terse
Comanda DELETE este mult mai lentdin punctul de vedere al execuiei
Varianta 1:
Varianta 2:
DELETE FROM Parteneri
Important: Ambele comenzi in cont de restriciile legate de integritatea
bazei de date (chei externe) sau restricii definite de utilizator privind
tergerea nregistrrilor
Interogri SQL pentru crearea de tabele rezultat
SELECT nume-atribut1, nume-atribut2,
INTO nume-tabel-rezultat
FROM list-tabele-surs
[WHERE Condiii ]
Exemplu: Sse creeze un nou tabel denumit ProduseFacturateOctombrie
care safieze denumirile de produse facturate n luna curent
SELECT DenumireProdus
INTO ProduseFacturateOctombrie
FROM Produse, ProduseFacturate, FacturiWHERE Produse.CodProdus=ProduseFacturate.CodProdusAND
ProduseFacturate.IDFactura=Facturi.IDFacturaAND
Month(DataFactura)=Month(Date())
-
7/26/2019 Suport de Curs ID
41/62
Note de curs Baze de date
Ctlin Tudor
Conceptul de tranzacie
O tranzacie este o singur operaiune sau set deoperaiuni care se comport ca un ntreg,executndu-se fie toate, fie niciuna, asigurndastfel coerena datelor.
Rolul tranzaciilor: ar trebui s previn apariiaunor circumstane neprevzute la nivelul datelor.
Operaiile cuprinse ntr-o tranzacie nu potfi executate parial: dac una dintre ele
eueazatunci toate celelalte sunt anulate.
Conceptul de tranzacieOtranzacie poate fi:
Salvat
commited
) cnd toateoperaiile tranzaciei au fostncheiate cu succes, iar baza dedate este actualizat cu noilemodificri.
Derulat napoi
roll ck
) toateoperaiile tranzacionate suntanulate, iar baza de date revine lastarea dinaintea tranzaciei.
-
7/26/2019 Suport de Curs ID
42/62
Note de curs Baze de date
Ctlin Tudor
Tranzacii - Exemplificare Sse efectueze tergerea unei categorii de
produse prin mutarea produselor ei ntr-o altcategorie:
Comenzi SQL uzuale n cadrultranzaciilor
@@ROWCOUNT - numrul de nregistrri afectate de o interogareExemplu:
ROLLBACK TRANSACTION anuleaz o tranzacie (care include ioperaia de actualizare).
RAISERROR (mesaj de afiat, nivel de severitate alerorii, cod de identificare)
Se afieazun mesaj de eroare Nivelul de severitate poate fi specificat ntre 0 si 25 (>20 erori fatale)
Codul de identificare poate fi atribuit de utilizator ntre 0 i 255 i e folositpentru depanarea procedurilor
-
7/26/2019 Suport de Curs ID
43/62
Note de curs Baze de date
Ctlin Tudor
Obiecte de tip vedere (View) Categorie aparte de obiecte ale unei baze de date SQL Server
Un obiect View: o reprezentare virtuala unuia sau mai multortabele afind datele din cadrul acestora dintr-o anumitperspectivasociat, cel mai adesea, unui rol al unui utilizator.
View = tabelvirtual, afind cmpuri i nregistrri dintabelul/tabelele surs, fra stoca aceste date.
Utilizatpentru a simplifica i personaliza percepia pe carefiecare utilizator o va avea asupra bazei de date.
Poate fi consultatprin interogarea ei cu ajutorul limbajuluiSQL.
Cmp
R1 C m p
R2 C m p
R3
Tabel 2
CmpT1 CmpR1 CmpR2 CmpT3
Vedere user 1
Server
Roluri
utilizatori
Tabel 1
CmpT2 CmpT3 CmpR2
Vedere user 2
-
7/26/2019 Suport de Curs ID
44/62
Note de curs Baze de date
Ctlin Tudor
Motivaii n utilizarea obiectelor VIEWDistribuirea informaiei pe roluri de utilizatori:
Mecanism de securitate pentru restricionarea accesuluiutilizatorilor la datele incompatibile rolului ce le-a fost alocat. Utilizatorii vor vedea doar datele care i intereseazi pe
care le pot manipula pentru realizarea sarcinilor asociaterolului fiecruia.
Simplificarea procesului de manipulare a datelor: O vedere deja regrupeazdate din mai multe tabele Interogarea unei vederi este mai simpldect interogarea
tuturor tabelelor sursale acesteia.
Personalizarea datelor: Utilizatorii vor vedea aceleai date, dar prezentate din
perspective diferite.
Combinarea datelor din baze de date distribuite: Tabele partiionate prin distribuirea bazelor de date pot fi
regrupate printr-o vedere ce poate fi ulterior interogatcu maimare uurin.
Tipuri de vederi: Vederi de tip sistem: utilizate pentru a fi interogate n
vederea obinerii informaiilor privind structura bazei de date. Vederi Information Schema
o Exemplu:SELECT * FROM INFORMATION_SCHEMA.COLUMNS WhereTABLE_NAME=Angajati'
Vederi tip Catalogo Exemplu:
SELECT * FROM sys.tables
Vederi pentru managementul dinamicii datelor (Data ManagementView):o Exemplu:
SELECT session_id, client_net_address
FROM sys.dm_exec_connections
Vederi definite de utilizator: utilizate potrivit scenariilor enunateanterior.
-
7/26/2019 Suport de Curs ID
45/62
Note de curs Baze de date
Ctlin Tudor
Crearea i manipularea vederilor
Doumoduri de definire a unei vederi: Grafic, prin interfaa SSMS: definirea cmpurilor i acondiiilor de filtrare a datelor se poate realiza vizual;
Utiliznd limbajul SQL n gestionarea obiectelor de tipView(CREATE | ALTER | DROP View )
Manipularea unei vederi: Datele dintr-un View pot fi invocate cu uurin prin
aceleai metode prin care sunt manipulate tabelele bazeide date (SELECT, UPDATE, DELETE, INSERT)
La interogarea unei vederi att datele ct i cmpurile(structura) acesteia sunt obinute n mod DINAMIC prinexecuia interogrii care stla baza ei.
Crearea unei vederi prin interfaa SSMS
Selectare
tabele surs
-
7/26/2019 Suport de Curs ID
46/62
Note de curs Baze de date
Ctlin Tudor
Panoul surselor de date
Grila de cmpuri
Transpunerea n limbajul SQL
Selectarea cmpurilor ce
formeazvederea
-
7/26/2019 Suport de Curs ID
47/62
Note de curs Baze de date
Ctlin Tudor
Denumirea cmpurilor afiatn cadrul vederii
Cmp calculat introdussuplimentar:
Cantitate*PretVanzare
Opiuni privind sortarea
Criteriu de filtrare a datelorafiate
Agregarea datelor - exemplu
Sse creeze o vedere a tabelelor care safieze pentru fiecare bon de casemis nanul 2011 valoarea totali numrul de produse din cadrul acestuia.
Pasul 1:Selectarea
tabelelor surs
-
7/26/2019 Suport de Curs ID
48/62
Note de curs Baze de date
Ctlin Tudor
Agregarea datelor - exempluSse creeze o vedere a tabelelor care safieze pentru fiecare bon de casemis n
anul 2011 valoarea totali numrul de produse din cadrul acestuia.
Pasul 2: Selectareacmpurilor necesare,definirea formulelor
de calcul i stabilireacondiiilor de filtrare
Agregarea datelor - exemplu
Sse creeze o vedere a tabelelor care safieze pentru fiecare bon de casemis nanul 2011 valoarea totali numrul de produse din cadrul acestuia.
Pasul 3: Precizareagruprilor de date i
aplicarea funciilor degrupare specifice
-
7/26/2019 Suport de Curs ID
49/62
Note de curs Baze de date
Ctlin Tudor
Definiie: Oprocedur stocateste un obiect albazei de date SQL Server coninnd una sau maimulte clauze SQL care permit efectuarea demodificri asupra bazei de date sau extragereainformaiilor din cadrul ei.
Procedurile stocate:Pot conine instruciuni privind modificarea structural abazei de date;
Pot conine parametri de intrare i pot returna valorimultiple prin definirea unor parametri de ieire;
Pot returna o valoare care s indice starea executriiprocedurii n ansamblul ei.
Pot conine structuri de control de diverse feluri.
Flexibilitate sporit n programarea structurilorSQL de selectare sau actualizare a datelor;
O procedurpoate fi executatde oricte ori in paralel de mai muli utilizatori, permindreutilizarea ei n funcie de necesiti;
Elimin o mare parte din codul redundant lanivelul unei aplicaii;
Reduce traficul n reeaua de calculatoare laapelarea datelor stocate pe server;
Pot deine, asemntor obiectelor de tipVedere, atribute de securitate ce pot mbuntipoliticile de acces la datele senzitive.
-
7/26/2019 Suport de Curs ID
50/62
Note de curs Baze de date
Ctlin Tudor
Proceduridesistem:aucaracteradministrativiinformaionalnlegtur cuobiectelebazeidedate,fiindstocatedebazadedategenericnumit Master.
Proceduridefinitedeutilizator:suntcreatenscopuldearealizadiverseoperaiincadrulbazeidedatecanecesitateaunuigrupdeutilizatori:
SELECT,INSERT,UPDATE,DELETE;
Prelucrriasupradatelordindiferitetabeleiafiarearezultatului;
Introducereaderestriciidevalidaresuplimentare;
Trimitereademesajeprinemail,etc.
Creareauneiproceduristocate:Vizual,prininterfaaSSMS;
PrincomandaSQL:
CREATEPROC |Procedure
[ListParametri]
AS
InstruciuniSQL
Modificareauneiproceduristocate:PrincomandaSQL:ALTERPROC| Procedure
tergereauneiproceduristocate:PrincomandaSQL:DROPPROC| Procedure
-
7/26/2019 Suport de Curs ID
51/62
Note de curs Baze de date
Ctlin Tudor
CTRL+SHIFT+M
Pasul1:Generareauneinoi
proceduristocate
Pasul2:Precizarea
instruciunilorSQLaferente
proceduriistocate
-
7/26/2019 Suport de Curs ID
52/62
Note de curs Baze de date
Ctlin Tudor
Selectareatabelelorsurs
Construireainterogriideselecie
aferenteproceduriistocate
-
7/26/2019 Suport de Curs ID
53/62
Note de curs Baze de date
Ctlin Tudor
Executareacoduluidecrearea
proceduriistocatepeserver
Procedura parametrizat:prezint abilitateadeatransmitevaloareauneicondiiiprinintermediulunuiparametru;
Permiteprintrosingur definiieacoperireanevoilorinformaionalealemaimultorutilizatori.
Moddedefinire:
CREATEPROC
@ [OUTPUT]
AS
-
7/26/2019 Suport de Curs ID
54/62
Note de curs Baze de date
Ctlin Tudor
S secreezeoprocedur stocat princares seafieze toi
vnztoriiangajaintrunanprecizatcaparametru:
CREATEPROCusp_VanzatoriParametru@AnAngajaresmallint
ASBEGIN
Select Nume,Prenume,DataAngajariiFROM VanzatoriWHERE
YEAR(DataAngajarii)=@AnAngajare
END
Declarare:
Declare @NumeVariabilas TipDeDate
Atribuirevalorivariabil:
Set @NumeVariabil= Valoare
sauSelect @NumeVariabil=Valoare
-
7/26/2019 Suport de Curs ID
55/62
Note de curs Baze de date
Ctlin Tudor
S serealizezeoprocedur stocat cares afiezesumacomisioanelortotalecuveniteunuivnztoracruimarc sevaprecizaprinparametru.
S serealizezeoprocedur stocat cares afiezentrovariabil deieireprocentulcomisionuluiunuivnztorspecificatnprealabil
-
7/26/2019 Suport de Curs ID
56/62
Note de curs Baze de date
Ctlin Tudor
EXECnume_procedur
EXECnume_procedur[val_param1,val_param2,..]
Execusp_ListaVanzari
Execusp_VanzatoriParametru2007
Execusp_VanzatoriParametru2005IdenticcuExecusp_VanzatoriParametru @AnAngajare=2005
Reguli:Enumerareaparametrilordeintraresevafaceprinseparareaacestoraprinvirgul;
Definireaparametrilordeintraresepoaterealizaprinimbricareaparametrilorobligatoriicuceiopionali;
Laexecutareaproceduriistocatesevainecontdeordineancareparametriiaufostprecizaidoardacnusevaspecificanmodexplicitnumeleparametrului.
Cndunparametruopionalaparenainteaaltorparametriobligatorii,nespecificareauneivaloripentruacestadetermin utilizareanumelorcelorlaliparametrinprecizareavaloriloracestorasubforma:
@NumeParametru=Valoare.
-
7/26/2019 Suport de Curs ID
57/62
Note de curs Baze de date
Ctlin Tudor
UtilizareamaimultorparametrisimultanDefinire:
Apelare:
Funcia utilizator: definete un set de instruciunii secvene de control SQL aplicat pentruprelucrarea datelor din tabele sau alte obiecteinterogabile returnnd o valoare.
Se constituie ntr-un obiect SQL de sine stttorce poate fi apelat prin precizarea numelui iparametrilor si ori de cte ori este nevoie ncadrul altor obiecte SQL Server.
Poate fi utilizat n cadrul obiectelor de tip View sau alprocedurilor stocate diminund considerabil
dimensiunea codului SQL i facilitnd o mai bunstructurare a acestuia.
Poate fi utilizatpentru simularea unor tabele virtuale cepot fi interogate asemntor tabelelor bazei de date.
-
7/26/2019 Suport de Curs ID
58/62
Note de curs Baze de date
Ctlin Tudor
Funciidetipscalar(scalarfunctions)Realizeaz oprelucrareconformunuialgoritmconceputdeutilizatorinndcontdevalorileparametrilorspecifici.
Returneaz osingur valoareprezentnduntipdedat scalar(predefinitsaudefinitdeutilizator)
Funcii detiptabelar (tablevaluedfunctions)returneaz unsetdenregistrricepoatefiasimilatunuitabelvirtual.
nfunciedetipulncaresuntdefinitepotfi:Funciidetiptabelnlinie(inline):returneaz untabelcarezultataluneiinstruciuniSQLfr afinevoiedefinireaacestuia.
Funciitabeldetipmultiinstruciune:necesit definireaexplicit atabeluluirezultat.
Accept zerosaumaimuliparametriReturneaz osingur valoareConstndou pri:
Antetulfuncieincaresedefinescnumelefunciei,listaparametriloritipuldedat returnatdefuncie.Corpulfuncieincareestedefinitalgoritmuldecalculalvaloriirezultatcaresetermin cuclauzaRETURN.
ApelareafuncieipoatefifcutncadrulinstruciunilorSQLnclauzeprecumSELECT,WHERE,GROUPBY,HAVINGsauORDERBY.Serecomand atuncicndunanumitcodsausecven SQLesteutilizat/nmaimulteproceduri.Pentruapelareaeisevautilizainclusivnumeleproprietarului.
-
7/26/2019 Suport de Curs ID
59/62
Note de curs Baze de date
Ctlin Tudor
CREATE FUNCTION [numeproprietar.] nume_funcie ([ @parametru_1 AStip_de_date], . [ @parametrul_n AS tip_de_date] )
RETURNS tip_de dateAS
BEGININSTRUCIUNI SQLRETURN valoare de returnat
END
Pentrumodificare:
ALTERFUNCTION.....
Pentrutergere:
DROPFUNCTION.....
Funcii de tip scalar - Exemplu
-
7/26/2019 Suport de Curs ID
60/62
Note de curs Baze de date
Ctlin Tudor
A.VariantaINLINE.sereturneaz untabelcarezultat,fr afinevoiessedefineasc structuraacestuianusuntpermiseBEGIN.ENDestepermis osingur fraz SQLdetipSELECTfiecarecmpdininterogareasurs trebuiesaib unnumeclauzaORDERBYestepermis numaidac seutilizeazmpreun cuTOP
nusuntpermiseprelucrricomplexeColoanelepecarefunciadetiptabellevareturnasuntdictatedeinstruciuneaSELECTcarest labazaei,
A.VariantaINLINE.
CREATEFUNCTION[numeproprietar.]nume_funcie([@parametru_1AStip_de_date],[@parametrul_nAStip_de_date])
RETURNSTABLEAs
RETURN(fraza_SQL_SELECT)
-
7/26/2019 Suport de Curs ID
61/62
Note de curs Baze de date
Ctlin Tudor
B.variantaMULTIINSTRUCIUNE
sereturneaz untabelrezultat
estenecesars sedefineasc explicitstructuratabeluluirezultat
poateincludeprelucrricomplexe
-
7/26/2019 Suport de Curs ID
62/62
Note de curs Baze de date
B.variantaMULTIINSTRUCIUNE
CREATEFUNCTION[numeproprietar.]nume_funcie([@parametru_1AStip_de_date],.[@parametrul_nAStip_de_date])
RETURNS@variabila_ieireTABLE(cmp_1tipdedate,cmp_Ntipdedate)
ASBEGIN
INSTRUCIUNISQLRETURN
END
top related