Sunteți pe pagina 1din 40

MEDII DE PROGRAMARE IN IA Cursul 9 Baze de date n Guru

Nicolae T and areanu

Facultatea de Matematic a si Informatic a, Universitatea din Craiova, str.A.I.Cuza 13, 1100-Craiova, Romania e-mail: rcai@central.ucv.ro

Obiective

Obiectivele acestei lect ii sunt urm atoarele: Revizuirea conceptelor fundamentale de baze de date nsu sirea modurilor de denire a unei baze de date n Guru si a operat iilor de procesare a datelor

Denirea schemelor de relat ii

Mediul de programare GURU ofer a numeroase facilit a ti cu privire la gestionarea bazelor de date relat ionale: permite denirea schemelor de relat ii; permite obt inerea instant elor de relat ii, procesarea informat iilor din acestea, ntocmirea de rapoarte si statistici pe bazele de date; accept a compatibilitatea cu alte limbaje de gestiune a bazelor de date prin preluarea informat iilor procesate cu acestea; mbin a tehnicile de procesare a spredsheeturilor, bazelor de date relat ionale si a sistemelor expert.

3 Documentat ia GURU utilizeaz a conceptul de tabel. Tabel Acesta este legat de conceptele de schem a de relat ie si instant a a unei scheme de relat ie. Denirea unui tabel presupune denirea unei scheme de relat ii, iar procesarea unui tabel nseamn a introducerea datelor, vizualizarea si actualizarea acestora. Denirea unei scheme de relat ii nseamn a specicarea unui nume simbolic care va deveni numele tabelului, asocierea unui sier si specicarea structurii unui tuplu, adic a denirea tipului de date si a lungimii ec arei componente a tuplului. Managementul datelor se poate realiza n principal prin dou a mijloace: utiliz and GURU interactiv; prin meniul Commander. Denirea unei scheme de relat ii se realizeaz a prin intermediul comenzii DEFINE. Mediul de programare GURU Comanda DEFINE permite dou a moduri de utilizare a acestei comenzi: modul interactiv si modul unitar. 1. Modul interactiv presupune c a elementele necesare denirii tabelului se transmit conversat ional: numele tabelului si eventual numele unui sier, iar pentru
Schem a de relat ie

4 ecare c amp al unui tuplu se precizeaz a numele c ampului, tipul si lungimea acestuia; modul interactiv se init iaz a prin tastarea comenzii: Guru > define simb unde simb este numele tabelului. GURU converseaz a cu utilizatorul cer andu-i acestuia informat ii cu privire la numele sierului asociat tabelului si structura c ampurilor tabelului. La ntrebarea: Guru > FILE? utilizatorul r aspunde tast and numele unui sier cu extensia ITB sub care va gura tabelul; numele sierului se include ntre semnele duble de apostrof. Dac a utilizatorul tasteaz a ENTER n loc de numele sierului atunci numele acestuia este acela si cu numele tabelului, cu extensia ITB. In continuare GURU cere structura c ampurilor din tabel: Guru > FIELD? Utilizatorul r aspunde cu numele c ampului, tipul acestuia si eventual lungimea dac a nu se consider a

5 STR size NUM INT LOGIC BLOB pentru c ampuri string de dimensiune size pentru c ampuri numerice (8 octet i) pentru c ampuri ntregi (2 octet i) pentru c ampuri logice (1 octet) pentru c ampuri BLOB Tabelul 1: Tipuri de c ampuri lungimea standard a tipului respectiv. Putem folosi tipurile de c ampuri prezentate n Tabelul 1. C and utilizatorul nu mai are alte c ampuri de denit, la ultima interogare FIELD? se r aspunde cu ENDDEF. 2. Modul unitar se refer a la denirea unui tabel printr-o comand a DEFINE complet a, care are forma: DEFINE nume WITH nume-fisier ;\ FIELD nume_a tip lungime USING format;\ FIELD nume_b tip lungime USING format;\ --------------------------------------FIELD nume_c tip lungime USING format;\ ENDDEF Sunt importante urm atoarele observat ii:

6 numele sierului, reprezentat mai sus prin nume-fisier, trebuie inclus ntre semnele duble de apostrof; specicarea numelui sierului este opt ional a; c and nu se specic a numele de sier, n locul acestuia se consider a numele tabelului cu extensia ITB; specicatorul USING este opt ional; c and nu se folose ste, se consider a formatul standard (denite de anumite variabile de mediu); dup a specicarea USING format se poate utiliza specicat ia: LABELED eticheta

Aceasta ne permite s a introducem un comentariu care s a descrie semnicat ia c ampului respectiv. Eticheta este un sir de caractere. Fiecare c amp denit al tabelului are asociat a o variabil a eld cu numele av and urm atoarea structur a: nume-tabel.nume-camp Facem de asemenea observat ia c a ntreg tabelul sau numai anumite c ampuri pot criptate la citire sau/ si

7 scriere. In acest caz numai acei utilizatori au acces la citirea sau modicarea datelor din tabel, care au permisiunea respectiv a. Utiliz and instruct iunea DEFINE programatorul dene ste structura unei nregistr ari. Dup a introducerea da- Structura unei nregistr ari telor se obt ine o mult ime de nregistr ari. Aceast a mult ime de informat ii, structurat a pe nregistr ari, o numim instan t a a schemei de relat ii. Sunt importante urm atoarele observat ii: Toate nregistr arile unei instant e au aceea si structur a, precizat a n instruct iunea DEFINE. Dou a nregistr ari difer a numai prin informat iile pe care le cont in. Procesarea unei instant e se realizeaz a la nivelul unei nregistr ari. Aceasta nseamn a c a mai nt ai se identic a o anumit a nregistrare, apoi se acceseaz a informat iile din c ampurile acesteia. Accesarea acestora se realizeaz a prin intermediul c amp asociate unei nregistr ari. O baz a de date este o mult ime nit a de instant e de Baz a de date scheme de relat ii. Informat iile instant elor de scheme de relat ii sunt combinate n vederea obt inerii r aspunsului la o interogare a bazei de date. variabilelor
Instant a a unei scheme

Procesarea tabelelor

Inainte de a utiliza un tabel, el trebuie nc arcat mai nt ai n memorie. Inc arcarea se realizeaz a cu comanda Inc arcarea unui tabel USE nume-tabel Deseori se spune c a un asemenea tabel este in use. De exemplu, comanda USE angajati ncarc a n memorie tabelul angajati. Dup a denirea structurii unui tabel cu comanda DEFINE acesta este automat inc arcat n memorie. Dac a tabelul este deja nc arcat in memorie si se ncearc a re anc arcarea acestuia, va a sat un mesaj de avertisment cu privire la faptul c a tabelul se a a deja nc arcat. Un tabel r am ane n memorie p an a la execut ia comenzii: FINISH nume-tabel sau FINISH ALL

In ultimul caz, sunt extrase din memorie toate tabelele aate in use. Comanda BYE nchide automat tabelele la sf ar situl unei sesiuni de lucru.

9 Pentru nc arcarea n memorie a unui tabel se mai poate utiliza comanda de nc arcare a sierului ata sat tabelului: USE "nume-fisier" In general acest lucru se utilizeaz a atunci c and dorim o sortare (comanda SORT) pentru a genera o versiune sortat a a unui tabel ntr-un sier. Se presupune c a extensia numelui de sier este ITB. Crearea c ampurilor ntr-un tabel se realizeaz a cu comanda: CREATE RECORD FOR nume-tabel [WITH nume-forma] CREATE pozitie RECORD FOR nume-tabel [WITH nume-forma] unde pozitie poate avea una din formele prezentate n Tabelul 2, Tabelul 3 si Tabelul 4. Comanda CREATE creaz a nregistr ari ntr-un tabel n mod interactiv. Execut ia acestei comenzi conduce la Comanda CREATE a sarea pe ecran a informat iilor pe care le cere programul. Ie sirea din CREATE se realizeaz a act ion and tasta ESC. Pentru utilizarea comenzii CREATE este necesar s a e ndeplinite urm atoarele condit ii:
Crearea c ampurilor

10

FIRST LAST recnum

noua nregistrare devine prima din tabel noua nregistrare devine ultima din tabel este o expresie numeric a a c arei valoare d a num arul nregistr arii. Dac a recnum=4 atunci este vorba de a patra nregistrare. dep a se ste Dac a num arul recnum de

nregistr ari din tabel atunci se va ad auga o nou a nregistrare la sf ar situl tabelului. Dac a recnum este negativ atunci CREATE presupune valoarea 1. Tabelul 2: Parametrul pozitie n comanda CREATE

11

NEXT num

noua

nregistrare cu num

este pozit ii curent a;

memorat a

dup a nregistrarea vorba de

dac a num lipse ste atunci este prima nregistrare aat a la dreapta nregistr arii curente; dac a num + k, unde k este num arul curente, nregistr arii num arul dep a se ste

total de nregis- tr ari atunci se consider a ultima nregistrare PRIOR num la fel ca la NEXT num, cu deosebirea c a se procedeaz a cu num pozit ii nainte nregistrarea curent a Tabelul 3: Parametrul pozitie n comanda CREATE de

12 WITH nume-forma specic a o form a de ecran care va folosit a la citirea datelor n tabel (comanda FORM-ENDFORM). e nc arcat a n memorie Tabelul 4: Parametrul pozitie n comanda CREATE 1. Numele de tabel trebuie s a existe, adic a s a apar a n DEFINE. 2. Tabelul trebuie s a e in use (comanda USE). 3. Trebuie s a avem dreptul de a crea nregistr ari. Subliniem faptul c a prin intermediul comenzii CREATE putem a sa numai acele c ampuri pentru care avem dreptul la scriere. De exemplu, comanda: CREATE RECORD FOR angajati poate s a conduc a la introducerea datelor n prima nregistrare din tabelul angajati: Record Number: 1 Nume: Ionescu Este necesar ca forma specicat a s a

13 Stabil: true Varsta: 25 Nroreluc: 200 Salbrut:1000000 Pentru a ncheia introducerea datelor ntr-un anumit c amp se act ioneaz a tasta ENTER. Vizualizarea unor nregistr ari din tabel se face cu comanda BROWSE Forma ei este: BROWSE nume-tabel scop BROWSE nume-tabel FOR conditii scop WITH fields BROWSE nume-tabel WITH nume-forma unde scop specic a nregistrarea sau nregistr arile care se doresc a v azute sau editate. Dac a acestea nu exist a atunci se semnaleaz a o eroare. Ultima nregistrare a sat a devine nregistrarea curent a. Valoarea parametrului scop poate : CURRENT ALL
Vizualizarea nregistr arilor

14 NEXT NEXT num PRIOR PRIOR num RANGE num1, num2 Dac a nu se precizeaz a acest parametru atunci se consider a c a valoarea acestuia este ALL. Semnicat ia valorilor specicate mai sus este descris a n Tabelul 5 si Tabelul 6. Facem observat ia c a num poate o expresie numeric a. Dac a valoarea acesteia este negativ a sau dep a se ste num arul maxim de nregistr ari atunci valoarea ei se consider aa egal a cu 1. Dac a are o valoare real a, care nu este num ar ntreg, atunci se face o trunchiere. Referitor la entit a tile FOR si WITH facem urm atoarele preciz ari: FOR conditii arat a c a dorim s a vizualiz am numai acele nregistr ari din scop care ndeplinesc condit iile specicate. WITH fields precizeaz a care c ampuri dorim s a le oper am; entitatea fields reprezint a o list a de c ampuri, separate prin virgul a.

15

CURRENT ALL NEXT

a seaz a nregistrarea curent a a seaz a toate nregistr arile ncep and cu prima nregistrare a seaz a prima nregistrare de dup a cea curent a. Dac a nu exist a aceasta, atunci nu se a seaz a nimic. Dac a nu exist a nregistrare curent a atunci se consider a prima nregistrare.

NEXT numr

se a seaz a urm atoarele numr nregistr ari curent a. nregistrare nregistr ari. de Dac a dup a nu cea exist a atunci

curent a

se lucreaz a cu primele numr PRIOR a seaz a nregistrarea care

precede pe cea curent a. Dac a nu exist a, atunci se a seaz a un mesaj. Dac a nu exist a nregistrare curent a atunci se consider a ultima nregistrare. Tabelul 5: Parametrul scop n comanda BROWSE

16

PRIOR numr

a seaz a numr nregistr ari care preced pe cea curent a; dac a nu exist a nregistrare curent a atunci se consider a ultimele nregistr ari.

RANGE num1,num2 a seaz a nregistr ari

un n

num ar

de

domeniul

specicat de num1 si num2, inclusiv aceste valori. Dac a nu se precizeaz a domeniul atunci se consider a valoarea ALL. C and num1>num2, se consider a vizualizarea n ordine invers a. Tabelul 6: Parametrul scop n comanda BROWSE

17 WITH nume-forma determina a sarea nregistr arilor din tabel a ntr-un format specicat de utilizator; forma specicat a trebuie s a e inc arcat a in memorie. Utilizarea comenzii BROWSE determin a stergerea ecranului si a sarea nregistr arilor solicitate. Pentru a nlocui o valoare a unui c amp trebuie s a ne deplas am cu cursorul la acel c amp si s a tip arim noua valoare. Pentru a p ar asi modul BROWSE se act ioneaz a tasta ESC. Astfel, cu ajutorul comenzii: BROWSE angajati FOR stabil=true se vizualizeaz a acele nregistr ari pentru care angajati.stabil=true adic a nregistr arile angajat ilor cu contract de munc a pe period a nedeterminat a. Pentru precizarea unor concepte introduse p an a acum vom considera programul denire.ipf de mai jos, care dene ste o schem a de relat ie: DEFINE tabel1 WITH "tab.itb"; FIELD unu STR 10 USING "%10a"; FIELD doi INT USING "dd"; ENDDEF

18 Prin secvent a de instruct iuni de mai sus denim : numele tabel1 al unui tabel, numele tab.itb al sierului ata sat tabelului structura unei nregistr ari oarecare a tabelului; n cazul de fat a , ecare nregistrare are dou a c ampuri ( primul, de tip string si lungime 10; al doilea de tip ntreg cu dou a cifre) Vom prezenta acum efectele execut arii instruct iunilor CREATE si BROWSE. Pentru a observa aceste efecte vom lucra n mod conversat ional. Guru> perform definire Guru>create records Efectul pe monitor: Record Number: 1 UNU: DOI: __________ __

Introducem nregistr ari vizualiz and acest proces pe monitor: Record Number: 1 UNU: DOI: UNU 1

19 Record Number: 2 UNU: DOI: DOI 2

Record Number: 3 UNU: DOI: __________ __

si act ion and tasta ESC obt inem prompterul Guru Guru> Introducem comanda de vizualizare a nregistr arilor din tabel Guru>browse Efectul pe monitor: Record Number: 1 UNU: DOI: UNU 1

Record Number: 2 UNU: DOI: DOI 2

si obt inem n continuare prompterul Guru:

20 Guru> Introducem comanda: Guru>create next record Pe monitor apare: Record Number: 3 UNU: DOI: __________ __

Introducem dou a nregistr ari pe care le vom identica ulterior prin faptul c a al doilea c amp are dou a cifre: Record Number: 3 UNU: DOI: TREIA 31

Record Number: 4 UNU: DOI: PATRUA 41

Record Number: 5 UNU: DOI: __________ __

Act ion am tasta ESC, prin care ncheiem aceast a etap a si obt inem prompterul Guru:

21 Guru> Introducem comanda de vizualizare a nregistr arilor introduse p ana a n momentul de fat a: Guru>browse Efectul pe monitor: Record Number: 1 UNU: DOI: UNU 1

Record Number: 2 UNU: DOI: DOI 2

Record Number: 3 UNU: DOI: TREIA 31

Record Number: 4 UNU: DOI: Guru> Introducem comanda: PATRUA 41

22 Guru>create prior 2 record Efectul pe monitor: Record Number: 2 UNU: DOI: __________ __

Acest fapt este corect deoarece avem patru nregistr ari introduse. In continuare vom introduce 3 nregistr ari: Record Number: 2 UNU: DOI: ANA 1

Record Number: 3 UNU: DOI: PETRE 2

Record Number: 4 UNU: DOI: SORIN 4

Record Number: 5 UNU: DOI: __________ __

23 In acest moment act ion am tasta ESC. In consecint a obt inem prompterul Guru: Guru> si vrem s a vizualiz am din nou tot tabelul: Guru>browse Efectul pe monitor: Record Number: 1 UNU: DOI: UNU 1

Record Number: 2 UNU: DOI: ANA 1

Record Number: 3 UNU: DOI: PETRE 2

Record Number: 4 UNU: DOI: SORIN 4

24 Record Number: 5 UNU: DOI: DOI 2

Record Number: 6 UNU: DOI: TREIA 31

Record Number: 7 UNU: DOI: Guru> Sunt de ret inut din executarea acestor operat iuni urm atoarele observat ii: Utilizarea cuv antului records n loc de record n comanda CREATE. Utilizarea comenzii browse f ar a a se specica numele tabelului la care se refer a. Acest fapt este explicat prin aceea c a exist a un singur tabel in use si n consecint a comanda de vizualizare se refer a implicit la acest tabel. Intercalarea c ampurilor n instruct iunea CREATE care utilizeaz a parametrul prior 2. PATRUA 41

25 In directorul n care lucr am constat am c a exist a sierul tab.itb si nu exist a nici un sier cu numele tabel1.itb. S a presupunem c a n acela si director avem urm atorul program, denire1.ipf: DEFINE tabel1; FIELD unu STR 10 USING "%10a"; FIELD doi INT USING "dd"; ENDDEF

La comanda: Guru>perform definire1

sistemul r aspunde cu mesajul File already exists: tab.itb (definire : 1)

Explicat ia const a n faptul c a numele programului are lungimea 9. Lu andu-se primele 8 caractere, n locul programului se va lua n considerare tot primul program, denire.ipf.

26 Dac a redenumim programul denire1.ipf cu numele def1.ipf, dup a execut ia acestuia se constat a aparit ia sierului tabel1.itb. S a presupunem n continuare urm atoarele act iuni pentru sierul tab.itb: Guru>browse range 2,4 Sistemul r aspunde as and pe monitor: Record Number: 2 UNU: DOI: ANA 1

Record Number: 3 UNU: DOI: PETRE 2

Record Number: 4 UNU: DOI: Guru> Obt inerea unei nregistr ari existente n tabel si a sarea valorilor ei se face cu comanda OBTAIN. Forma ei este: Comanda OBTAIN OBTAIN pozitie OBTAIN pozitie RECORD FROM nume_tabel SORIN 4

27 OBTAIN pozitie RECORD FROM nume_tabel FOR conditii unde pozitie poate avea una din valorile specicate n Tabelul 7 si Tabelul 8. De exemplu, comanda: OBTAIN NEXT RECORD FROM angajati\ FOR Salbrut<1000000 & Varsta>30 obt ine urm atoarea nregistrare din tabelul angajati, care satisface condit iile specicate. Rezultatul unei comenzi OBTAIN este inuent at de valoarea variabilei de mediu E.SUPD. Dac a aceast a variabil a are valoarea TRUE, atunci este suprimat a a sarea pe ecran a nregistr arii obt inute. Variabila de mediu E.SUPD este de tip LOGIC si implicit are valoarea FALSE. Inregistrarea obt inut a n urma execut iei instruct iunii OBTAIN devine nregistrare curent a. Valorile c ampurilor nregistr arii curente pot accesate si setate. De exemplu, atribuirea angajati.nroreluc:=10 seteaz a c ampul nroreluc al nregistr arii curente din tabelul anga- jati.

28

FIRST LAST num

obt ine prima nregistrare din tabel obt ine ultima nregistrare arat a a c atea nregistrare din tabel se consider a; dac a num este mai mare dec at num arul total de nregistr ari atunci se consider a ultima nregistrare

PRIOR num

consider a nregistrarea aat a cu num pozit ii naintea celei curente. Dac a num este prea mare atunci se consider a prima nregistrare. Dac a num este omis atunci se ia valoarea 1

NEXT num

obt ine nregistrarea num dup a cea curent a; dac a num este prea mare atunci se consider a ultima nregistrare; dac a nu se precizeaz a num atunci se consider a c a valoarea acestui parametru este implicit 1

Tabelul 7: Parametrul pozitie n comanda OBTAIN

29 FROM nume-tabel precizeaz a numele tabelului; dac a lipse ste acest parametru, se consider a tabelul default. FOR conditii indic a faptul c a nregistrarea solicitat a cate Tabelul 8: Parametrul pozitie n comanda OBTAIN Dac a nici o inregistrare nu satisface conditiile declarate n instruct iunea OBTAIN atunci variabila utilitar a #FOUND ia valoarea FALSE, altfel ea este TRUE. Sortarea elementelor unui tabel se realizeaz a cu comanda SORT Sintaxa ei este urm atoarea: SORT directie expresii SORT nume_tabel BY directie expresii SORT nume_tabel TO "nume_fisier" BY directie expresii SORT nume_tabel TO "nume_fisier" BY directie expresii directie expresii
Comanda SORT

trebuie

s a

ndeplineasc a condit iile speci-

30 Comanda SORT permite sortarea nregistr arilor unui tabel dup a anumite criterii si crearea unui nou tabel n ordinea specicat a. Dac a numele tabelului nu este precizat, atunci este vorba de tabelul default. Un tabel poate sortat n mai multe feluri, mai multe versiuni sortate ale aceluia si tabel pot s a existe simultan n mai multe siere separate. Versiunea sortat a se depune n sierul indicat. Dac a nu se precizeaz a sierul tint a atunci se suprascrie tabelul original. Dac a nu exist a spat iu sucient pe disk at at pentru sierul original c at si pentru cel sortat, atunci sortarea va distruge tabelul original. Cantitatea de disk necesar a trebuie s a asigure o copie a tabelului plus un anumit spat iu necesar unor siere temporare GURU. Parametrii din comanda SORT sunt descri si n Tabelul 9. Dup a ce preciz am direct ia de sortare, trebuie s a preciz am expresiile care dau criteriile de sortare. Fiecare expresie poate cuprinde unul sau mai multe c ampuri. Ordinea n care sunt enumerate aceste expresii dau precedent a, de la st anga spre dreapta. De exemplu, comanda: SORT angajati BY AZ nume

31

BY directie

este

ASCENDING (sau AZ)

sau DESCENDING (sau ZA); cuv antul BY este opt ional expresii precizeaz a un c amp n tabel sau o expresie care implic a unul sau mai multe c ampuri n tabel nume_tabel numele tabelului pe care vrem s a l sort am TO nume_fisier ofer a n numele care sierului dac a g asim sortat a; lipse ste,

versiunea

TO nume_fisier cel original

atunci sortarea se face n

Tabelul 9: Parametrii comenzii SORT

32 sorteaz a nregistr arile din tabela angajati dup a c ampul nume. Deoarece nu a fost specicat un nume de sier, versiunea original a a tabelei angajati este nlocuit a cu versiunea sortat a.

C ampuri virtuale. Marcarea nregistr arilor

C ampurile unui tabel sunt de dou a feluri: actuale si virtuale. C ampurile actuale sunt cele care primesc valori de la utilizator. Cele virtuale primesc valori prin calcule f acute sub GURU. C ampurile virtuale se denesc la fel ca cele actuale cu deosebirea c a se precizeaz a modul de calcul a valorilor acestora. Tipul si dimensiunea acestora nu este necesar s a se precizeze. Precizarea modului de calcul a valorii unui c amp virtual se face specic and n comanda DEFINE a tabelului respectiv a urm atoarei structuri: FIELD nume_field =expresie

unde expresie este o expresie format a cu ajutorul altor c ampuri din tabel.

33 Pentru a considera un exemplu, s a presupunem c a dorim s a denim un tabel n care o nregistrare s a cuprind a urm atoarele informat ii cu privire la persoanele care lucreaz a la o ntreprindere dat a: numele persoanei, existent a contractului de munc a cu durata nedeterminat a, vechimea n munc a, num arul de ore lucrate, tariful pe or a si salariul persoanei. Se observ a c a nu toate aceste informat ii sunt independente. Intr-adev ar, salariul unei persoane rezult a din tariful pe or a, num arul de ore lucrate si vechimea n munc a. Pentru simplicare, vom presupune c a salariul se obt ine nmult ind num arul de ore lucrate cu tariful pe or a. Astfel, putem deni tabelul angajati: DEFINE angajati field nume str 10 using "%10a" labeled "Nume angajat" field stabil logic labeled "Contract de munca cu\ perioda nedeterminata - true" field vechime int using "%2n" field nroreluc num using "nnn.nn"\ labeled "Numarul de ore lucrate" field tarif num using "nnnnn" field salbrut =nroreluc*tarif labeled\ "Salariul brut, camp virtual" ENDDEF

34 Fiecare nregistrare cont ine n afara c ampurilor denite de utilizator un c amp special, de tip logic. Acest c amp este utilizat pentru a marca nregistrarea respectiv a. C ampul respectiv are valoarea precizat a n variabila utilitar a #MARK. Dac a valoarea c ampului este FALSE atunci nregistrarea nu este marcat a; dac a valoarea este TRUE atunci se consider a c a nregistrarea este marcat a. Marcarea nregistr arilor se face cu scopul prelucr arii acestora (de exemplu stergerea acelor nregistr ari din tabel). Marcarea nregistr arilor se face cu comanda MARK care are forma: MARK RECORD IN nume_tabel WITH expresie scop MARK RECORDS IN nume_tabel WITH expresie\ FOR conditii scop Automat c and se creaz a o nregistrare, ea este marcat a cu FALSE. Prin intermediul comenzii MARK putem marca cu TRUE nregistr arile unui tabel care ndeplinesc anumite condit ii. Parametrii din comanda MARK au urm atoarea semnicat ie: scop precizeaz a nregistr arile care vor marcate si poate avea una din forme prezentate n Tabelul 10.
Comanda MARK

35

CURRENT ALL NEXT NEXT num PRIOR

se marcheaz a nregistrarea curent a toate nregistr arile se marcheaz a urm atoarea nregistrare urm atoarele num se precedenta curente marcheaz a celei

PRIOR num

precedentele num

RANGE num1,num2 precizeaz a domeniul Tabelul 10: Parametrul scop n comanda MARK

36 expresie este o expresie logic a, nregistr arile din scop se marcheaz a cu valoarea acestei expresii; dac a expresie lipse ste atunci se consider a c a valoarea ei este TRUE. De exemplu, instruct iunea MARK RECORDS IN angajati WITH true FOR nume IN ["Popescu","Ionescu"] are ca efect marcarea acelor nregistr ari din tabelul angajati care au n c ampul nume valorile "Popescu" si "Ionescu". Toate nregistr arile unui tabel, marcate cu TRUE, sunt eliminate cu comanda COMPRESS. Forma comenzii COMPRESS este urm atoarea: COMPRESS nume_tabel Ca efect, sterge toate nregistr arile marcate cu TRUE, renumeroteaz a nregistr arile r amase si comprim a tabelul. Tabelul trebuie s a e nc arcat n memorie, nu exist a nregistrare curent a dup a compresie. De exemplu, instruct iunea COMPRESS angajati elimin a nregistr arile marcate cu TRUE din tabela angajati. Pentru a elimina un tabel n ntregime, se recomand a utilizarea comenzii DESTROY.
Comanda COMPRESS

37 O nregistrare marcat a TRUE se demarcheaz a cu comanda UNMARK Comanda UNMARK are urm atoarea form a sintactic a: UNMARK UNMARK scop UNMARK IN nume_tabel scop UNMARK IN nume_tabel FOR conditii scop UNMARK IN nume_tabel WHILE conditii scop Semnicat iile parametrilor acestei comenzi sunt prezentate n Tabelul 11. Comanda UNMARK demarcheaz a nregistr arile marcate cu TRUE care satisfac condit iile specicate. Tabelul trebuie s a e nc arcat n memorie. Dac a numele tabelului este omis, se folose ste tabelul implicit. Astfel, demarcarea nregistr arilor marcate cu TRUE n tabelul anga- jati, care ndeplinesc condit ia varsta<35 se obt ine cu comanda: UNMARK IN angajati FOR varsta<35 Comanda DEFAULT specic a ce tabel nc arcat n memorie va considerat ca tabel implicit. Sintaxa comenzii este: Comanda DEFAULT
Comanda UNMARK

38 scop precizeaz a care nregistr ari dorim s a le demarc am; aici putem s a trecem urm atoarele expresii: CURRENT, NEXT num, PRIOR num, RANGE numr1,numr2, ALL; dac a nu trecem scop atunci se demarcheaz a ALL FOR conditii demarcheaz a nregistr ari conditii WHILE conditii demarcheaz a toate nregistr arile p an a la acea nregistrare pentru care con ditii sunt false Tabelul 11: Parametrii comenzii UNMARK DEFAULT nume_tabel DEFAULT IS nume_tabel Dac a nu se folose ste comanda DEFAULT atunci tabelul specicat n prima comand a USE din sesiunea curent a devine tabelul implicit. Dac a se nchide tabelul implicit, atunci tabelul cel mai recent referit ntr-o comand a USE devine tabel implicit. Pentru a determina numele tabelului implicit se poate face apel la variabila utilitar a #DEFAULT, numai care acele satisfac

39 care cont ine numele tabelului implicit.

TEME

TEMA nr. 5.1 Realizat i urm atoarele: Scriet i o form a care sa ceara numele studentului, prenumele si nota la examen (pentru un num ar necunoscut de student i). Salvat i rezultatul ntr-un tabel care are trei c ampuri: Nume, Prenume, Promovat. Primele dou a c ampuri sunt de tip string, iar ultimul de tip logic. A sati apoi gracul situat iei de la examen (promovat i, nepromovat i). TEMA nr. 5.2 Societatea comercial a, ROM3 cump ar a si vnde autoturisme BMW, SKODA, AUDI si DACIA. Ea det ine o situat ie de tipul urm ator:

Marca auto

Ziua din lun a Pret cump. Pret v anz. Buc. cump. Buc. v and.

40 Creat i o baz a de date cu situat ia pe o s apt am an a. Scriet i un program care s a cear a de la utilizator numele a 3 zile si s a a seze pe acela si ecran gracul de la v anz ari si gracul de la cump ar ari (pe OX marca auto, pe OY situat ia)

S-ar putea să vă placă și