Sunteți pe pagina 1din 6

Extragerea unor informaii statistice Comenzile care permit extragerea unor informaii din tabelele de date se aplic asupra

unor cmpuri sau asupra unor expresii care conin numele unor cmpuri. COUNT [TO <var>] [FOR <cond>] [<domeniu>] [WHILE <cond>] - numr nregistrrile din tabelul de date, numrul de nregistrri putnd fi memorat ntr-o variabil de lucru; SUM <list exp>[TO<list var>] [FOR <cond>] [<domeniu>] [WHILE <cond>] - nsumeaz valorile expresiilor din lista de expresii(<list exp>) i le atribuie, eventual, unei liste de variabile (<list var>); AVERAGE <list exp>[TO <list var>] [FOR <cond>] [<domeniu>] [WHILE cond>] - la fel ca SUM avnd ca rezultat media aritmetic. CALCULATE <list funct>[TO<list var>] [FOR <cond>] [<domeniu>] [WHILE <cond>] - calculeaz anumite expresii folosind urmtoarele funcii (<list funct>): SUM(<expN>) suma; AVG(<expN>) media aritmetic; STD(<expN>) deviaia standard; VAR(<expN>) abaterea medie ptratic; MAX(<expN>) val maxim, nu neaprat numeric; MIN(<expN>) val minim, nu neaprat numeric; NPV(<expN1>,<expN2>)[,<expN3>]) valoarea prezent net a unei investiii (vezi funcia de calcul financiar); CNT() numrul de nregistrri din tabelul de date. Exemple: 1.Afiai numrul persoanelor cstorite, care nu au copii. COUNT FOR stciv AND nrc=0 2.Afiai numrul persoanelor de sex masculin ce au salariul cuprins ntre 1000 i 1500 lei. COUNT FOR UPPER(sex)=M AND sal>=1000 AND sal<=1500 3.Afiai numrul nregistrrilor din tabel. ? RECCOUNT() ? RECNO() ? DATE() 4.Afiai totalul salariilor i al numrului de copii pentru persoanele nscute dup 1 mai 1980 i care nu locuiesc n Bucureti. SUM sal, nrc FOR datan > {^1980/05/01} AND PROPER(dom) # Bucuresti sau CALC SUM(sal), SUM(nrc) FOR datan > {^1980/05/01} AND PROPER(dom) # Bucuresti 5.Afiai salariul mediu pentru toti inginerii ce au vrsta de cel puin 50 de ani. AVER sal FOR UPPER(prof) = INGINER AND YEAR(DATE())-YEAR(datan)>=50 sau CALC AVG(sal) FOR UPPER(prof) = INGINER AND YEAR(DATE())-YEAR(datan)>=50 6.Calculai salariul total, mediu, maxim i minim din tabel. CALC SUM(sal), AVG(sal),MAX(sal), MIN(sal) Comenzi pentru lucrul cu fiiere a) Redenumirea fiierelor RENAME fiier1[.ext] TO fiier2[.ext]

Exemplu: 1.Schimbai denumirea fiierului student n pers. RENA student.dbf TO pers.dbf b) tergerea fiierelor DELETE / ERASE FILE fiier[.ext] Exemplu: 1. tergei fiierul pers. DELE FILE pers.dbf c) Copierea structurii unei tabele COPY STRU TO fiier [FIELDS list cmpuri] Se copiaz din tabela activ ntr-o alt tabel cu numele specificat (fiier), ntreaga structur sau doar cmpurile specificate prin clauza FIELDS (se copiaz doar structura , nu i nregistrrile) Exemple: 1.Din tabela de date pers creai o nou tabel pers1, cu aceeai structur. USE pers COPY STRU to pers1 USE pers1 BROW 2.Din tabela pers creai o alt tabel, pers2, care sa conin doar cmpurile: nume, prenume, domiciliu, profesie i salariu. USE pers COPY STRU to pers2 FIELDS nume, pren, dom, prof, sal USE pers2 BROW d) Adugarea nregistrrilor dintr-o alt tabel nregistrrile dintr-o tabel specificat sunt adugate la sfritul tabelei active. APPEND FROM fiier [FIELDS list cmpuri] [FOR <cond>] [TYPE] [DELIMITED [WITH TAB] / WITH delimitator/ [SDF] / XLS] Clauza FIELDS permite preluarea datelor doar din cmpurile specificate n list. Clauza FOR selecteaz nregistrrile care satisfac condiiile precizate. Clauza TYPE definete tipul fiier (de exemplu, poate fi de tip TXT i astfel acesta poate fi preluat de ctre alte SGBD-uri sau limbaje de programare). Opiunea DELIMITED specific delimitatorul dintre cmpurile nregistrate (implicit, este virgul). Tipul specificat prin SDF semnific fiier ASCII cu nregistrri de lungime fix; tipul XLS semnific foaie de calcul MS EXCEL. Obseravii: 1.Comanda APPEND permita adugarea de noi nregistrri la sfritul tabelei, prin intermediul unei machete (se deschide o fereastr n care cmpurile sunt unele sub altele este aceeai fereastr care se deschide i n cazul comenzilor EDIT/CHANGE) 2.Comanda APPEND BLANK adaug la sfritul tabelei o nou nregistrare, vid, care poate fi ulterior completat. Exemple: 1. Adugai la sfritul tabelei pers toate nregistrrile din tabela pers1.

USE pers APPE FROM pers1 e) Copierea nregistrrilor din tabela curent Realizeaz transferul invers, copiind nregistrrile din tabela curent n alt fiier (evident, se copiaz nregistrrile i structura tabelei curente) COPY TO fiier [FIELDS list cmpuri] [FOR <cond>] [TYPE] [DELIMITED [WITH TAB] / WITH delimitator/ [SDF] / XLS] Clauza DELIMITED WITH arat c fiierul va fi de tip TXT, n care delimitatorii sunt precizai de utilizator. Exemple: 1. S se copieze toate nregistrrile din tabela pers ntr-o alt tabel, pers3. USE pers COPY TO pers3 USE pers3 BROW 2. Din tabela pers s se creeze tabela fpers cu toate persoanele necstorite, de sex feminin, dar avnd n structur doar cmpurile: nume, prenume, salariu, data naterii i numr copii. USE pers COPY TO fpers FIELDS nume, pren, sal, datan, nrc FOR not stciv AND UPPER(sex)=F USE fpers BROW 3. Din tabela pers s se creeze tabela mpers, cu toate persoanele de sex masculin i cu salariul de cel mult 2000 lei, avnd n structur aceleai cmpuri ca i fpers. USE pers COPY TO mpers FIELDS nume, pren, sal, datan, nrc FOR UPPER(sex)=M AND sal<=2000 USE mpers BROW Ordonarea i actualizarea tabelelor de date Ordonarea tabelelor de date nregistrrile apar, n tabelul de date, n ordinea n care au fost introduse, dar nu ntotdeauna aceasta este i ordinea lor de utilizare. Ordonarea unui tabel presupune stabilirea unui criteriu dup care s fie parcurse nregistrrile acestuia. Acest criteriu poate fi un cmp sau o combinaie de cmpuri ale tabelului de date numit cheie de ordonare. O cheie de ordonare este o expresie, alctuit din cmpuri ale tabelului, care este evaluat pentru fiecare nregistrare, ordinea de prelucrare a nregistrrilor fiind dat de valorile acestei expresii. Se folosesc dou metode de ordonare a bazelor de date: fizic i logic. a) Ordonarea fizic (sortarea) Sortarea const n rearanjarea fizic a datelor din tabel ntr-o alt ordine, dat de criteriul de sortare. Astfel rezult un tabel de date nou cu aceleai informaii ca i cel original, dar ordinea fizic (natural) a nregistrrilor este schimbat. SORT TO <fiier> ON <cmp1> [/A /D] [/C] [, <cmp2>[/A /D] [/C] ...] [ASCENDING DESCENDING] [<domeniu>] [FOR <cond>] [WHILE <cond>] [FIELDS <list de cmpuri>] - <fiier> - numele tabelului de date nou creat, cu datele sortate;

- <cmp1>,<cmp2>,.... - lista cheilor de sortare; - /A , /D - sortare ascendent, descendent, relativ la cmpul asociat; - /C - sortare n ordine alfabetic, necontnd literele mari sau mici; - ASCENDING | DESCENDING - ordonare ascendent sau descendent cu specificarea ordinii pentru toate cmpurile; - FIELDS - selecie pe vertical (filtrare). Exemple: 1.Sortai nregistrrile din tabela fpers cresctor dup nume i prenume, i descresctor dup data naterii. USE fpers SORT sfpers ON nume/AC, pren/AC, datan/D USE sfpers BROW 2.Afiai salariul total, mediu, maxim i minim al persoanelor care nu au copii. USE fpers CALC SUM (sal), AVG(sal), MAX(sal), MIN(sal) FOR NRC=0 3.Mrii cu 7% salariul persoanelor care nu locuiesc n Bucureti i au copii. REPL sal WITH sal*1.07 FOR PROPER(dom) # Bucuresti AND nrc>0 4.Sortai nregistrrile din tabela mpers cresctor dupa nume i prenume, i descresctor dup salariu. USE mpers SORT TO smpers ON nume/AC, pren/AC, sal/D USE SMPERS BROW 5.Afiai salariul total, mediu, maxim i minim al persoanelor cu vrsta de cel mult 45 ani. USE mpers CALC SUM (sal), AVG(sal), MAX(sal), MIN(sal) FOR YEAR(DATE())-YEAR(datan)<=45 6.Micorai cu 9% salariul persoanelor care nu au profesia inginer i au copii. REPL sal WITH sal*0.91 FOR PROPER(prof) # Inginer AND nrc>0 b) Ordonarea logic (indexarea) Indexarea este o metod mult mai eficient de ordonare a tabelelor de date, care permite ca operaiile de consultare i cutare a datelor n tabel s fie rapide. Prin indexare se creeaz un fiier index, asociat bazei de date, de dimensiuni mult mai mici dect dimensiunea bazei de date. Fr a detalia structura fiierului index, trebuie menionat c fiierul index este o list simplu nlnuit a numerelor articolelor din baza de date aflate n ordinea lor natural. La definirea structurii bazei de date (prin CREATE sau MODIFY STRUCTURE), n coloana Index, se pot defini unul sau mai multe criterii de indexare care sunt identificate prin etichete (numele unei etichete este acelai, n acest caz, cu numele cmpului). Activarea unuia sau altuia din criteriile de indexare se realizeaz n dou moduri: - la deschiderea tabelului de date: USE <fiier> ORDER <nume etichet> - n timpul lucrului prin comanda: SET ORDER TO TAG <nume etichet> Stabilirea altor criterii de indexare, diferite de cele definite n structura tabelului de date, se poate face prin comanda: INDEX ON <exp> TAG <nume etichet>

[FOR <cond>] [ASCENDING DESCENDING] [UNIQUE] - TAG - identific un criteriu de indexare; - UNIQUE - clauz care nu admite dubluri pe cmpul de indexare tergerea unei etichete (criteriu) de indexare se realizeaz utiliznd comanda: DELETE TAG <nume etichet> ALL Principalul avantaj al indexrii rezult din posibilitatea localizrii rapide a unor nregistrri, mult mai eficient dect cea furnizat prin LOCATE. Acest lucru este realizat prin comanda: SEEK <exp> Comanda SEEK caut prima nregistrare pentru care valoarea expresiei calculate cu valori din cmpurile acesteia este egal cu <exp>, pe criteriul de indexare selectat. Observaii 1.La un moment dat poate fi activ un singur criteriu de indexare, numele etichetei corespunztoare fiind furnizat de funcia TAG(); 2.Efectul unei comenzi de cutare (SEEK sau LOCATE) poate fi prelungit prin folosirea comenzii CONTINUE; 3.Funcia FOUND() determin (.T. sau .F.) dac s-a reuit sau nu localizarea. Comanda SET EXACT ON OFF stabilete modalitatea de cutarea pe subiruri de caractere. Clauza implicit este OFF. 4.Dac <exp> este un ir de caractere, acesta trebuie pus ntre apostrofuri.

Cmpuri MEMO Cmpurile MEMO definesc cmpuri de lungime variabil de tip text. Un tabel de date, cu cel puin un cmp MEMO, are asociat un fiier suplimentar n care sunt depuse informaiile legate de acest cmp. Pentru a putea identifica datele din fiierul MEMO asociat, care aparin unei anumite nregistrri, n tabelul de date, pe poziia corespunztoare a nregistrrii, se memoreaz o adres spre fiierul MEMO (poziia primului caracter al cmpului respectiv). Exemplu:

Modificarea cmpurilor MEMO se poate face n fereastra Browse sau prin comenzi specifice: MODIFY MEMO <cmp memo1>[,<cmp memo2>,....] - se deschide cte o fereastr de editare pentru fiecare cmp memo; CLOSE MEMO <cmp memo1>[,<cmp memo2>,....] ALL

- se vor nchide ferestrele de editare corespunztoare cmpurilor memo specificate n list (sau toate - ALL); APPEND MEMO <cmp memo> FROM <fiier> [OVERWRITE] - coninutul unui fiier extern, de tip text, va fi adugat la sfritul cmpului memo precizat (dac se folosete clauza OVERWRITE vechiul coninut al cmpului se pierde); COPY MEMO <cmp memo> TO <fiier> [ADDITIVE] -coninutul unui cmp memo se copiaz ntr-un fiier extern de tip text. Dac se folosete clauza ADDITIVE copierea se va face la sfritul unui fiier deja existent. Ciclul SCAN Ciclul SCAN este un ciclu cu numr finit de pai, specializat n lucrul cu tabele de date. Aceast structur repetitiv realizeaz parcurgerea tabelului i executarea unui grup de instruciuni pentru fiecare nregistrare care ndeplinete condiiile specificate. Ciclul este utilizat, deseori, pentru actualizarea coninutului tabelelor de date, conform unor anumite condiii, sau pentru obinerea informaiilor statistice. Sintaxa este: SCAN [<domeniu>] [FOR <cond1>] [WHILE <cond2>] [<instruciuni>] [LOOP] [EXIT] ENDSCAN