Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Coloane expresii

sql



+ Font mai mare | - Font mai mic



Coloane expresii

In multe interogari SQL o facilitate importanta o constituie definirea, pe langa atributele tabelelor, a unor coloane noi (virtuale), pe baza unor expresii. Clauza AS permite denumirea coloanelor calculate sau redenumirea unor coloane ale tabelelor.



Sa luam urmatorul exemplu:

Care este suma cheltuita cu achizitionarea cartii "Informatica de gestiune"?

SELECT titlu, pret_unitar, nr_exemplare,

pret_unitar*nr_exemplare AS suma

FROM CARTE

WHERE titlu = "Informatica de gestiune"

Rezultatul acestei interogari este prezentat in figura urmatoare:

titlu

pret_unitar

nr_exemplare

suma

Informatica de gestiune

Figura 4.1. Exemplu de coloana calculata

A patra coloana este denumita suma, dupa cum a fost specificat in clauza AS. Valorile sale sunt determinate pe baza expresiei pret_unitar*nr_exemplare

Un alt tip de expresii este cel bazat pe concatenare, adica pe alipirea mai multor constante si variabile intr-o coloana noua. Operatorul SQL pentru concatenare este alcatuit din doua bare verticale ( ). Spre exemplu, interogarea urmatoare produce rezultatul din figura 4.2. .

SELECT "Judetul " || judet || " se afla in " || regiune AS exemplu_concatenare

FROM LOCALITATE

exemplu_concatenare

Judetul Arges se afla in Muntenia

Judetul Bucuresti se afla in Muntenia

Judetul Constanta se afla in Dobrogea

Judetul Dambovita se afla in Muntenia

Judetul Iasi se afla in Moldova

Judetul Prahova se afla in Muntenia

Judetul Timis se afla in Transilvania

Judetul Valcea se afla in Oltenia

Judetul Vaslui se afla in Moldova

Figura 4.2. Concatenarea unor literali si atribute sir de caractere

Unele SGBD-uri, precum Visual FoxPro, nu au implementat acest operator, folosind in acest scop unul specific (in cazul VFP este

SELECT DISTINCT 'Judetul ' + ALLTRIM(judet)+;

' se afla in ' + regiune AS;

exemplu_concatenare FROM LOCALITATE

S-a folosit functia ALLTRIM() pentru a elimina toate spatiile goale din judet Visual FoxPro foloseste pentru conversia valorilor din numeric in sir de caractere functia STR() iar din data calendaristica, dupa caz, DTOC() sau DTOS()

SELECT ALLTRIM(Nume) + " cu numarul matricol " ;

+ ALLTRIM(STR (nr_matricol)) + " s-a nascut;

in data " + ALLTRIM(DTOC(data_nasterii));

AS exemplu_concatenare;

FROM STUDENT

exemplu_concatenare

Popescu Ion Octavian cu numarul matricol 1000 s-a nascut in data 10/10/82

Radu Laurentiu cu numarul matricol 1001 s-a nascut in data 12/03/80

Tudorache Octavian cu numarul matricol 2000 s-a nascut in data 04/02/82

Chivu Mihai cu numarul matricol 3000 s-a nascut in data 05/20/76

Barbu Elena cu numarul matricol 1002 s-a nascut in data 05/21/75

Popescu Marilena cu numarul matricol 1003 s-a nascut in data 02/03/80

Petrescu Daniel cu numarul matricol 1004 s-a nascut in data 11/11/73

Danciu Monica cu numarul matricol 1005 s-a nascut in data 04/03/78

Croitoru Sebastian cu numarul matricol 3001 s-a nascut in data 04/24/78

Dinescu Monica cu numarul matricol 1005 s-a nascut in data 10/03/74

Danciu Mihaela cu numarul matricol 2001 s-a nascut in data 09/30/78

Stan Adrian cu numarul matricol 1006 s-a nascut in data 03/17/80

Cristea Roxana cu numarul matricol 1007 s-a nascut in data 07/02/78

Moraru Octavian cu numarul matricol 2002 s-a nascut in data 06/07/78

Goia Simona cu numarul matricol 1008 s-a nascut in data 01/01/82

Balasa Maria cu numarul matricol 3002 s-a nascut in data 09/17/80

Simionescu Dorin cu numarul matricol 1009 s-a nascut in data 12/01/78

Delca Simona cu numarul matricol 2002 s-a nascut in data 06/30/82

Stanciu Maria cu numarul matricol 1010 s-a nascut in data 10/19/82

Radu Denisa cu numarul matricol 1011 s-a nascut in data 03/09/70

Figura 4.3. Concatenarea unor literali cu atribute de diferite tipuri

In ceea ce priveste expresiile de tip data calendaristica, modurile in care au fost implementate aceste functiuni sunt foarte eterogene de la SGBD la SGBD.

Sa presupunem ca orice carte imprumutata trebuie restituita in maximum 10 zile.

Visual Fox Pro permite formularea unei solutii simple. data_imprumut fiind un atribut de tip DATE, se considera implicit daca adunam 10, ca acest 10 reprezinta numarul de zile.

SELECT cota_carte, data_imprumut, ;

data_imprumut + 10 AS data_restituire ;

FROM STUDCARTE

cota_carte

data_imprumut

data_restituire



Figura 4.4. Restituirea cartilor in 10 zile

Daca am presupune ca o carte imprumutata poate fi restituita peste 3 luni, interogarea de mai sus trebuie modificata astfel:

SELECT cota_carte, data_imprumut, GOMONTH ;

(data_imprumut, 3) AS data_restituire ;

FROM STUDCARTE

cota_carte

data_imprumut

data_restituire

Figura 4.5. Restituirea cartilor in 3 luni

Daca vrem sa punem in evidenta operatiunile de adunare si scadere intre doua date calendaristice, sa luam exemplul in care ne intereseaza intervalul dintre momentul curent (data curenta) si momentul imprumutarii fiecarei carti:

Interogarea in Visual Fox Pro in acest caz este:

SELECT cota_carte, data_imprumut, DATE() ;

- data_imprumut AS timp_scurs ;

FROM STUDCARTE

cota_carte

data_imprumut

timp_scurs

Figura 4.6. Intervalul dintre 06/04/2004

(data executiei interogarii) si data imprumutului

Rezultatul scaderii a doua date calendaristice este un numeric care reprezinta numarul de zile.




Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1111
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved