Download pdf - Indrumar FoxPro

Transcript
  • 8/3/2019 Indrumar FoxPro

    1/85

    BAZE DE DATE

    SUPORT PENTRU LABORATOR

    For Evaluation Only.Copyright (c) by Foxit Software Company, 2004Edited by Foxit PDF Editor

  • 8/3/2019 Indrumar FoxPro

    2/85

    Limbaje de programarei baze de date 1

    SISTEMUL DE GESTIUNE ABAZELOR DE DATE

    Principalele obiective ale capitolului sunt:

    Concepte principale din teoria relaionalCheia primarCheia extern

    Sisteme de gestiune a bazelor de date

    Sistemul de gestiune a bazelor de date (SGBD) estecomponenta unui sistem de baz de date care are rolul de a permitedescrierea i manipularea conform unui model de date.

    n momentul actual, cea mai mare parte a SGBD-urilor care seutilizeaz sunt bazate pe modelul relaional.

    VFP este un SGBD relaional cu limbaj propriu, care suportun nucleu extins din limbajul relaional SQL (Structured QueryLanguage).

  • 8/3/2019 Indrumar FoxPro

    3/85

    Suport pentru laborator2

    PRINCIPALELE CONCEPTE DIN TEORIA RELAIONAL

    Domeniul - reprezint un ansamblu de valori, caracterizatprintr-un nume. Domeniul se poate defini explicit, prin enumerarea

    tuturor valorilor care aparin acestuia (exemplu D1:{rou, galben,albastru}), sau implicit prin precizarea proprietilor pe care le auvalorile domeniului respectiv (exemplu: D2:{e/e N }

    Relaia - (tabela) reprezint un subansamblu al produsuluicartezian dintre mai multe domenii (D1xD2x) caracterizat printr-unnume. Reprezentarea folosit pentru o relaie (R) este tabloulbidimensional (tabela de date) de forma:

    Atributul este coloana unei relaii caracterizate printr-unnume. Fiecare atribut i ia valorile dintr-un domeniu. Mai multeatribute pot lua valori din acelai domeniu.

    Tuplul este linia dintr-o relaie i nu are nume. Valorile dintr-untuplu aparin produsului cartezian dintre domeniile relaiei (exemplutuplul v1, v2, ...,vn, unde v1D1, v2D2,...,vnDm, cu nm numerentregi).

    Schema relaiei este un ansamblu format din numele relaiei(R) urmat ntre parantaze rotunde de lista atributelor (Ai), pentrufiecare atribut precizndu-se domeniul asociat (Dj):

    R(A1:D1, A2:D2,...,An:Dm):unde nm numere ntregi.Cheia este un atribut sau un ansamblu de atribute cu ajutorul

    cruia se poate identifica un tuplu dintr-o relaie.Cheia este primar dac identificarea este unic, adic exist

    un singur tuplu cu o anumit valoare pentru cheie.

  • 8/3/2019 Indrumar FoxPro

    4/85

    Limbaje de programarei baze de date 3Cheia este simpl, dac este format dintr-un singur atribut.Cheia este compus dac este format dintr-un ansamblu de

    atribute.Cheia este extern ntr-o relaie R1, dac ansamblul de

    atribute care o definete ia valori din aceleai domenii ca i cheia

    primar a unei relaii R2 si dac are rolul de a stabili o legtura(asociere) ntre cele dou relaii.

    Prezentare comparativ a noiunilor privind organizareadatelor n memoria extern n fiiere, baze de date relaionale (BDR)i cele utilizate n VFP.

    Intrebri:

    1. Pentru tabelele FURNIZORI i FACTURI(ANEXA 1) care sunt cheile?2. Dai exemplu de un atribut i de un tuplupentru relaia FACTURI (ANEXA 1)

    Memextern

    FISIER CMP - CHEIE - -

    BDR RELAIE ATRIBUT ASOCIERE CHEIEPRIMAR

    CHEIEEXTERN

    DOMENIU

    VFP TABEL CMP ASOCIERE

    (LEGATURA)

    CHEIE

    PRIMAR

    CHEIE -

  • 8/3/2019 Indrumar FoxPro

    5/85

    Suport pentru laborator4

    GENERALITI DESPREAPLICAIA VISUAL FOX PRO

    Principalele obiective ale capitolului sunt:

    Prezentarea i utilizare aplicaia Visual Fox ProBaze de date

    Crearea, consultarea i actualizarea tabelelor

    Visual Fox Pro (VFP) este un limbaj specializat n prelucrareadatelor, grupate n baze de date, permind ntregistrarea,pstrarea, regsirea i analiza cu uurin a acestora. O baz dedate reprezint o colecie de informaii - de exemplu nume, adrese,produse, facturi care pot fi gestionate cu ajutorul unor aplicaiispecifice, printre care i Visual Fox Pro. Pentru o mai bunorganizare a bazelor de date sau a celorlalte obiecte, acestea suntgrupate ntr-un proiect, care reprezint

    de asemenea

    i baza

    realizrii formatului distribuibil (executabil).

  • 8/3/2019 Indrumar FoxPro

    6/85

    Limbaje de programarei baze de date 5UTILIZAREA APLICAIEI VISUAL FOX PRO

    1. Clic pe Start2. Activai opiunea Programs3. Clic pe pictograma aplicaiei Visual Fox Pro

    VFP dispune de o fereastr principal care cuprinde:

    Elementele ferestrei VFP

    Proiectele sunt formate din mai multe obiecte:Obiect Descriere

    Tabelele sunt formate din cmpuri (coloane) careformeaz structura tabelei i nregistrri (rnduri) reprezentnd coninutul tabelei. n cadrul fiecrui cmpexist mai multe valori.

    O baz de date trebuie s conin cel puin o tabel.

    Interogri ale tabelelor sau bazelor de date, respectivdecuparea i prezentarea datelor n funcie de anumitecondiii.

    Formularele reprezint ferestre personalizate care ofer unacces i o vizualizare facil a datelor dintr-o tabel sau ointerogare.

    Rapoartele prezint datele dintr-o tabel sau o interogarentr-un format imprimabil.

    bar deinstrumente

    bar de meniu

    fereastr de comenzi

  • 8/3/2019 Indrumar FoxPro

    7/85

    Suport pentru laborator6CREAREA UNUI PROIECT

    Pentru realizarea unui proiect, se procedeaz astfel:1. Clic pe meniul File2. Se activeaz opiunea New

    3. Se bifeaz opiunea Project4. Clic pe butonul New File5. Se atribuie un nume proiectului i se salveaz n locaia dorit.

    Crearea unui nou proiect

    VFP pune la dispoziia utilizatorilor un coordonator al ntregiiactiviti denumit ProjectManager, care dispune de o fereastr cu6 pagini ce grupeaz pe categorii elementele componente ale unuiproiect i o bar cu opiuni dependent de context.

  • 8/3/2019 Indrumar FoxPro

    8/85

    Limbaje de programarei baze de date 7

    Fereastra Project Manager fr tabele sau baze de date

    n cazul n care fereastra Project Manager se nchide,

    redeschiderea acesteia se realizeaz prin alegerea din meniul File aopiunii Openi apoi prin cutarea proiectului dorit n locaia n carea fost salvat.

    CREAREA I CONSULTAREA UNEI TABELE

    Crearea tabelelor se realizeaz n dou etape:I. Crearea structurii tabelelor (creare cmpuri);

    II. Crearea coninutului tabelei (ncrcarea informiilor).

    Pentru crearea structurii unei tabele se procedeaz astfel:1. Se deschide/creaz un proiect.2. Din fereastra Project Manager se execut clic pe pagina Data.3. Se execut clic pe opiunea Free Tables, apoi pe butonul Newi

    New Table.4. Se atribuie o denumire tabelei i se allege locai n care va fi

    salvat. n urma acestei aciuni rezult o fereastr denumitTable Designer.

    n fereastra Table Designer exist 3 pagini:

  • 8/3/2019 Indrumar FoxPro

    9/85

    Suport pentru laborator8

    Fereastra Table Designer

    Fields(pagina decmpuri);

    Indexes (pagina deindeci);

    Table (tabele),cu informaiidespre tabel.

    Pagina Fields cuprinde:

    denumire cmp (name); tip date (valori) aferente

    cmpului (type);

    mrimea maxim avalorilor (width);

    opiunea specific tipului dedate numeric (decimal);

    indeci (index);

    indicatorul Null (dac nuexist momentan date).

    Datele sunt de mai multe tipuri: numeric (numeric, real, integer,currency, double); iruri de caractere; logic; dat calendaristic;moment de timp; memo i general.

    La acionarea butonului OK utilizatorul este interoga dac doretes introduc date n tabel, iar la alegerea opiunii YES se potintroduce informaii.

    Fereastra de confirmare

  • 8/3/2019 Indrumar FoxPro

    10/85

    Limbaje de programarei baze de date 9

    La revenirea n Project Manager (PM) se observ la rubricaFree tables semnul + care arat faptul c au fost create tabelelibere (neaparinnd unei baz de date).

    Feareastra Project Manager cu o tabel

    n partea din dreapta a ferestrei PM, n pagina Data seobserv, exist mai multe butoane pentru diverse opiuni, astfel:

    new creare tabel nou; add adugare tabel

    creat anterior; modify modificare

    structur tabel;

    browse vizualizarenregistrri tabel;

    remove eliminare/tergere tabel

    din proiectul curent; build.

    Consultarea coninutului unei tabele se realizeaz astfel:1. n Project Manager, n pagina Data se selecteaz tabela

    dorit.2. Se execut clic pe butonul Browse.

    ACTUALIZAREA STRUCTURII UNEI TABELE

    Actualizarea structurii unei tabele, similar cu actualizareaconinutului, este marcat de trei operaii: adugare, modificare itergere a nregistrrilor, toate implicnd vizualizarea iniial astructurii tabelei cu ajutorul butonului/comenzii Modify/Modifystructure.

    Buton pentru

    acces lastructuratabelei/bazeide date

    Butonpentruacces laconinutul

    tabelei

  • 8/3/2019 Indrumar FoxPro

    11/85

    Suport pentru laborator10A. Adugarea i modificarea cmpurilor se realizeaz astfel:

    1. Din fereastra Project Manager se execut clic pe pagina Dataise alege denumirea tabelei care trebuie actualizat.

    2. Se execut clic pe butonul Modify.

    3. Se realizeaz direct aciunea dorit.

    B. tergerea cmpurilor se realizeaz astfel:1. Din fereastra Project Manager se execut clic pe pagina Dataise alege denumirea tabelei care trebuie actualizat.

    2. Se execut clic pe butonul Modify.3. Se execut clic pe denumirea cmpului care se dorete a fi tersi apoi pe butonul Delete.

    ACTUALIZAREA CONINUTULUI UNEI TABELEActualizarea coninutului unei tabele este marcat de trei operaii:adugare, modificare i tergere a nregistrrilor, toate implicndvizualizarea iniial a coninutului tabelei cu ajutorulbutonului/comenzii Browse.

    A. Adugarea nregistrrilor se realizeaz astfel:

    Pentru a aduga o singur nregistrare:1. Din fereastra Project Manager se execut clic pe pagina Dataise alege tabele care trebuie actualizat.

    2. Se execut clic pe butonul Browse.3. Din meniul Table se activeaz opiunea Append New Recordise adaug o nregistrare.

    Pentru a aduga mai multe nregistrri:1. Din fereastra Project Manager se execut clic pe pagina Dataise alege tabele care trebuie actualizat.

    2. Se execut clic pe butonul Browse.3. Din meniul View se activeaz opiunea Append Mode i seadug, rnd pe rnd mai multe nregistrri.

    B. Modificarea nregistrrilor se realizeaz dup cum urmeaz:

    Pentru a modifica independent nregistrrile:

  • 8/3/2019 Indrumar FoxPro

    12/85

    Limbaje de programarei baze de date 111. Din fereastra Project Manager se execut clic pe pagina Dataiapoi pe butonul Browse efectundu-se apoi modificasrea pentrunregistrarea dorit.

    Pentru a modifica nregistrrile n funcie de anumite criterii

    1. Din fereastra Project Manager se execut clic pe pagina Datai apoi pe butonul Browse.2. Din meniul Table se activeaz opiunea Replace Field.3. Rezult o fereastr n care la opiunea Field... With... (se alegecmpul n care va fi modificat cu informaia) completndReplacement Criteria (domeniul nregistrrilor = totalitateanregistrrilor afectate de execuia unei comenzi).

    Vizualizarea coninutului tabelei i modificarea nregistrrilor

    Stabilirea domeniului nregistrrilor se face :b. static (independent de informaiile coninute n nregistrri),

    utiliznd clauzele: All se refer la toate nregistrrile; Next de exemplu urmtoarele 4 nregistrri ncepnd

    cu nregistrarea curent; Rest se refer la nregistrarea curenta i la toate

    celelalte nregistrri pn la sfritul tabelei; Record nregistrarea a patra, de exemplu.

    c. dinamic (n funcie de informaiile coninute n nregistrri)utiliznd:

  • 8/3/2019 Indrumar FoxPro

    13/85

    Suport pentru laborator12 for se refer la toate nregistrrile din tabel

    pentru care condiia este adevarat; while se refer la nregistrrile cuprinse ntre

    nregistrarea curent i prima nregistrare pentru carecondiia este fals.

    C. tergerea nregistrrilor se realizeaz n dou moduri

    a) tergere logic, acest tip de tergere permind recuperareanregistrrilor.

    1. Se vizulizeaz coninutul tabelei.2. Se acioneaz cu mouse-ul spaiul de tergere aflat n stnga

    nregistrrii care se dorete a fi tears logic, moment n care nregistrarea va fi marcat. nregistrarea poate fi recuperat

    executnd un clic pe celai spaiu.

    tergerea logic a nregistrrilor

    Pentru tergerea unor nregistrri care ndeplinesc o anumitcondiie se utilizeaz din meniul Table opiunea Delete Records. nfereastra rezultat se stabilete domeniul nregistrrilor.

    b) tergere fizic, acest tip de tergere nepermind recuperareanregistrrilor.

    1. Se vizualizeaz coninutul tabelei.2. Se terg logic nregistrrile dorite.3. Din meniul Table se alege opiunea Remove Deleted Records

    apoi se execut clic pe butonul Yes.

  • 8/3/2019 Indrumar FoxPro

    14/85

    Limbaje de programarei baze de date 13

    Confirmarea tergerii fizice a unei nregistrri

    Intrebri:

    Care sunt componentele unei tabele?Cum se construiete o tabel n Visual Fox Pro?Ce nseamn actualizarea coninutului uneitabele? Cum se actualizeaz coninutul uneitabele?

    Prezentati modul de vizualizare a coninututluiunei tabele.Prezentai modul de actualizare a structurii uneitabele.

    Studiu individual

    Aplicaia 1: Creare i actualizare tabel.

    APLICAIA 1

    Creai o tabel urmtoarea structur:

    Nume C 30Prenume C 30

    Cod N 3Oras C 20Medie N 6 ; 2Admis L

  • 8/3/2019 Indrumar FoxPro

    15/85

    Suport pentru laborator14i cu urmtorul coninut :Nume Prenume Cod Oras Medie AdmisIonescu Maria 1 Iasi 9.27Vlad Mirela 8 Deva 9.50Georgecu Ana 5 Cluj 8.85

    Popescu Denisa 4 Arad 9.33Rauta Andreea 6 Deva 9.50Stanciu Roxana 2 Deva 9.10Radulescu Ruxandra 3 Cluj 9.29Matei Iuliana 7 Ploiesti 9.60

    a) S se adauge un nou cmp, denumit Admis.

    b) Se presupune c doar candidatele cu medii peste 9.25 au fostadmise. S se completeze valorile corespunztoare pentru

    cmpul Admis.

    c) Candidatele din Deva sunt de fapt din Bucureti. S se modificevalorile corespunztoare din cmpul ora, stabilind domeniulnregistrrilor cu for.

    d) S se adauge nregistrarea:

    Cretulescu Alexandra 9 Orastie 8.00 F

    e) S se tearg logic nregistrrile aferente candidatelor care auobinut medie mai mic dect 9.10, utiliznd opiunea DeleteRecord i stabilind domeniul nregistrrilor cu for.

    f) S se tearg fizic nregistrrile terse logic la punctul anterior.

  • 8/3/2019 Indrumar FoxPro

    16/85

    Limbaje de programarei baze de date 15

    Baze de date. Sortare. Indexare

    Principalele obiective ale capitolului sunt:

    Crearea unei baze de datenelegerea conceptelor de sortare i indexarenelegerea noiunii de index. Tipuri de indeci

    Validare la nivel de cmp i nregistrare

    CREAREA UNEI BAZE DE DATE

    O baz de date este format din una sau mai multe tabele culegturi ntre ele i eventual secvene de cod. Pentru crearea uneibaze de date se parcurge urmtoarea succesiune de pai:1. Se creaz un nou proiect, rezultnd pagina Project Manager.2. Din pagina Data se selecteaz opiunea Databases, se executclic pe butonul New i se creaz o baza de date, rezultnd ofereastr denumit Database Designer.

    3. n fereastra Project Manager se execut click pe semnul +aprut n faa denumirii bazei de date. Se selecteaz opiuneaTablesi se execut clic pe butonul New.

  • 8/3/2019 Indrumar FoxPro

    17/85

    Suport pentru laborator16

    Fereastra Database Designer Fereastra Project Manager cu o

    tabeli o baz de date

    SORTAREA I INDEXAREA UNEI TABELE

    Sortarea reprezint ordonarea fizic a nregistrrilor unei tabele. nurma sortrii rezult o noua tabel n care nregistrrile suntaranjate ntr-o anumita ordine.Ordonarea fizic a nregistrrilor tabelei se realizeaz utilizndinstruciunea:

    sort on to Aceasta va fi aadar scris n fereastra de comenzi, urmat deapsarea butonului Enter de la tastatur.Pentru a vizualiza coninutul noii tabele, mai nti aceasta sedeschide, utiliznd comanda use . Seexecut comanda browse.

    Indexarea reprezint ordonarea logic a nregistrrilor unei tabele.n urma indexrii nregistrrile tabelei sunt vizualizate ntr-oanumit ordine, dat de index.

    Se pot stabili mai muli indeci dar numai unul este activ la unmoment dat.Indexul poate fi :

    Regular (normal) Unique (unic), adic ntr-un cmp pot fi introduse valori egale,

    dar prin alegerea acestui tip de index doar prima n ordineaapariiei va fi accesibil

  • 8/3/2019 Indrumar FoxPro

    18/85

    Limbaje de programarei baze de date 17 Primary (primar), adic cel care asigur identificarea unic a

    nregistrrilor unei tabele. Acest tip de index poate fi stabilitdoar dac tabela face parte dintr-o baz de date. Pentru otabel se poate stabili un singur index primar. Indexul primaroblig ca toate valorile din cmpul ales s fie distincte.

    Candidate (candidat), utilizat n cazul n care ntr-o tabela estenevoie de mai multe cmpuri cu valori distincte. Deoarece sepoate stabili doar un singur index primar, pentru celelaltecmpuri n care sunt necesare valori distincte, se aleg indecide tip candidat.

    MODUL DE STABILIRE A INDECILOR

    a) Din fereastra Project Manager se selecteaz denumirea tabelei

    care face parte din baza de date.b) Se execut un clic pe butonul Modify.c) n fereastra care rezult, denumit Table designer, n paginaFields se execut un clic pe cmpul care va fi stabilit ca index.d) Din opiunea Index se alege Ascending (cresctor) sauDescending (descresctor), adc valorile din cmpul respectiv vor fiordonate cresctor/descresctor.

    Fereastra Table Designer opiunile Ascending/Descending

    g) Din fereastra Table designer , pagina Indexes , optiunea Type

    se alege tipul de index dorit.

  • 8/3/2019 Indrumar FoxPro

    19/85

    Suport pentru laborator18

    Fereastra Table Designer tipuri de indeci

    MODUL DE ACTIVARE A INDECILOR

    a) Se vizualizeaza coninutul tabelei.b) Din meniul Table se selecteaz optiunea Properties. Din paginaIndex order se alege denumirea cmpului care se dorete a fiactivat.

    c) Se execut clic pe butonul OK.

    Fereastra de activare unui index

  • 8/3/2019 Indrumar FoxPro

    20/85

    Limbaje de programarei baze de date 19

    Alte opiuni aferente unei tabele dintr-o baz de date

    1. Se selecteaza denumirea tabelei din fereastra Project Manager,se executa Modify.

    2. n pafina Fields, n josul paginii exist anumite opiuni care vor fiutlizate dup cum urmeaz:

    Format: stabilete un format de editare pentru valorile unuicmp, de exemplu formatul a permite introducerea numai aliterelor i a cifrelor.

    Cum se procedeaz ?Se executa clic pe cmpul dorit i n opiunea Formatse scrie literaa.

    Input mask : permite stabilirea unei mti de intrare, deexemplu, stabilirea faptului c prima litera va fi majuscul

    Cum se procedeaza ?Se executa clic pe campul dorit i n opiunea Input mask sescrie : !aaaaaaaaaa.

    Caption : permite stabilirea unei denumiri mai lungi pentrucmpuri

    Cum se procedeaz ?Se execut clic pe cmpul cruia se dorete a se modifica

    denumirea i n opiunea Captionse scrie denumirea dorit, avndun numr mai mare de caractere dect cel permis n mod uzual.

    Field Validation : permite validarea la nivel de cmp, adicinterzice ieirea din acel cmp dac informaia introdus nu acorespuns unei cerine.

  • 8/3/2019 Indrumar FoxPro

    21/85

    Suport pentru laborator20Cum se procedeaz ?Se executa clic pe cmpul ales i n opiunea Rulese scrie condiia,n opiune Messageexistnd posibilitatea scrierii unui measaj.Observaie : mesajul va fi afiat cnd condiia de validare la nivelulcmpului nu este respectat.

    n pagina Table exist urmtoarele opiuni :

    Record Validation: se poate realiza validarea la nivel denregistrare

    Cum se procedeaz ?n opiunea Rulese scrie condiia, n opiune Messagese va scrieun mesaj corespunztor, aferent nclcrii condiiei.Obs : mesajul va fi afiat cnd condiia de validare la nivelulnregistrrilor nu este respectat.

    Insert trigger : limiteaz introducerea de noi nregistrriCum se procedeaz ?n opiunea Insert trigger se scrie condiia utiliznd, de exemplu,RECNO()< sau > o valoare.

    Update trigger : restricioneaz modificarea denumirii oricruicmp din tabel.

  • 8/3/2019 Indrumar FoxPro

    22/85

    Limbaje de programarei baze de date 21Cum se procedeaz ?n opiunea Update triggerse scrie .F.

    Delete trigger : interzice tergerea oricrei nregistrri dintabel, de exemplu se interzice tergerea unei nregistrri.

    Cum se procedeaz ?n opiunea Delete triggerse scrie RECNO()#

    Table comment: permite adugarea unui comentariu referitorla nregistrrile, structura sau utilitatea tabelei.

    Tot n cadrul acestei pagini se regsesc i informaii despre locaiape hard disk unde se afl tabela, precum i numrul de nregistrri ide cmpuri.

    Observaie:

    pentru a vizualiza data n ordine azi/luna/an, n fereastra decomenzi se execut comanda set date to dmy pentru a vizualiza anul de forma 1998 in loc de 98 se execut

    comanda set century on

    Intrebri:

    Care este diferena dintre o tabeli o baz dedate?Ce nseamn sortarea? Dar indexarea?

    Care sunt diferenele dintre cele douconcepte?Ce semnific noiunile de validare la nivel decmp i validare la nivel de nregistrare?

    Studiu individual

    APLICAIA 2: Creare baz de date, creare

    tabel, stabilire i activare indeci, utilizareaopiunilor suplimentare privind tabelele (validarela nivel de cmp i la nivel de nregistrare).

  • 8/3/2019 Indrumar FoxPro

    23/85

    Suport pentru laborator22APLICAIA 2

    S se creeze baza de date denumit STUDENT n care seafl o tabel cu urmtoarea structur:

    Marca N 4Nume C 30Prenume C 30Oras C 20Data_ang D 8Salariu N 10

    i cu urmtorul coninut :

    Marca Nume Prenume Oras Data_ang Salariu

    1 Ionescu Maria Iasi 11.01.00 50013 Vlad Mirela Deva 04.04.99 600134 Radu Andrei Cluj 12.07.03 350140 Stan Denisa Arad 03.11.01 3807 Rauta Andreea Deva 07.30.00 65018 Stanciu Alex Brasov 08.15.98 40039 Radulescu Ruxandra Cluj 09.16.00 26057 Matei Iuliana Ploiesti 10.10.02 390241 Cretulescu Alexandra Orastie 02.11.03 100114 Filip Carmen Oradea 03.01.02 850

    1. S se sorteze tabela. S se vizualizeze coninutul tebeleirezultate.

    2. S se stabileasc urmtorii indeci: marca index de tip primari ora index de tip normal.

    3. S se activeze pe rnd indecii stabilii la puncul anterior.4. S se stabileasc pentru cmpul oraformatul a.5. s se stabileasc faptul c pentru cmpul ora prima liter va fi

    majuscul.6. S se stabileasc pentru cmpul ora o denimre mai lung,

    respectiv: Locul nasterii angajatului7. Regula de validare la nivelul cmpului marca nu permite valorimai mici dect 250. S se stabileasc acest reguli, n cazul n care aceasta este nclcat s se afieze mesajul: Marcatrebuie sa fie mai mica decat 250.

    8. Introducei o nou nregistrare n care valoarea din cmpulmarca s ncalce regula. Ce se ntmpl?

  • 8/3/2019 Indrumar FoxPro

    24/85

    Limbaje de programarei baze de date 239. Regula de validare la nivelul nregistrrilor stabilete ca salariul

    snu fie mai mic dect 300. S se stabileasc acest reguli, n cazul n care aceasta este nclcat s se afieze mesajul:Salariul trebuie sa fie mai mare decat 300.

    10. Introducei o nou nregistrare n care valoarea din cmpul

    salariu s ncalce regula. Ce se ntmpl?11. Limitai introducerea de noi nregistrri la 14 i apoi introducei onou nregistrare. Ce se ntmpl?

    12. Restricionai modificarea denumirii oricrui cmp din tabel.Verificai.

    13. Interzicei tergerea primei nregistrri. Verificai.14. Adugai urmtorul comentariu referitor la tabel: Aceasta tabela

    este utilizata pentru evidenta salaratilor firmei ALFA SRL, de lainfiintare pana in prezent.

  • 8/3/2019 Indrumar FoxPro

    25/85

    Suport pentru laborator24

    BAZE DE DATE. LEGTURI NTRE TABELE

    Principalele obiective ale capitolului sunt:

    Prezentarea tipurilor de legturi ntre tabeleleaparinnd unei baze de date

    ntre doua sau mai multe tabele aparinnd unei baze de date sepot stabili dou tipuri de legturi (relaii):1. legturi temporare : valabile n cadrul sesiunii de lucru curente2. legturi permanente : valabile ori de cte ori se deschide baza

    de date, se construiesc o singur dati fac parte integrant dinbaza de date

    La stabilirea unei relaii ntre dou tabele una dintre tabele are rolconductor, fiind denumit tabela-printe i cealalt tabel estecondus, fiind denumittabela-fiu.

    Legturile se stabilesc pe baza unui cmp comun celor dou tabele,pentru valori egale aflate n acele cmpuri. Pentru tabela-printeacest cmp se numete cheie primar, iar pentru tabela-fiu cmpulse numete cheie extern.

  • 8/3/2019 Indrumar FoxPro

    26/85

    Limbaje de programarei baze de date 25De asemenea se impune o precizare: cheia primar reprezint uncmp ale crui valori au rol unic de identificare a fiecrei

    nregistrri. De exemplu, CNP este cheie primar ntr-o tabel cuinformaii despre populaia unui ora, deoarece fiecare cetean areun singur CNP, deci fiecere nregistrare va fi unic, nu pot exista

    dou nregistrri cu aceeai valoare CNP.

    Stabilirea legturilor temporare i a legturilor permanentepresupune realizarea simultan a trei condiii:

    a) existena unei baze de date cu cel puin dou tabele ;b) n tabela-printe cmpul comun este index primarc) n tabela-fiu cmpul comun este stabilit ca fiind index de

    obicei normal.

    LEGTURI TEMPORARE1. Se creaz un nou proiect sau se deschide un proiect existent,

    coninnd o baz de date.2. Se verific existena indecilor sau se stabilesc indecii n cazul

    n care nu sunt stabilii.3. Din meniul Window se alege opiunea Data Session. Se

    execut clic pe butonul Open, pentru a deschide tabelele.4. Din fereastra obinut astfel, denumitOpen, se execut clic pe

    tabela care se dorete a fi deschis, bifnd de semenea

    opiunea Exclusive, apoi se execut clic pe butonul OK.

    Fereastra Data Session

    5. Se procedeaz similar pentru toate tabelele pentru care sedorete stabilirea unor legturi temporare.

  • 8/3/2019 Indrumar FoxPro

    27/85

    Suport pentru laborator266. Se execut clic pe denumirea tabelei-printe. Se execut clic pe

    butonul Relations.7. n fereastra rezultant, denumit denumitSet Index Order se

    execut OK, apoi n fereastra Expression Builder, n dreptulopiunii SET RELATION se scrie denumirea cmpului comun, n

    cazul n care aceast denumire nu exist deja.8. Se execut clic pe butonul OK. n acest moment ntre cele doutabele a fost realizat o legtur temporar de tip one-to-one.

    Fereastra Expression Builder

    9. n cazul n care se dorete realizarea unei legturi de tip one-to-many, se execut clic pe butonul 1 to many. Din fereastrarezultat, denumit Create One-To-Many Relationship sealege denumirea tabelei/tabelelor cu care se dorete a serealiza legtura, se execut clic pe butonul Move i apoi pebutonul OK.

  • 8/3/2019 Indrumar FoxPro

    28/85

    Limbaje de programarei baze de date 27

    Fereastra pentru crearea legturilor de tip one-to-many

    10. Se vizualizeaz n paralel coninutul tabelelor i se execut unclic pe cte o nregistrare din tabela-printe, n tabela-fiu fiindafiate doar nregistrrile care conin n index valoareanregistrrii curente din tabela-printe.

    Corespondena n modul Browse a valorilor comune ale unui index

    Se constat c principalul avantaj al legturii temporare este acelac n momentul n care n tabela-printe cursorul este mutat pe o nregistrare, n tabela-fiu sunt afiate doar nregistrrile care coninvaloarea din cmpul comun aferent nregistrrii din tabela-printe.

    LEGTURI PERMANENTE

    1. Se deschide fereastra Database Designer, executnd un clic nfereastra Project Manager pe denumirea bazei de date i apoipe butonul Modify. n acest moment structura i indexul fiecreitabele pot fi vizualizate.

  • 8/3/2019 Indrumar FoxPro

    29/85

    Suport pentru laborator282. Se execut un clic pe denumirea indexului primar corespunztor

    din tabela-printe i, prin metoda drag-and-drop se plaseazcursorul pe denumirea corespunztoare a indexului din tabela-fiu, elibernd cursorul. Se constat realizarea unei legturipermamante.

    Realizarea unei legturi permanente

    Stabilirea unei legturi permanente permite stabilirea integritiirefereniale. O restricie de integritate referenial se refer la faptulc n tabela-fiu nu pot exista nregistrri n care n cheia extern sfie nregistrate valori care nu se afl n mulimea valorilor cheiiprimare din tabela-printe.

    De exemplu, dac se dau dou tabele FACTURI [numar_factura,data_factura, cod_client] i CLIENI [cod_client, nume_client,localitate], nu poate exista o nregistrare (numar_factura: 12,data_factura: 12/06/2005, cod_client: 111) dac n tabela CLIENInu exist un client cu cod 111, altfel spus, nu poate exista o facturemis de un client care nu exist.

    Integritatea referenial se stabilete astfel.1. Se execut un clic dreapta pe legtura creat i se alege

    opiunea Edit Referential Integrity.2. n fereastra rezultat, se pot stabili trei tipuri de reguli referitoare

    la nregistrrile din ambele tabele: Rules for Updating reguli pentru actualizare; Rules for Deleting reguli pentru tergere; Rules for Inserting reguli pentru inserare.

  • 8/3/2019 Indrumar FoxPro

    30/85

    Limbaje de programarei baze de date 29

    Fereastra Referential Integrity Builder

    Pentru primele dou opiuni, exist trei posibiliti: cascade,restricti ignore.

    Cascade se refer la faptul c atunci cnd o nregistrareconinnd o valoare ale indexului primar din tabela-printe estemodificat/tears, se realizeaz actualizarea/tergerea automat anregistrrilor din tabela-fiu care conin acea valoare.

    Restrict se refer la faptul c nu este permismodificarea/tergerea unei nregistrri, i implicit a unei valor aindexului primar, atunci cnd n tabela-fiu se regsesc nregistrri

    care conin acea valoarea.Ignore se refer la posibilitatea actualizrii/tergerii

    independente a nregistrrilor din cele dou tabele n momentulmodificrii/tergerii unei valori a indexului primar.

    Pentru opiunea Rulea for Inserting exist dor dou posibiliti:restrict i ignore, referindu-se la faptul c nu este permis/estepermis adugarea unei noi nregistrri n tabela-fiu dac valoareanregistrat n index nu exist n mulimea valorilor indexului primarcorespunztor tabelei-printe.

    Studiu individual

    Aplicaia 3: Creare legturi temporare ipermamante ntre tabele aprinnd unei baze dedate.

  • 8/3/2019 Indrumar FoxPro

    31/85

    Suport pentru laborator30APLICAIA 3

    S se realizeze un nou proiect. S se realizeze o baz dedate. S se creeze urmtoarele tabele, aparinnd bazei de date:

    Structur

    Cod_client C 4Nume C 20Oras C 10

    Index primar, ascendent :cod_client

    Coninut

    Cod_client Nume OrasAMP Amep BrasovCOR CorrImpex GalatiDAV Daval BrasovERG Energo BucurestiHTR Hatrom Brasov

    Structur

    Nr_fact N 10Cod_client C 4Data D 8

    Index primar, ascendent :nr_fact

    Index normal, ascendent:cod_client

    Coninut

    Nr_fact Cod_client Data23 AMP 05/11/05116 HTR 04/12/05315 COR 06/04/05117 DAV 12/03/0418 ERG 12/05/0456 ERG 11/07/05

    12 AMP 02/10/04

    Structur

    Cod_produs N 10Den_produs C 30PU N 10Cant N 10Nr_fact N 10

    Index primar,ascendent :cod_produs

    Index normal,ascendent: nr_fact

    Coninut

    Cod_produs

    Den_produs PU Cant Nr_fact

    1 Apaminerala

    2 500 56

    2 Biscuiti 1 55 116

    3 Cereale 4 15 3154 Portocale 5 10 1165 Servetele 1 150 1176 Ciocolata 3 40 1167 Compot 2 14 188 Iaurt 3 12 239 Paine 1 100 12

  • 8/3/2019 Indrumar FoxPro

    32/85

    Limbaje de programarei baze de date 31

    3. S se stabileasc legturi temporare ntre cele trei tabele.4. S se stabileasc legturi permamante ntre cele trei tabele.5. S se stabileasc urmtoarele restricii de integritate

    referenial: cascade pentru tergere i restrict pentru inserarea

    unei noi nregistrri.6. S se verifice integritatea referenial prin tergerea uneinregistrri existente i prin adugarea unei noi nregistrri.

  • 8/3/2019 Indrumar FoxPro

    33/85

    Suport pentru laborator32

    INSERAREA, MODIFICAREA I TERGEREALINIILOR

    Principalele obiective ale capitolului sunt:

    Adugarea unei linii ntr-o tabelEditarea unor date dintr-o tabeltergerea unor date dintr-o tabel

    ADUGAREA UNEI LINII

    Comanda SQL de adugare de noi linii este INSERT, careare, n modul de lucru cel mai puin pretenios urmtorul format:

    INSERT INTO TABEL [(ATRIBUT1, ATRIBUT2,... .)] VALUES

    (VALOARE_ATRIBUT1, VALOARE_ATRIBUT2,... .)

    n cazul tabelei ANGAJATI se poate introduce o nou lineastfel:

    Se d tabela Angajai cu urmatoarele date:

  • 8/3/2019 Indrumar FoxPro

    34/85

    Limbaje de programarei baze de date 33

    INSERT INTO ANGAJATI VALUES (11, 'RADU', 'Info', 250)

    iar tabela va arta astfel:

    STERGEREA LINIILOR

    Comanda SQL pentru tergerea uneia sau mai multor liniidintr-o tabel este DELETE

    DELETE FROM TABELA WHERE CONDITIE

    Dac dorim s tergem ultima nregistrare introdus vomavea:

    DELETE FROM ANGAJATI WHERE NUME='RADU'

  • 8/3/2019 Indrumar FoxPro

    35/85

    Suport pentru laborator34

    n cazul Visual FOXPRO este nevoie de comanda PACK ca

    tergerea s fie efectiv, astfel:PACKIar tabela va arta astfel:

    MODIFICAREA VALORILOR UNOR ATRIBUTE

    Pentru a modifica valoarea unuia sau mai multor atribute saumai multe linii dintr-o tabel se folosete comanda UPDATE cuformatul general:

    UPDATE TABELA SET ATRIBUT1=EXPRESIE [,ATRIBUT2=EXPRESIE2.... .] WHERE PREDICAT

  • 8/3/2019 Indrumar FoxPro

    36/85

    Limbaje de programarei baze de date 35

    Modificarea se va produce pe toate liniile tabelei carendeplinesc condiia formulat prin predicat.

    n cazul tabelei ANGAJATI dac dorim schimbarea salariului

    n 1000 pentru angajata GABRIELA vom avea:

    UPDATE ANGAJATI SET SAL_BRUT=1000 WHERENUME='Gabriela'

    Studiu individual

    Aplicaia 4: Introducere, tergere i modificareaunor date dintr-o tabel

    APLICAIA 4

    1. Creai tabela FACTURI (ca n ANEXA 1)2. n tabela FACTURI (ANEXA 1) adugai urmtoarele date:

  • 8/3/2019 Indrumar FoxPro

    37/85

    Suport pentru laborator36

    3. n tabela FACTURI modificai VALOAREA la 75000 pentru toatefacturile care au valoare mai mare de 10.000.

    4. tergei toate facturile pentru care cod_furn este c1.5. Modificati cod_furn n n99 pentru facturile a cror valoare este decel puin 8000.6. tergeti toate nregistrrile pentru care nr_factur este mai mic de4000.7. Stergeti toate datele din tabela FACTURI.8. Introducei cinci facturi noi utiliznd INSERT i cinci facturiutiliznd BROWSE.

  • 8/3/2019 Indrumar FoxPro

    38/85

    Limbaje de programarei baze de date 37

    NUCLEUL SQL N VISUAL FOX PRO

    Principalele obiective ale capitolului sunt:

    Introducere n conceptul de interogarea bazelor de date

    Sintaxa i utilizarea comenzii SELECT

    CONCEPTUL DE INTEROGARE I COMANDA SELECT

    Extragerea informaiilor din una sau mai multe tabele liberesau aparinnd unei baze de date, pe baza unor criterii definite deutilizator poart denumirea de interogare.

    Visual Fox Pro include un set de comenzi ale limbajului SQL(Structured Query Language) care permite interogarea tabelelor ifurnizarea rezultatelor sub forma unor interogri, care pot fidepozitate la o destinaie precizat. Prin intermediul unei interigrise construiete o instruciune SELECT a acestui limbaj, care

    cuprinde ntregul mecanism de interogare al VFP.Rezultatele interogrilor se pot obine cu ajutorul unui

    generator denumit Query Designer, cu posibilitate de utilizare pebaza rubricii Queries din fereastra Project Manager, existndposibilitatea de a utiliza de asemenea i ajutorul oferit de VFP prinintermediul Query Wizard.

  • 8/3/2019 Indrumar FoxPro

    39/85

    Suport pentru laborator38O alt posibilitate de obinere a rezultatelor interogrilor este

    utilizarea comenzii Select, reprezentat de o sintax specific,comand care va fi executat n fereastra de comenzi.Exemplificarea utilizrii comenzii Select se va realiza utiliznd obaz de date cu informaii necesare organizrii sesiunii studeneti.

    PRINCIPALELE CLAUZE ALE FRAZEI SELECT

    Orice fraz de tip SELECT are trei clauze principale:SELECTFROMWHERE

    Dintre aceste trei clauze doar SELECT i FROM suntobligatorii n orice fraz.

    SELECIA I PROIECIA

    Clauza SELECT corespunde operatorului proiecie din algebrarelaional, fiind utilizat pentru desemnarea listei de atribute(coloane) din rezultat. Clauza FROM este cea n care suntenumerate relaiile din care vor fi extrase informaiile aferenteconsultrii. Clauza WHERE desemneaz predicatul selectiv alalgebrei relaionale (condiia), relativ la atribute ale relaiilor care

    apar n clauza FROM.La modul general, o consultare SQL poate fi prezentat subforma:

    select c1,c2,...,cnfrom r1,r2,...,rmwhere p

    unde:cj - reprezint coloanele rezultat;rj - reprezint relaiile ce trebuie parcurse;

    p - reprezint predicatul, condiia ce trebuie ndeplinit detupluri (linii) pentru a fi incluse n rezultat.

    Predicatul poate fi simplu sau compus (din mai multe condiii).Cnd clauza WHERE este omis se consider implicit c

    predicatul p are valoare logic ''adevrat'', astfel nct n rezultat vor

  • 8/3/2019 Indrumar FoxPro

    40/85

    Limbaje de programarei baze de date 39fi incluse toate liniile din tabel sau produsul cartezian al tabelelor,enumerate n clauza FROM.

    Dac n locul coloanelor c1,c2,...,cn apare simbolul *,rezultatul va fi alctuit din toate coloanele relaiilor specificate nclauza FROM.

    Atributele rezultatului preiau numele din tabela (tabelele)specificate n clauza FROM. Schimbarea numelui se realizeaz princaluza AS.

    exemplu:select c1,c2 as NUME_NOU from r1

    unde numele coloanei c2 devine NUME_NOU;

    SQL nu elimin automat liniile identice din rezultat, deci pentru

    ca fiecare linie s apar o singur dat este necesara utilizareaopiunii DISTINCT.

    exemplu:select distinct c1,c2 from r1

    n concluzie, o fraz SELECT, corespunde: unei selecii algebrice (clauza WHERE p) unei proiecii (SELECT ci) unui produs cartezian (FROM - r1 r2 ... rm)

    i conduce la obinerea unui rezultat cu n coloane, fiecare coloanfiind: un atribut din r1,r2,...,rm sau expresie calculat pe baza unoratribute din r1,r2,...,rm.

    Execuia unei fraze SELECT realizeaz un rezultat sub formtabelar.

    Rezultatul poate fi:1. o list (text)2. o tabel propriu-zis

    3. o tabel temporar4. o tabel derivat (imagine)5. o variabil masiv (tablou)

    Exemplu:Utilizm tabela ANGAJATI n care introducem urmtoarele

    date:

  • 8/3/2019 Indrumar FoxPro

    41/85

    Suport pentru laborator40

    Datele tabelei angajati.dbf

    1. Care sunt datele coninute n tabela angajati?

    select nr, nume, prenume, data_nasterii, sal_brut, cod_dep fromangajati

    sau:select * from angajati

    Rezultatele exemplului 1.1

    2. Care sunt numele salariailor i salariul brut?

    select nume, sal_brut from angajati

  • 8/3/2019 Indrumar FoxPro

    42/85

    Limbaje de programarei baze de date 41Rezultatele exemplului 1.2

    3. Care sunt numele salariailor i salariul brut, dar pentru coloanasal_brut denumim coloana salariu_brut?

    select nume, sal_brut as salariu_brut from angajati

    Rezultatele exemplului 1.3

    4. Afiai numele angajatilor i salariul brut, pentru salariaii care ausalariul brut mai mare de 700 lei

    select nume from angajati where sal_brut>700

    Rezultatele exemplului 1.4

    5. Care sunt datele salariailor care lucreaz n departamentulinformatic (cod_dep="info")?

    select * from angajati WHERE cod_dep="info"

    Rezultatele exemplului 1.5

  • 8/3/2019 Indrumar FoxPro

    43/85

    Suport pentru laborator42

    6. Care sunt datele salariailor care lucreaz n departamentulinformatic (cod_dep="info") i care au salariul brut mai mare de 700de lei?

    select * from angajati where cod_dep="info" and sal_brut>700

    Rezultatele exemplului 1.6

    7. Afiai numele salariailor i codul departamentului pentruangajatii care sunt fie n departamentul informatic (cod_dep="info")fie n departamentul contabilitate (cod_dep="cont")

    select nume, cod_dep from angajati where cod_dep="info" orcod_dep="cont"

    Rezultatele exemplului 1.7

    8. Afiai numele angajailor i data naterii pentru angajaii nscuidup 15-03-1980 (formatul pentru data este {^yyyy/mm/dd})

    select nume, data_nasterii from angajati where data_nasterii >{^1980/03/15}

    Rezultatele exemplului 1.8

    9. Afiai numele angajailor i data naterii pentru angajaii nscuintre 15-03-1980 i 20-05-1983

  • 8/3/2019 Indrumar FoxPro

    44/85

    Limbaje de programarei baze de date 43

    select nume, data_nasterii from angajati where data_nasterii >{^1980/03/15} and data_nasterii

  • 8/3/2019 Indrumar FoxPro

    45/85

    Suport pentru laborator44

    Intrebri:

    1. Care sunt clauzele principale ale uneiselecii?2. Care sunt clauzele obligatorii ale unei

    selecii?3. Cte tabele putem trece la clauza FROM?

    Studiu individual

    Aplicaia 5: Introducere de date, selecii simplei utiliznd condiii simple i compuse.

    APLICAIA 5

    1. Realizai o tabel FURNIZORI cu structura tabelei FURNIZORIdin ANEXA 1.2. Introduceti urmtoarele date:

    3. Care sunt furnizorii din Brasov?4. Care sunt furnizorii din Braov sau Bucuresti?

  • 8/3/2019 Indrumar FoxPro

    46/85

    Limbaje de programarei baze de date 455. Care sunt furnizorii care nu stau n Constana?6. tergei furnizorii care sunt din Bucureti.7. Introducei trei furnizori noi utiliznd INSERT.8. Modificai localitatea n Cluj pentru furnizorii din Constanta.

  • 8/3/2019 Indrumar FoxPro

    47/85

    Suport pentru laborator46

    Coloane, expresii

    Principalele obiective ale capitolului sunt:

    Definirea unor coloane noiRealizarea de calcule pe baza unor date din baza de

    date.

    O facilitate important n multe interogri SQL ine dedefinirea, pe lng atributele tabelelor, a unor coloane noi, pe bazaunor expresii. Clauza AS ermite denumirea coloanelor calculate sauredenumirea unor coloane ale tabelelor.

    De exemplu dac dorim s aflm care este TVA-ul aferentunei facturi, vom avea:

    In tabel FACTURI avem introduse urmtoarele date:

  • 8/3/2019 Indrumar FoxPro

    48/85

    Limbaje de programarei baze de date 47

    Datele tabelei FACTURI

    Pentru a afia valoarea tva-ului, precum i valoarea cu TVApentru fiecare factur vom avea selectul:

    select nr_factura, cod_furn, data_fact, valoare, valoare*19/100 asTVA, valoare*119/100 as val_totala from facturi

    i vom obine Query-ul:

    Rezultatele seleciei

    Dac stabilim c pentru fiecare factur pe care o facemtermenul scadent pentru plat este de 2 luni vom calcula datascadent astfel:

    select nr_factura, gomonth(data_fact,2) as data_scadenta fromfacturi

  • 8/3/2019 Indrumar FoxPro

    49/85

    Suport pentru laborator48

    Obinerea datei scadente pentru fiecare factur

    Funcia GOMONTH (data, nr_luni) returneaz o nou datplecnd de la data introdus la care adun un nr. de luni.

    Dac stabilim c pentru fiecare factur pe care o facemtermenul scadent pentru plat este de 60 de zile vom calcula data

    scadent astfel:

    select nr_factura, gomonth(data_fact,0)+60 as data_scadentafrom facturi

    Obinerea datei scadente pentru fiecare factur

    Intrebri:

    1. Cum putem s denumim coloana din rezultat?2. Cum putem obine o coloan nou utiliznd nselecie o condiie?

  • 8/3/2019 Indrumar FoxPro

    50/85

    Limbaje de programarei baze de date 49Studiu individual

    Aplicaia 6: Calcularea amortizrii lunare prinmetoda liniar.

    APLICAIA 6

    1. Realizai tabela MF dup structura tabelei MF din ANEXA 1.2. Introduceti urmtoarele date:

    3. Care sunt mijloacele fixe cu valoare mai mare de 30000?4. Dac PER_AMORT reprezint perioada de amortizare n ani,calculati care este valoarea amortizrii lunare liniare.5. Denumii coloana cu amortizarea lunar liniar AM_LUN.6. Care sunt mijloacele fixe care au amortizarea lunar mai mare de1000?7. Modificati perioada de amortizare n 5 pentru mijloacele fixe cucodul 10004.8. Calculai care este amortizarea lunar pentru "masina 2"9. Calculai amortizarea lunar liniar pentru mijloacele fixe

    cumprate de la furnizorul c1 sau c2.

  • 8/3/2019 Indrumar FoxPro

    51/85

    Suport pentru laborator50

    Funciile agregat: COUNT,SUM, AVG, MIN, MAX

    Principalele obiective ale capitolului sunt:

    Utilizarea funciilor Count, sum, avg. min, maxRealizarea unor noi coloane care s conin date

    obinute prin utilizarea funciilor de mai sus.

    Funcia COUNT contorizeaz valorile neutre ale unei coloanesau numrul de linii dintr-un rezultat al unei interogri, altfel spus, nrezultatul unei consultri, COUNT numr cte valori diferite deNULL are o coloan specificat sau cte linii sunt:

    De exemplu dac dorim s aflm cte facturi amvem n tabelaFACTURI (cte linii sunt) avem:

    select count (*) from facturi

  • 8/3/2019 Indrumar FoxPro

    52/85

    Limbaje de programarei baze de date 51

    Numrul de facturi din tabela FACTURI

    Sau de exemplu dac dorim s vedem cte facturi au valoareapeste 3000 vom avea:

    select count(*) from facturi WHERE valoare>3000

    Numrul de facturi din tabela FACTURI

    cu valoare mai mare de 3000Funcia SUM este una dintre cele mai utilizate funcii n

    aplicaiile economice, deoarece datele financiar-contabile i cele aleevidenei tehnico-operative sunt preponderent cantitative.

    De exemplu dac dorim s aflm care este valoarea total afacturilor din tabela FACTURI avem:

    select sum(valoare) from facturi

    Valoarea total a facturilor din tabela FACTURI

    Sau de exemplu dac dorim s aflm care este valoarea totala facturilor din tabela FACTURI a furnizorului cu cod_furm "c2"avem:

    select sum(valoare) from facturi where cod_furn="c2"

    Valoarea total a facturilor din tabela FACTURIa furnizorului cu cod_furm "c2"

  • 8/3/2019 Indrumar FoxPro

    53/85

    Suport pentru laborator52

    Funcia AVG (AVERAGE) calculeaz media aritmetic a uneicoloane prin divizarea sumei valorilor coloanei respective la numrulde valori nenule ale acesteia.

    De exemplu dac dorim s aflm care este valoarea medie afacturilor din tabela FACTURI avem:

    select avg(valoare) from facturi

    Valoarea medie a facturilor din tabela FACTURI

    Sau de exemplu dac dorim s aflm care este valoareamedie a facturilor din tabela FACTURI a furnizorului cu cod_furm"c1" avem:

    select avg(valoare) from facturi where cod_furn="c1"

    Valoarea medie a facturilor din tabela FACTURIa furnizorului cu cod_furm "c1"

    Deosebit de utile n diverse tipuri de analiz cele dou funciiMIN i MAX determin valoarea minim i maxim pentru ocoloan. Se pot folosi i pentru atribute de tip ir de caractere, cazn care elementul de comparaie este codul ASCII al caracterelor.

    De exemplu dac dorim care este valoare minim din tabelafacturi vom avea:

    select min(valoare) from facturi

    Valoarea minim din FACTURI

  • 8/3/2019 Indrumar FoxPro

    54/85

    Limbaje de programarei baze de date 53

    Sau de exemplu dac dorim care este valoare maxim dintabela facturi vom avea:

    select max(valoare) from facturi

    Valoarea maxim din FACTURI

    Dac dorim s aflm care este din punct de vedere alfabeticcod_furn cu cea mai mare valoare vom avea:

    select max(cod_furn) from facturi

    Valoarea maxim a cod_furn din FACTURI

    Studiu individual

    APLICAIA 7: Utilizarea funciilor: AVG; MIN;MAX; SUM; COUNT

    APLICAIA 7

    1. Realizai tabela FACTURI cu structura tabelei FACTURI dinANEXA 1.2. Introducei n tabela FACTURI urmtoarele date:

  • 8/3/2019 Indrumar FoxPro

    55/85

    Suport pentru laborator54

    3. Care este media valorii facturilor?4. Care este valoarea cea mai mare a unei facturi?5. Care este valoarea cea mai mic a unei facturi?6. Calculai valoarea medie a valorii facturilor dar nu cu AVG.7. Cte facturi avem n tabel?8. Cate facturi avem n tabel cu o valoare mai mare de 5000?9. Cte facturi avem n tabel cu o valoare ntre 4000 i 30000?(prin dou metode)10. Care este valoare medie a facturilor cu nr. 3525 i 3522?

  • 8/3/2019 Indrumar FoxPro

    56/85

    Limbaje de programarei baze de date 55

    Opiunea ORDER BY

    Principalele obiective ale capitolului sunt:

    Ordonarea datelor unei tabele dup unul sau maimulte atribute

    Una dintre caracteristicile modelului relaional este c niciordinea atributelor, nici ordinea liniilor n relaii nu reprezintimportan din punctul de vedere al coninutului informaional.

    ns n practic forma de prezentare a rezultatelor interogriiest important. Spre exemplu o list a localitilor dintr-o tabel estemai uor citit n ordine alfabetic.

    De exemplu dac dorim pentru tabela facturi s afim toatedatele ordonate dup cmpul cod_furn vom avea

    select * from facturi order by cod_furn

  • 8/3/2019 Indrumar FoxPro

    57/85

    Suport pentru laborator56

    Datele obinute n urma ordonrii dup cmpul cod_furn

    Aranjarea se poate face att cresctor (ASC) ct idescresctor (DESC). n plus se pot specifica mai multe coloanecare s serveasc drept criterii suplimentare de ordonare. Astfel, lavalori egale ale primului atribut, intr n aciune criteriul de "balotaj",care este al doilea atribut, etc.

    De exemplu dac dorim s ordonm datele din facturi ntidup cod_furn i apoi dup valoare (dup acest criteriudescresctor) vom avea:

    select * from facturi order by cod_furn, valoare desc

    Obinerea datelor ordonate dup cod_furn i apoidescresctor dup valoare

    Intrebri:

    1. Care este diferena ntre ORDER i SORT?2. Dup cte cmpuri putem ordona i cum?

  • 8/3/2019 Indrumar FoxPro

    58/85

    Limbaje de programarei baze de date 57

    Studiu individual

    APLICAIA 8: Ordonarea rezultatelor unei

    interogri.

    APLICAIA 8

    1. Realizai tabela MF dup structura tabelei MF din ANEXA 1.2. Introduceti urmtoarele date:

    3. Care sunt datele din tabela MF, ordonate alfabetic dupdenumire?4. Care sunt datele din tabela MF, ordonate alfabetic dup denumirei apoi dup valoare?5. Care este amortizarea lunar liniar pentru fiecare mijloc fix,datele fiind ordonate dup denumirea mijlocului fix?6. Afiai denimirea mijloacelor fixe, ordonat alfabetic pentru

    mijloacele fixe cu o valoare mai mare de 32000 inclusiv.7. Afiai alfabetic codurile furnizor - o singur dat.8. Care este valoarea cea mai mare unui mijloc fix?9. Care este valoare medie a amortizrii lunare a mijloacelor fixe?10. Cte mijloace fixe avem?

  • 8/3/2019 Indrumar FoxPro

    59/85

    Suport pentru laborator58

    OPERATORII BETWEEN, LIKE I IN

    Principalele obiective ale capitolului sunt:

    Utilizarea operatorilorBETWEEN

    LIKEIN

    Pentru formularea predicatului de selecie, SQL permiteutilizarea, pe lng >,=,

  • 8/3/2019 Indrumar FoxPro

    60/85

    Limbaje de programarei baze de date 59Date afiate utiliznd condiia BETWEEN

    Acelai rezultat il puteam obine i cu o condiie dubl:

    select * from facturi where valoare >= 4000 and valoare

  • 8/3/2019 Indrumar FoxPro

    61/85

    Suport pentru laborator60

    Furnizorii a cror cod_furn ncepe cu litera "c"

    De exemplu dac dorim s afim care sunt toi furnizorii acror cod_client ncepe cu litera "m" vom avea:

    select * from facturi where cod_furn like "m%"

    Furnizorii a cror cod_furn ncepe cu litera "m"

    De exemplu dac dorim s afim care sunt toi furnizorii acror cod_client are dou caractere i al doilea caracter este 5 vomavea:

    select * from facturi where cod_furn like "_5"

    Furnizorii a cror cod_furn are dou caracterei al doilea caracter este 5

    Atunci cnd se testeaz dac valoarea unui atribut estencadrabil ntr-o list de valori dat, n locul folosirii abundente a

    operatorului OR este mai elegant s se apeleze la operatorul IN.De exemplu dac dorim s afim facturile furnizorilor care au

    cod_furn c1, c3 i c4 avem:

    select * from facturi where cod_furn in ("c1","c3","c4")

  • 8/3/2019 Indrumar FoxPro

    62/85

    Limbaje de programarei baze de date 61

    Facturile furnizorilor care au cod_furn c1, c3 i c4

    Sau de exemplu dac dorim s selectm facturile care auvaloare de 500, 600, 5000 vom avea:

    select * from facturi where valoare in (500, 600, 5000)

    Facturile care au valoare de 500, 600, 5000

    Intrebri:

    1. Care este diferena ntre operatoriiBETWEEN i IN?2. Cu ce poate fi substituit operatorulBETWEEN?

    Studiu individual

    APLCAIA 9: Utilizarea operatorilor BETWEEN;LIKE i IN n calcularea unor date pe bazatabelei ANGAJATI.

    APLICAIA 9

    1. Realizai tabela SALARIATI pe baza structurii tabelei ANGAJATIdin ANEXA 1.

  • 8/3/2019 Indrumar FoxPro

    63/85

    Suport pentru laborator622. n tabel introducei urmtoarele date:

    3. Care sunt salariaii care au salariu cuprins ntre 550 i 1000?4. Care sunt angajaii care au salariu 600, 1000, 750, sau 300?

    5. Ci angajai avem?6. Care este salariul mediu?7. Care este numele salariatului cu salariul cel mai mare?8. Care sunt angajaii a cror nume ncepe cu litera M sau I?9. Ci angajai au prenumele din trei litere?10. Care sunt salariaii care nu au prenumele ION sau IOANA?

  • 8/3/2019 Indrumar FoxPro

    64/85

    Limbaje de programarei baze de date 63

    REUNIUNE, PRODUS CARTEZIAN

    Principalele obiective ale capitolului sunt:

    Prezentarea operatorului UNIONRealizarea produsului cartezian

    Primii trei operatori asambliti prezint operatori SQL dedicai:UNION, INTERSECT, MINUS (EXTRACT), n timp ce produsulcartezian se calculeaz automat prin simpla enumerare a celor foutabele din clauza FROM.

    La reuniunea a dou tabele, SQL elimin automat liniileidentice din rezultat. Dac se dorete prelucrarea tuturor liniilor celordou relaii i implicit apariia de linii duplicate, se folosete caluzaALL (UNION ALL).

    De exemplu, dup aceeai strctur a tabelei FURNIZORIcrem tabela FURNIZORI2.

    Tabela FURNIZORI2 conine urmtoarele date:

  • 8/3/2019 Indrumar FoxPro

    65/85

    Suport pentru laborator64

    Datele tabelei FURNIZORI2

    Datele tabelei FURNIZORI

    Dac dorim s afim toate datele (utiliznd reuniunea) dintabelele FURNIZORI i FURNIZORI2 avem:

    select * from furnizori union select * from furnizori2

  • 8/3/2019 Indrumar FoxPro

    66/85

    Limbaje de programarei baze de date 65

    Toate datele (utiliznd reuniunea) din tabelele FURNIZORI iFURNIZORI2

    SQL nu pune la dispoziie vreun operator special dedicatprodusului cartezian.

    Produsul cartezian se realizeaz prein simpla enumerare atabebelor n clauza FROM.

    De exemplu dac dorim s realizm produsul cartezian ntre

    tabelele FACTURI i FURNIZORI avem:

    select * from facturi, furnizori

  • 8/3/2019 Indrumar FoxPro

    67/85

    Suport pentru laborator66

    Produsul cartezian al tabelelor FACTURI i FURNIZORI

    Intrebri:

    1. Ce reprezint operatorul UNION?2. Cum se realizeaz produsul cartezian?

    Studiu individual

    APLICAIA 10: Evidena mijloacelor fixe aleunei ntreprinderi

    APLICAIA 10

    1. Realizai tabela MF1 i MF2 dup structura tabelei MF dinANEXA 1.

  • 8/3/2019 Indrumar FoxPro

    68/85

    Limbaje de programarei baze de date 672. Introduceti urmtoarele date:

    Datele tabelei MF1

    Datele tabelei MF2

    3. Care sunt datele din tabela MF1, ordonate alfabetic dupdenumire?4. Care sunt datele din tabela MF2, ordonate alfabetic dupdenumire i apoi dup valoare?5. Afiai datele celor dou tabele ntr-un query6. Care sunt mijloacele fixe ce se gsesc n MF1 i nu se gsesc nMF2?7. Care sunt mijloacele fixe ce se gsesc i n MF1 i n MF2?8. Care este valoarea medie a mijloacelor fixe din MF1?9. Care este valoarea medie a mijloacelor fixe din MF2 a cror numencepe cu litera C?

  • 8/3/2019 Indrumar FoxPro

    69/85

    Suport pentru laborator6810. Care sunt mijloacele fixe din tabela MF2 furnizate de furnizorii cucodurile: c1, c2, c4, c5,c8?

  • 8/3/2019 Indrumar FoxPro

    70/85

    Limbaje de programarei baze de date 69

    THETA I ECHI-JONCIUNEA

    Principalele obiective ale capitolului sunt:

    Realizarea unei legturi ntre dou sau mai multetabele

    Utilizarea condiiilor n echi-jonciune

    SQL nu prezint clauze sau operatori speciali pentru jonciune,jonciunea fiind o combinaie ntre produs cartezian i selecie.

    Deci pentru theta-jonciunea dintre dou relaii R1 i R2 avem:

    select * from R1, R2 where R1.A>=R2.E

    unde:

    R1A B C

    20 XYZ 3030 XXZ 2040 YYX 25

    R2C D E

    25 XYZ 3040 YYX 2530 XXZ 40

    iar pentru echi-jonciune avem:

  • 8/3/2019 Indrumar FoxPro

    71/85

    Suport pentru laborator70select * from R1, R2 where R1.A=R2.E

    Varianta cu INNER JOIN (jonciune intern) este:

    select * from R1 inner join R2 on R1.A>=R2.E

    respectiv

    select * from R1 inner join R2 on R1.A=R2.E

    Pentru urmtorul exemplu utilizm urmtoarele tabele:FURNIZORI, FACTURI cu urmtoarele date:

    Se cere s de afieze pentru fiecare factur numelefurnizorului.

  • 8/3/2019 Indrumar FoxPro

    72/85

    Limbaje de programarei baze de date 71select facturi.*, furnizori.nume_furn from facturi, furnizori wherefacturi.cod_furn=furnizori.cod_furn

    Numele furnizorului pentru fiecare factur

    Acelai rezultat se poate obine utiliznd INNER JOIN:select facturi.*, furnizori.nume_furn from facturi inner join furnizoriON facturi.cod_furn=furnizori.cod_furn

    Numele furnizorului pentru fiecare factur

    Dac dorim s afim numele furnizorului pentru fiecarefactur numai pentru furnizorul cu cod_furn "c1" vom avea:

    select facturi.*, furnizori.nume_furn from facturi, furnizori where

    facturi.cod_furn=furnizori.cod_furn and facturi.cod_furn="c1"

  • 8/3/2019 Indrumar FoxPro

    73/85

    Suport pentru laborator72Numele furnizorului pentru fiecare facturnumai pentru furnizorul cu cod_furn "c1"

    Intrebri:1. De ce dou tabele sunt legate logic prinvalori?2. Care este condiia necesar pentru echi-jonciune?

    Studiu individual

    APLICAIA 11: Evidena salariailor dintr-o firm

    APLICAIA 11

    1. S se realizeze tabelele ANGAJATI i DEPARTAMENTE dupstructura tabelelor ANGAJATI i DEPARTAMENTE din ANEXA 12. Introducei n tabele urmtoarele date:

  • 8/3/2019 Indrumar FoxPro

    74/85

    Limbaje de programarei baze de date 73

    3. Afiai eful pentru fiecare angajat.4. Care sunt angajaii care lucreaz n Braov?

    5. Ci angajai lucreaz n Bucureti?6. Care este numele angajatului cu salariul maxim?7. Care este fondul de salarii pentru fiecare cod_dep?8. Care sunt angajatii angajai dupa 01/01/1980?9. Care sunt angajaii care lucreaz la departamentul marketing?10. Ci subalterni are Vlad?11. Care este salariul mediu pentru departamentul management?12. Care sunt angajaii a cror ef ncepe cu litera "A"?13. Care sunt angajaii care lucreaz n Braov sau Bucureti?

  • 8/3/2019 Indrumar FoxPro

    75/85

    Suport pentru laborator74

    GRUPAREA TUPLURILOR: GROUP BY IHAVING

    Principalele obiective ale capitolului sunt:

    Utilizarea grupurilorUtilizarea condiiilor pentru grupuri

    Clauza GROUP BY formeaz grupe (grupuri) de tupluri aleunei relaii, pe baza valorilor comune ale unui atribut. n frazeleSELECT formulate pn n acest paragraf, prin intermediul WHEREau fost selectate tupluri ale tabelei. Prin asocierea unei clauzeHAVING la GROUP BY este posibil selectare anumitor grupuri detupluri ce ndeplinesc un criteriu, valabil numai la nivel de grup (nu ila nivel de linie).

    Clauza unei fraze SELECT ce conine aceast clauz seobine prin regruparea tuturor liniilor din tabelele eumerate n FROM,extrgndu-se cte o apariie pentru fiecare valoare distinct acoloanei/grupului de coloane.

    Formatul general este:

  • 8/3/2019 Indrumar FoxPro

    76/85

    Limbaje de programarei baze de date 75select coloan1, coloan2,...,coloan m from tabel group bycoloan_de_regrupare

    De exemplu dac dorim s vedem care este valoarea total afacturilor pentru fiecare cod_furn vom avea:

    select cod_furn, sum(valoare) from facturi group by cod_furn

    Valoarea total a facturilor pentru fiecare cod_furn

    Cea mai simpl definiie a clauzei HAVING este: clauzaHAVING este WHERE-ul ce opereaz la nivel de grupuri. DacWHERE acioneaz la nivel de tuplu, selectnd acele linii care ndeplinesc o condiie specificat, HAVING permite specificareaunor condiii de selecie care se aplic rupurilor de linii create prinGROUP BY.

    Din rezultat sunt eliminate toate grupurile care nu satisfaccondiia specificat.

    De exemplu dac dorim s vedem care este valoarea total afacturilor pentru cod_furn egal cu "c1" vom avea:

    select cod_furn, sum(valoare) from facturi group by cod_furn havingcod_furn="c1"

    Valoarea total a facturilor pentrucod_furn egal cu "c1"

  • 8/3/2019 Indrumar FoxPro

    77/85

    Suport pentru laborator76

    Intrebri:

    Cnd se utilizeaz GROUP BY?Care este definiia condiiei HAVING?

    Studiu individual

    APLICAIA 12: Situaii de grup la nivelulsalariailor

    APLICAIA 12

    1. S se realizeze tabelele ANGAJATI i DEPARTAMENTE dupstructura tabelelor ANGAJATI i DEPARTAMENTE din ANEXA 12. Introducei n tabele urmtoarele date:

  • 8/3/2019 Indrumar FoxPro

    78/85

    Limbaje de programarei baze de date 77

    3. Afiai eful pentru fiecare angajat.4. Care este salariul total pentru fiecare departament?

    5. Care este salariul total pentru departamentul MANAGEMENT?6. Care este suma total a salariilor din departamentelemanagement i contabilitate?7. Care este numrul de salariai din fiecare departament?8. Care este departamentul cu angajaii cei mai muli?9. Care este eful departamentului cu cei mai muli angajai?10. Ci angajai are Vlad?

  • 8/3/2019 Indrumar FoxPro

    79/85

    Suport pentru laborator78

    FUNCII DE CALCUL N VISUAL FOX PRO

    Principalele obiective ale capitolului sunt:

    Utilizarea funciilor de calcul n Visual Fox Pro

    Visual Fox Pro permite utilizarea unor instruciuni specifice,executate n fereastra de comenzi, pentru calcule statistice, dar ifuncii statistice i financiare.

    Instruciunile cel mai des utilizate pentru calcule statistice sunt:

    average to Instruciunea furnizeaz media aritmetic a valorilor numerice din

    cmpul specificat.

    count to Instruciunea furnizeaz numrul de nregistrri din tabel carerespect condiiile impuse n domeniul nregistrrilor.

  • 8/3/2019 Indrumar FoxPro

    80/85

    Limbaje de programarei baze de date 79sum to Instruciunea furnizeaz suma (pe coloan) valorilor din cmpulspecificat.

    Unde: denumire cmpreprezint cmpul pe baza valorilor cruia seva realiza suma;

    domeniul nregistrrilor reprezint de obicei o condiie defiltrare a valorilor care intr n sum;

    denumire variabil reprezint o variabil nou n care va fidepozitat rezultatul nsumrii valorilor.

    Pentru afiarea rezultatelor acestor operaii se srie n fereastra decomenzi:

    ?[mesaj],

    Exemple de instruciuni pentru calcule statistice

    Principalele funcii statistice: AVG( ), COUNT( ), SUM( ) avnd

    efecte similare cu instruciunile menionate mai sus, se utilizeaz ncadrul unor instruciuni cum ar fi CALCULATE sau SELECT.

    Funciile financiare cel mai des utilizate sunt: PAYMENT (valoare mprumut, rata dobnzii, perioada)

    determin rata periodic de regul lunar care trebuie

  • 8/3/2019 Indrumar FoxPro

    81/85

    Suport pentru laborator80achitat pentru a stinge o datorie, un mprumut ntr-operioad de timp dat, la o anumit rat a dobnzii.

    FV (rata lunar, rata dobnzii, numr de perioade) determin valoarea actualizat a unei investiii cu pli

    periodice egale, pentru un numr cunoscut de perioadeegale de timp, la o anumit valoare a ratei dobnzii.

    PV (rata lunar, rata dobnzii, numr de perioade) determin valoarea prezent a unei investiii realizate nviitor, n condiiile achitrii unor pli periodice constante, peo anumit perioad, la o rat a dobnzii constant.

    Observaie: rata dobnzii se raporteaz la 12 n toate cele trei

    cazuri, caz n care numrul de perioade reprezint numrul de luni.Aceste funcii se utilizeaz n cadrul unor comenzi de tipbrowse. n fereastra de comenzi se va scrie:

    browse fields , ,...,=(parametricorespunztori)

    Denumirile cmpurilor afiate prin comanda browse, strnslegate de parametrii funciei, se utilizeaz pentru a oferi o imaginecomplet asupra situaiei analizate, alternativ existnd posibilitateaafirii doar a rezultatului obninut prin utilizarea funciei financiare.

    Studiu individual

    Aplicaie 13: Utilizare funcii statistice ifinanciare.

    APLICAIA 13

    S se construiasc un nou proiect. S se construiasc o tabelavnd urmtoarea structur:

    Cod_firma C 4Credit N 20Rata N 20Rata_dob_c N 6 ;2

  • 8/3/2019 Indrumar FoxPro

    82/85

    Limbaje de programarei baze de date 81Rata_dob_d N 6 ;2Perioada N 3

    i cu urmtorul coninut :

    Cod_firma Credit Rata Rata_dob_c Rata_dob_d PerioadaAMP 10000 100 0.2 0.1 15COR 15000 145 0.21 0.11 20DAV 12000 250 0.23 0.12 36ERG 45000 500 0.22 0.1 48HTR 21500 350 0.21 0.14 18COM 50000 220 0.23 0.11 15SEP 35000 750 0.23 0.13 24MAN 15500 600 0.21 0.1 12RAR 75000 840 0.2 0.12 72

    a) S se determine rata periodic, lunar, care trebuie pltit pentrucreditul contractat, de ctre fiecare societate comercial, utilizndfuncia PAYMENT.b) Valorile nscrise n cmpul rata, reprezint sume lunare egalecare vor fi depuse de fiecare firm, la nceputul fiecrei luni, nconturi de depozit. Care este valoarea viitoare a sumei obinute incursul ultimei luni n care firmele vor depune bani n cont? (Utiliza ifuncia FV)c) Cte firme au contactat credite cu o valoare peste 25000 lei?

    d) Care este suma total a creditelor acordate de bnci tuturorfirmelor?e) Care este media sumelor depuse lunar de firmele al cror codncepe cu litera C?

  • 8/3/2019 Indrumar FoxPro

    83/85

    Suport pentru laborator82

    Bibliografie:

    1. Marin Fotache, SQL - Dialecte DB2, Oracle, Visual FoxPro,

    Editura Polirom, 2001, Bucureti2. Mihaela Muntean, Dezvoltarea aplicaiilor cu baze de date nVisual FoxPro, Editura All, 2001, Bucureti

    3. Manualul de utilizare - Visual FoxPro 8.0

    4. Grupul BDASEIG, Baze de date. Fundamente teoretice ipractice, Infomega, 2002

    5. Manole Velicanu, Constana Bodea, Ion Lungu, Cristina Ioni,Georgeta Bdescu - Sisteme de Gestiune a Bazelor de Date,Petrion

  • 8/3/2019 Indrumar FoxPro

    84/85

    Limbaje de programarei baze de date 83

    Anexa 1

    Tabele utilizate

    unde: nr - numr; sal_brut - salariu brut; cod_dep - cod departament

    unde: cod_dep - cod departament; den-denumire

    unde: nr_factur-numr factur; data_fact - data facturii

  • 8/3/2019 Indrumar FoxPro

    85/85

    Suport pentru laborator84

    unde: cod_furn - cod furnizor; nume_furn - nume furnizor

    unde: cod_mf - codul mijlocului fix, per_amort - perioada deamortizare, cod_furn - codul furnizorului