sql server (tiumd 2009_2010) - partea i

23
Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I, 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel 1 UTM, Curs master: “TEHNOLOGII INFORMATICE UTILIZATE ÎN MEDIUL DECIZIONAL I” Titular disciplină: Lect.univ.drd. VASILCIUC BOGDAN GABRIEL [email protected] Scopul cursului: - Cursul se adreseaza celor care sunt initiati in Microsoft Windows si doresc sa cunoasca instrumente informatice moderne de elaborare a deciziilor; - Cursul se va axa pe organizarea datelor in baze de date/depozite de date, ca mijloc de integrare a datelor operationale, si pe modelarea multidimensionala a acestora in scopul obtinerii de meta-informatii pentru luarea deciziilor; - In acest scop, in aceasta prima parte a cursului se va prezenta Sistemul de Gestiune a Bazelor de Date SQL Server, considerat cel mai performant produs al firmei Microsoft pentru crearea si exploatarea depozitelor de date; - Orientarea aplicatiilor pe probleme din domeniul financiar-contabil. Continutul cursului: - Sistemul de Gestiune a Bazelor de Date SQL Server 2008; - Organizarea si exploatarea bazelor de date SQL Server; - Limbajul Transact-SQL ; - Depozite de date; - Studiu de caz – Analiza cifrei de afaceri la o societate comerciala. Resurse web http://sites.google.com/site/bogdanvasilciuc

Upload: dabija-cora

Post on 29-Oct-2015

31 views

Category:

Documents


5 download

DESCRIPTION

p

TRANSCRIPT

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

1

UTM, Curs master:

“TEHNOLOGII INFORMATICE UTILIZATE ÎN

MEDIUL DECIZIONAL I”

Titular disciplin ă: Lect.univ.drd. VASILCIUC BOGDAN GABRIEL

[email protected]

Scopul cursului:

- Cursul se adreseaza celor care sunt initiati in Microsoft Windows si doresc sa

cunoasca instrumente informatice moderne de elaborare a deciziilor;

- Cursul se va axa pe organizarea datelor in baze de date/depozite de date, ca mijloc

de integrare a datelor operationale, si pe modelarea multidimensionala a acestora

in scopul obtinerii de meta-informatii pentru luarea deciziilor;

- In acest scop, in aceasta prima parte a cursului se va prezenta Sistemul de

Gestiune a Bazelor de Date SQL Server, considerat cel mai performant produs al

firmei Microsoft pentru crearea si exploatarea depozitelor de date;

- Orientarea aplicatiilor pe probleme din domeniul financiar-contabil.

Continutul cursului:

- Sistemul de Gestiune a Bazelor de Date SQL Server 2008;

- Organizarea si exploatarea bazelor de date SQL Server;

- Limbajul Transact-SQL ;

- Depozite de date;

- Studiu de caz – Analiza cifrei de afaceri la o societate comerciala.

Resurse web

http://sites.google.com/site/bogdanvasilciuc

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

2

SQL SERVER 2008 Caracteristici

� SQL Server gestioneaza date stocate in baza de date, proceseaza tranzactii si pregateste informatii pentru procesele decizionale;

� SQL Server este un SGBD (Sistem de Gestiune a Bazelor de Date) conceput dupa modelul client – server, format din doua entitati: � entitatea server care cuprinde baza de date si utilitarele SQL Server; � entitatea client formata din statiile de lucru, de unde sunt lansate

interogari, care se proceseaza pe server, iar de aici se returneaza numai informatiile cerute.

� SQL Server gestioneaza doua tipuri de baze de date: � baze de date organizate dupa modelul relational OLTP (OnL ine

Transaction Processing); � baze de date organizate multidimensional OLAP (OnL ine Analytical

Processing). � Utilizatorii au acces la SQL Server prin:

� comenzi Transact-SQL (T-SQL); � limbajul MDX (MultiDimensional eXpression), un limbaj propriu

serviciului OLAP, pentru date orgnizate multidimensional.

Utilitarele SQL Server Sunt accesibile din grupul de programe din meniul START – All Programs – Microsoft SQL Server 2008:

� Import and Export Data – utilitar ce lanseaza DTS Wizard (serviciu de transformare a datelor, care preia date din diverse surse pentru aducerea lor in formatul cerut de prelucrarea multidimensionala);

� SQL Server Business Intelligence Development Studio – utilitar care permite crearea de rapoarte, pentru prezentarea datelor in retea dar si in spatiul web (pe internet, utilizand browsere de navigare);

� SQL Server Management Studio – interfata grafica de dezvoltare si administrare a proiectelor SQL Server;

� Integration Services – utilitar pentru deservirea accesibilitatii cu alte aplicatii care utilizeaza baze de date;

� Configuration Tools – utilitar destinat administratorilor de baze de date.

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

3

Baza de date Este un ansamblu structurat de date legate funcţional între ele. Este o structura omogena in care se pastreaza datele. D.p.d.v. fizic, baza de date este o colectie de obiecte: tabele, diagrame, view-uri, proceduri memorate etc. SGBD (Sistemul de Gestiune a Bazelor de Date) este un ansamblu de programe care asigură interfaţa dintre utilizator şi baza de date. Prin această interfaţă se realizează operaţiile de creare, actualizare şi consultare (adaugare, stergere, modificare) a bazei de date. Principalele SGBD sunt:

1. – de tip local – în reţele mici Microsoft Access, Microsoft Visual FoxPro 2. – de tip client server: Microsoft SQL Server, Sybase SQL Server 3. – de tip complex: Oracle, Java

SQL Server are doua categorii de baze de date:

� baze de date sistem, grupate in System Databases: .master – contine legaturi la toate bazele de date instalate; .model – este un sablon pentru crearea bazelor de date utilizator; .pubs – este o baza de date demonstrativa; .tempdb – locul unde se efectueaza operatiile de sortare.

� baze de date utilizator

Obiectele bazei de date: � Tabele – obiect ce contine structurile bazei de date si datele propriu-zise; � Diagramele – obiect ce defineste legaturile intre tabele; � View-uri – interogari memorate in baza de date; � Proceduri memorate (Stored Procedures) – secvente de cod T-SQL stocate

in baza de date; sunt pastrate sub forma de fisiere; � Triggere – proceduri memorate cu un caracter special.

Tabela Este obiectul din baza de date destinat stocării datelor despre o entitate, o operaţie economică, o tranzacţie.

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

4

Tabela conţine atât structura datelor cât şi datele propriu-zise (înregistrările). Structura cuprinde informaţii privind numele datelor, tipurile de date, proprietăţile acestora, cheile de identificare şi indecşii de căutare. Datele se referă la mulţimea înregistrărilor din tabelă. Particularitati:

� Inregistrarea – un rand din tabela; � Campul – o coloana cu o denumire unica si un tip de data; � Domeniu – multimea valorilor dintr-un camp; � Cheia – un camp sau mai multe campuri ale caror valori identifica

inregistrarea (grup de inregistrari). Cheia poate fi: - cheie primara – prin care se identifica unic o inregistrare; - cheie externa (straina) – pentru a face legaturi intre tabele; - cheie compusa (concatenata) – prin care se identifica unic un grup de

inregistrari; functioneaza ca o cheie primara pe mai multe campuri. Reguli pentru definirea numelor de câmpuri • numele de câmp este un şir de maximum 64 caractere; • pentru numele de câmpuri nu se fac deosebiri între literele mici şi literele mari; • nu se admit caracterele : punct (.), semnul exclamării (!), paranteze drepte ([ ]) si

spatiu. Principalele tipuri de date

Numerice - intregi - exacte

tinyint Micut 0 – 255 smallint Mic +/- 32.767 int Intreg +/- 2 miliarde bigint Mare decimal Trebuie precizat numarul total de

cifre de la dreapta punctelor zecimale numeric Siruri char(n) Siruri de lungime fixa. Daca se

introduce mai putine caractere se completeaza cu spatii

varchar(n) Siruri de lungime variabila Date calendaristice datetime Date calendaristice, inclusiv h:m:s

smalldatetime Date calendaristice

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

5

Exemplu: Baza de date VANZARI - sursa de date: documentul primar Factura si alte colectii de date.

Observatii:

� In factura putem avea mai multe tranzactii pentru produse diferite. Pentru fiecare tranzactie din factura trebuie asociate aceleasi date comune: nrfactura, datafact, datele clientului, datele furnizorului.

� Intr-o perioada de gestiune putem avea mai multe tranzactii pentru acelasi produs. In acest caz continutul unor campuri se repeta (ex. denumire produs, um, cantitate, pret unitar). In consecinta, pentru reducerea spatiului de stocare si pentru cresterea performantelor datele din factura se descompun in mai multe tabele.

o Un tabel cu datele de identificare a fiecarei facturi; o Un tabel care sa cuprinda datele de identificare pentru fiecare

tranzactie (facturarea, contractarea); o Un tabel care sa cuprinda datele constante pentru fiecare produs; o Un tabel cu datele de identificare a clientilor (furnizorilor); o Un tabel cu datele de identificare a contractelor; o Un tabel cu datele de identificare a locurilor de expeditie (magazie).

Tabele rezultate au urmatoarea structura: Clienti (codclient, denclient, loc, adresa, jd, telefon, banca, contbanca) Contracte (nrcontract, codprodus, datacontract, codclient, cant, pret) Produse (codprodus, denprodus, um) Facturi (nrfactura, datafactura, codclient, nrcontract, codmagazin, IDpromotie)

Date furnizor Date beneficiar ……………. ………………. ……………. ………………. Numar factura ………… Data facturii …………... Cod produs Denumire produs UM Cantitate Pret unitar Valoare TVA

FACTURA

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

6

Randfactura (nrfactura, codprodus, cant, pret) Docincasare (nrdoc, datainc, sumainc, nrfactura) Magazine (codmagazin, denmagazin, loc, adresa, jd, numegest) Promotii (IDpromotie, numepromotie, costpromotie, datainceput, datasfarsit, tippromotie)

Crearea tabelelor Se realizeaza prin:

- utilitarul Microsoft SQL Server Management Studio; - comenzi T-SQL, generate in fereastra New Query.

� Crearea tabelelor cu Microsoft SQL Server Management Studio

- Databases / Vanzari / Tables / clic dreapta, New Table; - Se specifică un nume dat tabelei si se validează cu OK .

Realizarea legaturilor intre tabele Se realizeaza in Database Diagrams:

- clic dreapta Database Diagrams / New Database Diagrams; - din fereastra Add Table sunt selectate succesiv tabelele care vor fi supuse

relationarii si se apasa butonul Add; - se inchide fereastra Add Table si se realizeaza legaturile prin tehnica

drag&drop. Tipuri de relatii:

- Relatia 1 – 1: unei inregistrari dintr-o tabela ii corespune o inregistrare din alta tabela; se realizeaza intre doua campuri cheie primara din tabele diferite.

Studenţi nrleg nume pren facult an gr 101 102 103

1-1 Taxe

nrleg suma de plata suma platita 101 102 103

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

7

Tabelele aflate într-o astfel relaţie pot fi reconsiderate într-un singur tabel, însă, datorită faptului că au o frecvenţă diferită de consultare şi actualizare, datele se recomandă a fi organizate în tabele diferite.

- Relatia 1 – n: unei inregistrari dintr-o tabela ii corespunde 0, 1, sau mai

multe inregistrari din alta tabela; se realizeaza intre un camp cheie primara si un camp cheie secundara (sau un camp care participa la o cheie compusa) din tabele diferite.

Produse Randfactură

codprodus denprodus um 10101001 placa de

bază buc

10201001 placa video buc

nrfactura codprodus cant pret 120 10101001 121 10101001 122 10201001 122 10101001

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

8

Exe: un produs poate sa apara pe mai multe facturi (produsul cu codul 10101001 apare pe factura 120, 121, 122)

- Relatia m – n: unei inregistrari dintr-o tabela ii corespunde 0, 1, sau

mai multe inregistrari din cea de-a doua tabela, iar unei inregistrari din cea de-a doua tabela ii corespunde 0, 1, sau mai multe inregistrari din prima tabela; se realizeaza intre doua campuri cheie externa (sau campuri care participa la o cheie compusa) din tabele diferite.

Incarcarea tabelelor cu date Se realizeaza prin:

� utilitarul Microsoft SQL Server Management Studio, cu clic dreapta pe tabela / Edit Top 200 Rows; apare structura de tabel unde se introduc datele; datele se introduc rand cu rand, de la stanga la dreapta.

� comenzi T-SQL (Insert Into … Values). Codificarea datelor Scop: economisire spatiu stocare, facilitati de regasirea informatiilor, stabilirea unor relatii de reprezentare a informatiilor. Exemplu: O firmă comercializează componente de calculatoare, codul produsului este format din 8 caractere numerice.

X X X X X X X X

- primele 2 caractere reprezintă clasa produsului; - caracterul 3 şi 4 reprezintă subclasa produsului; - ultimele 4 caractere reprezintă sortimentul.

Clasa produsului

Subclasa produsului

Sortimentul

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

9

Exemplu: Evidenţa studenţilor. Tabela „Cursuri” are următoarea structură: codcurs, dencurs, formaev, nrcredite. Codul cursului este un cod alfanumeric format din 8 caractere.

FZ22OB01 Matematici E 4 FZ22OB05 Baze de date PV 5 CD22OB03 Finanţe E 5

Clasificarea codurilor • după natură: - coduri numerice 10101001

- coduri alfabetice BRD - coduri alfanumerice FZ22OB01

• după controlul codurilor şi al erorilor - coduri autodetectoare de erori: acest tip de cod permite

determinarea unei erori din structura codului prin intermediul unui caracter de control plasat pe ultima poziţie a codului.

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

10

� Crearea tabelelor prin comenzi T-SQL

Comanda CREATE TABLE Sintaxa: CREATE TABLE nume-tabela (nume-camp1 tip-data [IDENTITY / restrictie / NULL / NOT NULL / PRIMARY KEY], nume-camp2 tip-data [IDENTITY / restrictie / NULL / NOT NULL / PRIMARY KEY], […])

unde: IDENTITY – permite folosirea, in table, a unor valori generate de sistem pentru identificarea unica a inregistrarilor; restrictie – reprezinta o definitie prin care se impune intergritatea referentiala si integritatea pe domeniu, si poate fi:

- restrictie prestabilita: [CONSTRAINT nume-restrictie] DEFAULT expresie-constanta - restrictie de verificare: [CONSTRAINT nume-restrictie] CHECK expresie

NULL / NOT NULL – stabileste daca un camp poate avea sau nu valori nule; PRIMARY KEY – precizeaza cheia primara. Exemple:

a) crearea tabelei Facturi cu cheia primara pe un camp --- se definesc, pe rand, toate campurile: CREATE TABLE Facturi ( Nrfactura Varchar ( 10) Not Null Primary Key, Datafactura DateTime Not Null, Codclient Varchar ( 13) Not Null, Nrcontract Int , Codmagazin Int Not Null, IDpromitie Int )

b) crearea tabelei Randfactura cu cheia primara pe doua campuri --- se definesc, pe rand, campurile tabelei, iar la sfarsit se insereaza cheia primara pe campurile participante: CREATE TABLE Randfactura ( Nrfactura Varchar ( 10) Not Null, Codprodus Int Not Null, Cant Decimal ( 10, 2) Not Null,

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

11

Pret Decimal ( 10, 2) Not Null, Primary Key( Nrfactura , Codprodus ))

c) crearea tabelei IDPromotie cu: - restrictii de verificare (CHECK) care asigura integritatea pe

domeniu; - restrictii cheie straina (FOREIGN KEY) / NU ESTE CAZUL - crearea unui index unic pe campul Numepromotie.

CREATE TABLE Promotii ( IDpromotie Int Not Null Primary Key CHECK( IDpromotie Between 1 And 10 ), Numepromotie Varchar ( 50) Not Null CHECK( numepromotie =’Aniversare 1 an’ OR numepromotie =’Mos Craciun 2007’ ) COSNTRAINT IDprom UNIQUE ( numepromotie ), Codpromotie Decimal ( 10, 2) Not Null, Datainceput SmallDateTime Not Null, Datasfarsit SmallDateTime Not Null, Tippromotie Char ( 10) Not Null CHECK ( Tippromotie =’Fluturasi’ OR Tippromotie =’RadioTV’ OR Tippromotie =’Presa’ ))

Interogarea datelor � Consta din extragerea informatiilor din baza de date � Se realizeaza cu:

o utilitarul Microsoft SQL Server Management Studio / Views o prin comenzi T-SQL; sintaxele se scriu in fereastra New

Query, generata prin apasarea butonului New Query din interfata principala.

� Interogari prin Microsoft SQL Server Management Studio

- Views / New View / se selecteaza tabela (tabelele) si ADD; - Se trag campurile pe grila, sau se bifeaza campul dorit din tabela; - Se pot defini campuri calculate si se pot introduce criterii de selectie; - Din meniul Query Designer se alege Execute SQL.

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

12

� Interogari prin comenzi T-SQL Sintaxa simplificata:

SELECT [ALL / DISTINCT] lista-campuri [INTO tabel-nou] FROM lista-tabele [WHERE criteriu-selectie] [GROUP BY criteriu-grupare] [HAVING criteriu-selectie-grupuri] [ORDER BY nume-camp [ASC/DESC] [, …]]

unde: DISTINCT – elimina din lista de rezultate inregistrarile duplicate pe baza campurilor din fraza SELECT. Ex1. Sa se afle pentru ce produse au existat vanzari (tabela Randfactura) use vanzari_tj SELECT DISTINCT Codprodus FROM Randfactura ORDER BY Codprodus

Lista returnata:

Observatie: se utilizeaza comanda Use nume_db in scopul utilizarii bazei de

date din care se doreste extragerea datelor; daca nu se specifica aceasta

comanda se incearca extragerea datelor din baza de date master, iar ca

urmare nu se vor returna datele solicitate.

INTO tabel-nou – determina crearea unei tabele pe baza datelor din alte tabele. Se realizeaza numai in Query Analyzer.

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

13

Ex2. Sa se creeze o noua tabela cu date valorice despre tranzactionarea unor produse use vanzari_tj SELECT Facturi . Nrfactura , Datafactura , Codprodus , Codclient , Cant , Pret , Cant * Pret As Valoare INTO Vanzari2005 FROM Facturi INNER JOIN Randfactura ON

Facturi . Nrfactura =Randfactura . Nrfactura WHERE Datafactura Between '1/1/2005' AND '12/31/2005'

FROM lista-tabele WHERE criteriu-selectie GROUP BY – grupeaza datele (inregistrarile) care satisfac eventual clauza WHERE HAVING – stabileste criteriul pentru determinarea returnarii rabdurilor centralizatoare

Operatori si functii utilizate la realizarea interogarilor (vederilor)

� Operatori aritmetici: +, -, *, /, % (Modulo) Daca intr-o operatie se folosesc mai multe tipuri de date, tipul mai mic este convertit in tipul mai mare.

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

14

� Functii matematice ROUND(valoare, n) – rotunjeste expresia numerica la o valoare cu n zecimale.

� Functii pentru siruri LEFT(sir, n) – returneaza n caractere din stanga sirului RIGHT(sir, n) – returneaza n caractere din dreapta sirului SUBSTRING(sir, pozitie, numar) – returneaza din expresie un subsir, de la o anumita pozitie STR(valoare) – converteste datele numerice in siruri de caractere LOWER(sir) – converteste expresia in litere mici UPPER(sir) – conerteste espresia in litere mari LTRIM(sir) – returneaza expresia fara spatii la inceput RTRIM(sir) – returneaza expresia fara spatii la sfarsit SPACE(sir) – returneaza un sir de spatii egal cu o expresie intreaga

� Functii pentru date calendaristice Day(data) – returneaza ziua Month(data) – returneaza luna Year(data) – returneaza anul GetDate() – returneaza data si ora curente DateADD(data, perioada, numar) – adauga la data numarul de componente DateDiff(perioada, data1, data2) – returneaza numarul de componente dintre doua date DatePart(perioada, data) – returneaza valoarea intreaga a unei componente specificate pentru data mentionata

� Operatori de comparatie: <, <=, >, >=, =, <>, LIKE, NOT LIKE � Operatori asociati operatorilor de comparatie: +=, -=, &=, *=, /=,

\=, ^= � Operatori logici: OR, AND, NOT, XOR, AndAlso, OrElse � Operatori de concatenare: &, +

Exemple de utilizare a operatorilor si functiilor Ex3. Camp calculat – se utilizeaza tabela Randfactura use vanzari_tj SELECT Codprodus , Cant , Pret ,

ROUND( Cant * Pret , 2 ) As Valoare FROM Randfactura

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

15

Lista returnata:

Ex.4 Vanzarile de produse din clasa Soft (20) use vanzari_tj SELECT Left( str ( codprodus , 8 , 0 ), 2 ) As

[Clasa Soft] , Cant , Pret , Cant * Pret As Valoare FROM Randfactura WHERE Left( str ( codprodus , 8 , 0 ), 2 ) = 20

Lista returnata:

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

16

Ex5. Vanzarile de produse din clasa Hard (10), subclasa Placa de baza (10) use vanzari_tj SELECT Left( str ( codprodus , 8 , 0 ), 4 ) As

[Clasa Hard Subclasa Placa de baza] , Cant , Pret , Cant * Pret As Valoare

FROM Randfactura WHERE (Left( str ( codprodus , 8 , 0 ), 2 ) = 10 ) AND ( Substring ( str ( codprodus , 8 , 0 ), 3 , 2 ) = 10 )

Lista returnata:

Ex6. Extragerea datei curente si a orei curente use vanzari_tj SELECT GetDate () As [Data si ora curenta]

Lista returnata:

Ex7. Extragerea datei curente fara ora curenta use vanzari_tj SELECT Convert ( Char ( 8), GetDate (), 2 ) As Data

Lista returnata:

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

17

Ex8. Se extrag datele din tabela Facturi pentru a obtine data scadenta (+15 zile) privind achitarea facturii si a numarului de zile de intarziere fata de data scadenta use vanzari_tj SELECT Nrfactura , Datafactura , Codclient ,

DateAdd ( dd, 15 , Datafactura ) As [Data scadenta] , DateDiff ( dd, DateAdd ( dd, 15 , Datafactura ), GetDate ()) As [Nr zile intarziere]

FROM Facturi

Lista returnata:

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

18

Corelarea tabelelor Sintaxa:

SELECT lista-campuri FROM nume-tabela1 {INNER / OUTHER

{LEFT / RIGHT / FULL} JOIN nume-tabela2 ON criterii de legatura

Tipul de jonctiune INNER JOIN leaga doua tabele pe baza unei conditii de jonctiune, generand un nou tabel cu inregistrari care satisfac conditia. Ex10. Lista vanzarilor pentru produsul ‘Placa de baza’ catre clientii ‘N1034116’, ‘R984676’, ‘R7468214’

- se utilizeaza tabelele Produse, Facturi, Randfactura use vanzari_tj SELECT Produse . Codprodus , Denprodus , Codclient , Cant , Pret , Str ( Cant * Pret , 10 , 2 ) As Valoare

FROM Produse INNER JOIN Randfactura ON Produse . Codprodus = Randfactura . Codprodus INNER JOIN Facturi ON Randfactura . Nrfactura = Facturi . Nrfactura WHERE ( Denprodus like 'Placa de baza%' ) And ( Codclient IN( 'N1034116' , 'R984676' , 'R4948567' ))

Lista returnata:

Interogari pentru centralizarea datelor - fara parametrizare in clauzele WHERE si HAVING -

Functii agregat AVG(nume-camp) – returneaza media valorilor dintr-un camp numeric COUNT(nume-camp) – returneaza numarul de valori MAX(nume-camp) – extrage valoarea max. dintr-un domeniu de valori

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

19

MIN(nume-camp) – extrage valoarea min. dintr-un domeniu de valori SUM(nume-camp / expresie) – insumeaza valorile dintr-un camp numeric sau conforme cu o expresie

Exemple: Ex11. Lista cu totalul vanzarilor cantitative si valorice pe fiecare produs

- se utilizeaza tabelele Produse si Randfactura use vanzari_tj SELECT Produse . Codprodus , Denprodus , Str ( Sum( Cant ), 10 , 2 ) As Tcantitate , Str ( Sum( Cant * Pret ), 10 , 2 ) As Tvaloare FROM Produse INNER JOIN Randfactura ON Produse . Codprodus = Randfactura . Codprodus GROUP BY Produse . Codprodus , Denprodus ORDER BY Produse . Codprodus

Lista returnata:

Ex12. Lista cu totalul vanzarilor cantitative si valorice pe un produs use vanzari_tj SELECT Produse . Codprodus , Denprodus , Str ( Sum( Cant ), 10 , 2 ) As Tcantitate , Str ( Sum( Cant * Pret ), 10 , 2 ) As Tvaloare FROM Produse INNER JOIN Randfactura ON Produse . Codprodus = Randfactura . Codprodus GROUP BY Produse . Codprodus , Denprodus HAVING Produse . Codprodus = 10101001

Lista returnata:

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

20

Ex13. Centralizatorul cantitatilor contractate si vandute pe produse - se utilizeaza tabelele Produse, Contracte, Randfactura

use vanzari_tj SELECT Randfactura . Codprodus , Denprodus , Str ( Sum( Contracte . Cant ), 10 , 2 ) As [Cantitate contractata] , Str ( Sum( Randfactura . Cant ), 10 , 2 ) As [Cantitate vanduta] , Str ( Sum( Contracte . Cant - Randfactura . Cant ), 10 , 2 ) As Diferenta FROM Produse INNER JOIN Contracte ON Produse . Codprodus = Contracte . Codprodus INNER JOIN Randfactura ON Produse . Codprodus = Randfactura . Codprodus GROUP BY Randfactura . Codprodus , Denprodus

Lista returnata:

Operatorii ROLLUP si CUBE Se utilizeaza in clauza GROUP BY pentru obtinerea de totaluri suplimentare Sintaxa:

SELECT lista-campuri FROM lista-tabele [WHERE criteriu-selectie] GROUP BY campuri-grupare WITH {ROLLUP / CUBE}

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

21

� ROLLUP – genereaza randuri de subtotal si total general Ex14: Lista cu totalul vanzarilor pe clienti si produse

- se utilizeaza tabelele: Clienti, Produse, Facturi, Randfactura use vanzari_tj SELECT Denclient , Denprodus , Str ( Sum( Cant * Pret * 1.19 ), 10 , 2 ) As [Total

valoare] FROM Produse INNER JOIN Randfactura ON Produse . Codprodus = Randfactura . Codprodus INNER JOIN Facturi ON Randfactura . Nrfactura = Facturi . Nrfactura INNER JOIN Clienti ON Facturi . Codclient = Clienti . Codclient GROUP BY Denclient , Denprodus WITH ROLLUP

Lista returnata:

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

22

� CUBE – genereaza randuri de subtotal si total general precum si combinatii posibile

Ex15: Lista cu totalul vanzarilor pe clienti si produse

- se utilizeaza tabelele: Clienti, Produse, Facturi, Randfactura use vanzari_tj SELECT Denclient , Denprodus , Str ( Sum( Cant * Pret * 1.19 ), 10 , 2 ) As [Total

valoare] FROM Produse INNER JOIN Randfactura ON Produse . Codprodus = Randfactura . Codprodus INNER JOIN Facturi ON Randfactura . Nrfactura = Facturi . Nrfactura INNER JOIN Clienti ON Facturi . Codclient = Clienti . Codclient GROUP BY Denclient , Denprodus WITH CUBE

Universitatea Titu Maiorescu, Facultatea de Stiinte Economice Curs master : Tehnologii informatice utilizate in mediul decizional I , 2009_2010 Titular disciplina: Lect.univ.drd. Vasilciuc Bogdan Gabriel

23

Lista returnata: