Download pdf - Suport de Curs ID

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