Sunteți pe pagina 1din 34

Actualizarea bazelor de date

1 Actualizarea bazelor de date.............................................................................................2 1.1 Meniurile unei interogri...........................................................................................2 1.2 Modificarea unor coloane ale tabelei.........................................................................5 1.3 Utilizarea expresiilor aritmetice n interogri............................................................6 1.4 Utilizarea expresiilor booleene n interogri............................................................10 1.5 Utilizarea funciilor de prelucrare a irurilor de caractere......................................14 1.6 Actualizarea unor coloane ale unei tabele cu date din alte tabele...........................16 1.7 Stergerea unor linii din tabele..................................................................................19 1.8 Inserarea unei linii intr-o tabel..............................................................................22 1.9 Inserarea ntr-o tabel a unor linii dintr-o alt tabel..............................................25 1.10 Crearea unei tabele vide........................................................................................28 1.11 Crearea unei tabele cu date din alte tabele............................................................30 1.12 Probleme propuse..................................................................................................32 1.13 Intrebri de control................................................................................................34

1 Actualizarea bazelor de date


O actualizare a bazei de date este o modificare a unor tabele ale bazei de date sau crearea unor noi tabele. Modificarea const n adugarea, tergerea sau modificarea anumitor linii din tabele. Instruciunile SQL corespunztoare sunt: INSERT pentru adugarea de linii, DELETE pentru tergerea de linii i UPDATE pentru modificarea de linii ale unei tabele. Crearea unei noi tabele se face cu instruciunea CREATE TABLE. In Access se creaz formulare grafice corespunztoare acestor instruciuni. Operaia de actualizare a unei tabele se va numi n continuare interogare (Query), i este un obiect al bazei de date. Vom avea diverse tipuri de interogri: Update Query n cazul modificrii unor linii, Delete Query la tergerea unor linii, Append Query n cazul adugrii unor linii, Make Table Query n cazul crerii unei noi tabele. Un obiect de tip Query poate fi examinat n dou vederi, Design View, care este fereastra de proiectare i Datasheet View care afiaz tabela rezultat. Menionm c, nainte de orice modificare a unei tabele, se afiaz o caset de dialog ce permite anularea operaiei.

1.1 Meniurile unei interogri


Orice formular poate fi afiat n dou moduri (n dou vederi): modul Proiectare (Design View), modul Formular (Datasheet View). Fiecrei vederi i corespund meniuri, bare de instrumente i meniuri contextuale diferite. Meniul View i meniul contextual al formularului n vederea Design sunt artate n Tabelul 1. Opiunile lor permit comutarea ntre cele dou vederi, Design i Datasheet.

a)meniul View

b) meniul contextual al formularului

Tabelul 1. Meniurile formularului n modul Design View.

Bara de meniuri i de instrumente n vederea Design sunt artate n Figura 1.

Figura 1. Barele de meniuri i de instrumente Design View.

Butonul Run, , al barei de instrumente sau opiunea Run a meniului Query, n modul Design View, (vezi Tabelul 3a) servesc la execuia cererii. Butonul Show Table, , i opiunea Show Table a meniului Query afiaz caseta Show Table din Figura 6, cu tabelele bazei de date, ce pot fi utilizate n interogare. Barele de meniuri i de instrumente ale vederii Datasheet sunt artate n Figura 2.

Figura 2. Barele de meniuri i de instrumente Datasheet View.

Meniul View i meniul contextual al formularului n vederea Datasheet sunt artate n Tabelul 2. Opiunile lor permit comutarea ntre cele dou vederi, Design i Datasheet. Opiunile Design View, Datasheet View i SQL View ale acestor meniuri permit trecerea n modul Proiectare, Formular, respectiv afiaz instruciunea SQL generat de Access pe baza formularului de proiectare.

a) meniul View

b) meniul contextual al formularului

Tabelul 2. Meniurile formularului n modul Datasheet View.

Butonul View din stnga barelor de meniu afiaz lista din Figura 3 cu aceleai opiuni de comutare a vederilor

Figura 3. Lista View cu opiunile de comutare a vederilor.

Meniul Query are opiuni pentru crearea formularului de proiectare dorit. Butonul Query Type, , , , al barei de meniu n vederea Design, afiaz o list cu aceleai opiuni, vezi Tabelul 3a i Tabelul 3b.

a) meniul Query Semnificaia acestor opiuni este cea din Tabelul 4. Opiune

b) lista Query Type

Tabelul 3. Alegerea tipului interogrii.

Instruciunea SQL SELECT SELECT CREATE TABLE UPDATE INSERT DELETE

Tabelul 4. Opiunile de creare a unui formular de interogare.

In exemplele din lucrare vom utiliza tabela SITUATIE_FINANCIARA de mai jos ce conine datele financiare ale unei intreprinderi. 4

SITUATIE_FINANCIARA AN VENITURI CHELTUIELI PROFIT_BRUT IMPOZIT PROFIT_NET

In tabel sunt completate doar coloanele AN, VENITURI i CHELTUIELI. Proiectarea tabelei este cea din Figura 4, iar tabela cu date cea din Figura 5.

Figura 4. Proiectarea tabelei SITUATIE_FINANCIARA.

Figura 5. Tabela SITUATIE_FINANCIARA.

1.2 Modificarea unor coloane ale tabelei


Modificarea uneia sau mai multe coloane ale tabelei, pe baza valorilor existente n coloanele tabelei se face cu o interogare de tipul Update (Update Query). Formularul corespunztor are o linie special Update To, vezi Figura 8. In celula din linia Update To, corespunztoare coloanei ce va fi actualizat, se introduce o expresie ce are ca rezultat noua valoare a coloanei. Expresia poate conine constante i cmpuri, inclusiv cmpul ce va fi modificat. Numele cmpurilor se vor scrie ntre paranteze drepte, [ i ]. Access va genera din formular o instruciune SQL UPDATE cu forma UPDATE nume_tabela SET nume_coloana_1 = valoare1, nume_coloana_2 = valoare2, WHERE condiie; Intr-o singur interogare se pot modifica toate liniile unei tabele sau numai liniile ce indeplinesc anumite condiii. 5

Exemple de actualizare a coloanelor unei tabele vor fi prezentate mai jos.

1.3 Utilizarea expresiilor aritmetice n interogri


Vom exemplifica procedura pe tabela SITUATIE_FINANCIARA din Figura 5 a crei definiie este repetat aici. SITUATIE_FINANCIARA AN VENITURI CHELTUIELI PROFIT_BRUT IMPOZIT PROFIT_NET

In tabel sunt completate doar coloanele AN, VENITURI i CHELTUIELI. Celelalte coloane se vor calcula dup formulele: PROFIT_BRUT = VENITURI - CHELTUIELI, IMPOZIT = PROFIT_BRUT * 0.19, PROFIT_NET = PROFIT_BRUT IMPOZIT. Vom proiecta un formular de interogare ce va completa cmpul PROFIT_BRUT. Procedura este urmtoarea: 1. se afiaz caseta Database; n partea stng, se selecteaz opiunea Queries, 2. clic pe opiunea Create query in Design View care afiaz caseta Show Table din Figura 6 i fereastra de proiectare a unei interogri. Alternativ, clic pe butonul New al barei de instrumente al ferestrei Database sau pe meniul Insert Query; se afiaz caseta de dialog New Query n care se selecteaz opiunea Design View, care afiaz caseta Show Table i fereastra de proiectare a unei interogri ca mai sus. In seciunea Tables a casetei Show Table sunt afiate toate tabelele bazei de date.

Figura 6. Caseta Show Table.

3. clic pe tabela SITUATIE_FINANCIARA; se afiaz fereastra de proiectare Select Query a interogrii din Figura 7,

Figura 7. Fereastra de proiectare a interogrii, Select Query.

4. clic pe meniul Query Update Query din Tabelul 3a; n fereastra interogrii apare linia Update To ca n Figura 8; acelai efect se obine prin selectarea opiunii din lista Query Type din Tabelul 3b, afiat cu butonul Query Type, , 5. se introduce n prima coloan numele cmpului ce va fi actualizat, PROFIT_BRUT i n linia Update To formula [VENITURI] - [CHELTUIELI]; dup cum am spus mai nainte, numele atributelor (coloanelor) tabelei se scriu n expresii ntre paranteze drepte, [ i ],

Figura 8. Ferestra de proiectare a formularului Update Query.

6. clic pe butonul Run, , al barei de instrumente sau pe meniului Query Run; rezultatul coloanei actualizate este cel din Figura 9.

Figura 9. Coloana actualizat.

Inainte de executarea interogrii Access afiaz caseta de dialog din Figura 10 prin care ntreab utilizatorul dac vrea s efectueze actualizarea coloanelor.

Figura 10. Mesaj pentru actualizarea coloanelor tabelei.

Instruciunea UPDATE corespunztoare este cea din Figura 11.

Figura 11. Instruciunea SELECT de actualizare a tabelei.

Este posibil s vedem valorile cmpurilor nainte de a fi modificate. Pentru aceasta afim fereastra Design i executm clic pe meniul View Datasheet View, i se va afia o tabel cu valorile coloanelor nainte de a fi modificate. In cazul nostru se va afia tabela din Figura 12.

Figura 12. Coloana PROFIT_BRUT nainte de modificare.

Pentru a salva formularul creat se utilizeaz opiunile Save sau Save As ale meniului File sau clic pe butonul de nchidere a ferestrei formularului. Pentru a terge o coloan din interogare se selecteaz coloana i clic pe meniul Edit Delete sau cu tasta Delete. Expresia se poate introduce i cu aplicaia Expression Builder. Pentru aceasta se afiaz caseta Expression Builder din Figura 14 i se introduce expresia. Caseta Expression Builder se afiaz n urmtoarele moduri: se selecteaz cmpul cu clic i apoi clic pe butonul Build, , al barei de instrumente,

se afiaz meniul contextual al cmpului din Figura 13 cu clic cu butonul drept, apoi clic pe opiunea Build.

Figura 13. Meniul contextual al unui cmp.

Caseta Expression Builder este cea din Figura 14.

Figura 14. Caseta Expression Builder.

Se va proceda la fel pentru actualizarea cmpurilor IMPOZIT i PROFIT_NET.

1.4 Utilizarea expresiilor booleene n interogri


Access are funcia IIf cu forma IIf(condiie, S1, S2) sau IIf(condiie; S1; S2) Funcia IIf testeaz condiia i are ca rezultat expresia S1 cnd condiia este adevrat i expresia S2 n caz contrar. Fie tabela TESTIIF cu proiectarea din Figura 15. Condiia i expresiile din funcia IIf sunt separate de , sau ;.

10

Figura 15. Proiectarea tabelei TESTIIF.

Tabela conine un cmp DATA_CAL cu data calendaristic i un cmp TRIMESTRU ce trebuie completat cu numrul trimestrului, 1, , 4 cu ajutorul unei interogri.

Figura 16. Tabela TESTIIF.

Pentru aceasta se procedeaz ca mai sus: 1. se creaz o interogare ca n Figura 18; n prima celul a liniei Field se introduce numele coloanei TRIMESTRU ce trebuie completat, 2. clic pe meniul Query Update Query din Tabelul 3a sau pe opiunea UpdateQuery din lista Query Type afiat cu clic pe butonul Query Type vezi Tabelul 3b; n fereastra interogrii apare linia Update To ca n Figura 18, 3. n linia Update To se introduce expresia IIf([DATA_CAL]<#4/1/2009#,1,IIf([DATA_CAL]<#7/1/2009#,2,IIf([DATA_CAL]<#1 0/1/2009#,3,4))). Expresia se introduce n caseta Expression Builder ca mai sus, vezi Figura 17, sau direct n cmp ca n Figura 18.

11

Figura 17. Caseta Expression Builder.

Figura 18. Interogare pentru completarea coloanei TRIMESTRU.

Pentru a pune n evident clauzele instruciunii IIf, ea este rescris ca mai jos IIf([DATA_CAL]<#4/1/2009#, 1, IIf([DATA_CAL]<#7/1/2009#, 2, IIf([DATA_CAL]<#10/1/2009#, 3, 4))) 12

Expresia este executat asfel: se evalueaz condiia [DATA_CAL]<#4/1/2009#, cnd condiia este adevrat rezultatul expresiei este 1, cnd condiia este fals se evalueaz expresia [DATA_CAL]<#7/1/2009# din a doua instruciune IIF, cnd condiia este adevrat rezultatul expresiei este 2, cnd condiia este fals se testeaz expresia [DATA_CAL]<#10/1/2009#, cnd condiia este adevrat rezultatul expresiei este 3, cnd condiia este fals rezultatul expresiei este 4. Figura 19 prezint tabela TESTIIF actualizat.

Figura 19. Tabela TESTIIF actualizat.

Instruciunea UPDATE generat de Access este cea din Figura 20.

Figura 20. Instruciunea UPDATE de actualizare a tabelei.

Deoarece expresia instruciunii IIf este foarte lung, Access are posibilitatea de a afia o caset Zoom pentru expresii lungi. Afiarea acestei casete se face cu clic pe opiunea Zoom a meniului contextual a cmpului, vezi Figura 13. Caseta Zoom a cmpului ce conine instruciunea IIf este cea din Figura 21.

13

Figura 21. Caseta Zoom a cmpului cu instruciunea IIf.

1.5 Utilizarea funciilor de prelucrare a irurilor de caractere


Access are funcii de prelucrare a caracterelor ce permit extragerea de subiruri din iruri precum i operatorul & de concatenare a irurilor. In cazul irurilor, indicele primului character din ir este 1. Cteva funcii de prelucrare a irurilor sunt artate n Tabelul 5. Funcie Left(Sir, len) Right(Sir, len) Mid(Sir, indice, len) Len(Sir) Rezultat Primele len caractere din Sir Ultimele len caractere din Sir Len caractere din Sir ncepnd cu indice Lungime Sir

Tabelul 5. Funcii de prelucrare a irurilor.

Vom exemplifica utilizarea acestor funcii cu tabela TESTCAR din Figura 22. In aceast tabela vor fi completate coloanele CNP i NUME, iar celelalte coloane vor fi completate din coloana CNP. Coloana CNP conine pe prima poziie o cifr ce corespunde sexului, 1 pentru masculin i 2 pentru feminin. Urmtoarele ase cifre conin data naterii sub forma AALLZZ, unde AA sunt ultimele dou cifre ale anului naterii LL este luna iar ZZ este ziua. Vom completa coloana SEX cu caracterul M pentru masculin i F pentru feminin, coloana VARSTA cu vrsta i coloana DATA cu data naterii sub forma LL/ZZ/AA. Aceste trei coloane se pot completa din coloana CNP.

Figura 22. Tabela TESTCAR.

14

Tabela TESTCAR iniial este cea din Figura 23.

Figura 23. Tabela cu date TESTCAR.

Vom crea o interogare de tipul Update Query cu care completm coloanele vide. Expresiile introduse pentru actualizarea coloanelor sunt urmtoarele: 1. pentru coloana DATA se construiete irul din coloanele 2-7 ale coloanei CNP Mid([CNP],4,2) & "/" & Mid([CNP],6,2) & "/" & Mid([CNP],2,2) 2. pentru coloana VARSTA se calculeaz vrsta ca data curent cifrele anului din coloana CNP 1900 Year(Date())-Mid([CNP],2,2)-1900 3. pentru a completa coloana SEX se utilizeaz instruciunea IIf care testeaz dac primul character din coloana CNP este egal cu 1 IIf(Left([CNP],1)=1,"M","F") La calculul vrstei funcia Date() furnizeaz un ir cu data curent, iar funcia Year() extrage irul ce conine anul. Formularul de proiectare a interogrii este cel din Figura 24.

Figura 24. Fereastra de interogare pentru completarea coloanelor.

Tabela completat n urma interogrii este cea din Figura 25

15

Figura 25. Tabela TESTCAR completat.

Instruciunea UPDATE generat de Access este cea din Figura 26.

Figura 26. Instruciunea UPDATE de actualizare a tabelei.

1.6 Actualizarea unor coloane ale unei tabele cu date din alte tabele
Este posibil s actualizm coloane ale unei tabele cu date obinute prin interogarea altor tabele. Fie tabela SITUATIE_FINANCIARA din Figura 5. Vrem s modificm coloanele VENITURI i CHELTUIELI ale acestei tabele pentru diveri ani. Noile date vor fi luate din tabela DATE_CONTABILE_VECHI de mai jos.

Figura 27. Proiectarea tabelei DATE_CONTABILE_VECHI.

16

Figura 28. Tabela DATE_CONTABILE_VECHI.

Vom modifica cmpurile VENITURI i CHELTUIELI din tabela SITUATIE_FINANCIARA, la valorile cmpurilor VENITURI i CHELTUIELI din tabela DATE_CONTABILE_VECHI, pentru anii 2001 i 2003. Vor fi modificate doar liniile tabelei SITUATIE_FINANCIARA pentru care cheia primar concide cu cheia primar a unei linii din tabela DATE_CONTABILE_VECHI. Vom crea o interogare n felul urmtor: 1. se selecteaz seciunea Queries a ferestrei Database, 2. clic pe opiunea Create Query in Design view, sau clic pe butonul New i, n caseta New Query, clic pe opiunea Design View, 3. se afiaz fereastra Query i caseta Show Table; n caseta Show Table se selecteaz cele dou tabele, SITUATIE_FINANCIARA i DATE_CONTABILE_VECHI, 4. clic pe meniul Query Update Query din Tabelul 3a, ceea ce afiaz fereastra de proiectare din Figura 29; alternativ, clic pe opiunea Update Query din lista Query Type afiat cu clic pe butonul Query Type,

Figura 29. Fereastra de proiectare.

Liniile ferestrei de proiectare au funciile urmtoare: n linia Field se introduc cmpurile tabelei ce trebuie modificate,

17

n linia Update To se introduc cmpurile tabelei ce conin noile valori, n liniile Criteria i or se introduce criteriile ce dau liniile ce vor fi modificate. In cazul nostru, criteriul dup care vor fi actualizate liniile tabelei SITUATIE_FINANCIARA este egalitatea cheilor primare SITUATIE_FINANCIARA.AN = DATE_CONTABILE_VECHI.AN Access ne permite s specificm grafic anumite criterii de forma de mai sus, creind legturi ntre cmpurile celor dou tabele. O asemenea legtur este creat ntre cheile primare ale celor dou tabele n Figura 29. Legtura se creaz trgnd un cmp al unei tabele asupra altui cmp al celeilalte tabele. Legturile se pot terge prin selectarea legturii cu un clic cu butonul drept pe legtur, i clic pe opiunea Delete a meniului contextual afiat. 5. n linia Field a ferestrei de proiectare se introduc cmpurile ce trebuie modificate, n cazul nostru VENITURI i CHELTUIELI din tabela SITUATIE_FINANCIARA, vezi Figura 30,

Figura 30. Fereastra de proiectare cu coloanele ce vor fi modificate.

6. n linia Update To se introduc noile valori, care aici sunt coloanele corespunztoare din tabela DATE_CONTABILE_VECHI, vezi Figura 31,

18

Figura 31. Fereastra de proiectare cu coloanele surs i destinaie.

7. clic pe butonul Run,

, i se afiaz mesajul din Figura 32,

Figura 32. mesaj afiat la execuia unei interogri.

8. clic pe butonul OK i instruciunea este executat. Instruciunea UPDATE generat de Access este cea din Figura 33.

Figura 33. Instruciunea UPDATE de actualizare a tabelei.

1.7 Stergerea unor linii din tabele


Stergerea unor linii dintr-o tabel se face cu instruciunea SQL DELETE cu forma DELETE FROM nume_tabela

19

WHERE condiie; Instruciunea terge din tabel toate liniile ce satisfac condiia din clauza WHERE. Pentru tergerea unor linii din tabel Access utilizeaz o interogare de tip Delete (Delete Query), vezi meniul Query din Tabelul 3a. Exemplu. Fie tabela PROIECT_ANGAJAT de mai jos. Tabela conine angajaii ce lucreaz la diverse proiecte ale unei intreprinderi, cu salariul orar, SAL_ORA i numrul de ore prestate la proiect, ORE. Cheia primar a tabelei este format din cmpurile ID_PRJ i ID_ANG. Cmpurile NUME_ANGAJAT i DPT_ANG sunt de tip text, celelalte de tip numeric. PROIECT_ANGAJAT
ID_PRJ ID_ANG NUME_ANGAJAT DPT_ANG SAL_ORA ORE

Proiectarea tabelei este cea din Figura 34.

Figura 34. Proiectarea tabelei PROIECT_ANGAJAT.

Tabela cu date este cea din Figura 35. Tabela PROIECT_ANGAJAT.

Figura 35. Tabela PROIECT_ANGAJAT.

Vrem s tergem din tabel linia 200 1351 Filipescu Suport 40 15

20

Interogarea se proiecteaz dup cum urmeaz. 3. se afiaz caseta Database; n partea stng, se selecteaz opiunea Queries, 4. clic pe opiunea Create query in Design View care afiaz caseta Show Table i fereastra de proiectare a unei interogri, 5. seciunea Tables a casetei Show Tables din Figura 6 afiaz toate tabelele din baza de date; se selecteaz tabela dorit, n cazul nostru tabela PROIECT_ANGAJAT; clic pe butonul Add i apoi pe butonul Close, n acest moment tabela se afiaz n formularul Select Query, 6. n meniul Query din Tabelul 3a se selecteaz opiunea Delete Query i se afiaz formularul Delete Query din Tabelul 6a, care se completeaz ca n Tabelul 6b.

a)
Tabelul 6. Formular Delete Query.

b)

5. se excut clic pe butonul al barei de instrumente care execut operaia. La execuia operaiei se afiaz casetele de mesaj din Figura 36 i din Figura 37.

Figura 36. Caseta de masaj la execuia unei instruciuni DELETE.

21

Figura 37. Caset de mesaj la execuia unei instruciuni DELETE.

Access genereaz din formularul de mai sus instruciunea SQL DELETE din Figura 38.

Figura 38. Instruciunea SQL Delete.

Este posibil de a vedea liniile din tabel ce vor fi terse. Pentru aceasta se procedeaz astfel: 1. se afiaz fereastra Design a formularului, 2. clic pe meniul View Datasheet View care afiaz tabela cu liniile ce vor fi terse, vezi n Figura 39.

Figura 39. Tabel cu liniile ce vor fi terse.

1.8 Inserarea unei linii intr-o tabel


Vom arta cum se insereaz o linie ntr-o tabel cu instruciunea SQL INSERT. Forma instruciunii INSERT este urmtoarea INSERT INTO nume_tabela (nume_coloana1, nume_coloana2, ...) VALUES (valoare1, valoare2, ); Pentru inserarea de linii ntr-o tabel Access utilizeaz o interogare de tipul Append (Append Query), vezi meniul Query din Tabelul 3a. Fie tabela SITUATIE_FINANCIARA din Figura 5 n care vrem s inserm o linie cu datele pentru anul 2007, VENITURI = 709 i CHELTUIELI = 680. Vom crea pentru nceput o interogare vid n felul urmtor: 1. se selecteaz seciunea Queries a ferestrei Database, 22

2. clic pe opiunea Create Query in Design view, sau clic pe butonul New i, n caseta New Query, clic pe opiunea Design View, 3. se afiaz fereastra Query i caseta Show Table; clic pe butonul Close al casetei Show Table; se afiaz fereastra de proiectare din Figura 40,

Figura 40. Fereastra de proiectare Query.

4. clic pe meniul Query Append Query din Tabelul 3a; se afiaz caseta Append din Figura 41,

Figura 41. Caseta Append.

5. n caseta Table Name se alege tabela n care se va insera linia, vezi Figura 42,

23

Figura 42. Alegerea tabelei n care se insereaz linia.

6. n fereastra de proiectare Query apare acum i linia Append To, vezi Figura 43; n linie apare lista cu cmpurile tabelei selectate pentru inserare,

Figura 43. Fereastra de proiectare Query.

7. se adaug coloanele ce se vor completa din linia ce va fi inserat, ca n Figura 44

Figura 44. Fereastra de proiectare cu cmpurile ce se vor insera.

8. aplicaia Access genereaz instruciunea INSERT din Figura 45, ce trebuie modificat,

24

Figura 45. Instruciunea INSERT generat.

9. se completeaz instruciunea INSERT cu coloanele i valorile ce se vor insera, ca n Figura 46,

Figura 46. Instruciunea INSERT modificat.

10. clic pe butonul Open ceea ce va produce execuia instruciunii INSERT. Access afiaz mesajele din Figura 47 i din Figura 48.

Figura 47. Mesaj la execuia instruciunii INSERT.

Figura 48. Mesaj la execuia instruciunii INSERT.

1.9 Inserarea ntr-o tabel a unor linii dintr-o alt tabel


Vom arta cum se insereaz linii ntr-o tabel cu instruciunea INSERT, atunci cnd aceste linii sunt ale unei tabele rezultat creat cu o instruciune SELECT. Forma unei asemenea instruciuni este INSERT INTO nume_tabela_1 (nume_coloana1, nume_coloana2, ...) SELECT nume_coloana_1, nume_coloana_2, FROM nume_tabela_2;

25

In Access aceast operaie se face cu o interogare de tip Append ( Append Query), vezi meniul Query din Tabelul 3a. Fie tabela SITUATIE_FINANCIARA din Figura 5. Vrem s inserm n aceast tabel linii din tabela DATE_CONTABILE de mai jos.

Figura 49. Proiectarea tabelei DATE_CONTABILE.

Figura 50. Tabela DATE_CONTABILE.

Tabelele DATE_CONTABILE i SITUATIE_FINANCIARA conin aceleai cmpuri. Pentru insera liniile tabelei DATE_CONTABILE n tabela SITUATIE_FINANCIARA vom crea o interogare n felul urmtor: 1. se selecteaz seciunea Queries a ferestrei Database, 2. clic pe opiunea Create Query in Design view, sau clic pe butonul New i n caseta New Query clic pe opiunea Design View, 3. se afiaz fereastra Query i caseta Show Table; n caseta Show Table se selecteaz tabela surs, DATE_CONTABILE, i se creaz o interogare, ca n Figura 51; aceast interogare corespunde instruciunii SELECT din instruciunea INSERT de mai sus,

Figura 51. Fereastra de proiectare.

26

4. clic pe meniul Query Append Query din Tabelul 3a; n fereastra interogrii apare caseta Append ca n Figura 52; n lista Table Name se selecteaz tabela n care se vor insera linii, n cazul nostru SITUATIE_FINANCIARA,

Figura 52. Caseta Append.

5. clic pe butonul OK al casetei Append; n fereastra de proiectare apare linia Append To cu cmpurile corespunztoare din tabela destinaie, n acest caz SITUATIE_FINANCIARA, ca n Figura 53. In linia Field apar valorile ce se vor salva n cmpurile destinaie. Ele pot fi expresii ce conin constante i nume de cmpuri. In linia Criteria se pot introduce criteriile ce trebuie satisfcute de liniile ce vor fi inserate n tabel. In cazul nostru sunt cmpurile cu aceleai nume din tabela DATE_CONTABILE,

Figura 53. Fereastra de proiectare cu coloanele din tabelele surs i destinaie.

6. clic pe butonul Run, , al barei de instrumente i se afiaz mesajul din Figura 54. La un clic pe butonul Yes se execut instruciunea INSERT.

27

Figura 54. Mesaj la execuia unei interogri.

Instruciunea INSERT generat de Access pe baza interogrii proiectate este cea din Figura 55.

Figura 55. Instruciunea INSERT generat de Access.

1.10 Crearea unei tabele vide


Instruciunea SQL de creare a unei tabele are forma CREATE TABLE table_name ( column_name1 data_type [constraints], column_name2 data_type [constraints], column_name2 data_type [constraints], ... ); Crearea unei noi tabele se face prin crearea unei interogri tip SQL Specific. Ca exemplu, s crem o tabel cu numele TESTAB cu instruciunea CREATE TABLE TESTAB ( [AN] Integer PRIMARY KEY, [VENITURI] Integer, [CHELTUIELI] Integer ); Crearea tabelei se face n urmtorii pai: 1. se afiaz caseta Database; n partea stng, se selecteaz opiunea Queries, 2. se exect clic pe butonul New, , al barei de instrumente al ferestrei Database,

28

3. se afiaz caseta de dialog New Query n care se selecteaz opiunea Design View, care afiaz caseta Show Table i fereastra de proiectare a unei interogri, 4. clic pe butonul Close al casetei Show Table, 5. clic pe meniul Query SQL Specific Data Definition, vezi Figura 56,

Figura 56. Opiunea Data Definition.

6. se afiaz caseta de text n care se scrie instruciunea CREATE TABLE din Figura 57; numele cmpurilor se scriu ntre paranteze drepte, [ i],

Figura 57. Instruciunea CREATE TABLE.

7. clic pe butonul Run i se creaz tabela n baza de date. Tabela creat de Access ape baza instruciunii CREATE TABLE de mai sus are proiectarea din Figura 58.

Figura 58. Proiectarea tabelei TESTAB.

29

1.11 Crearea unei tabele cu date din alte tabele


Putem crea o tabel n baza de date utiliznd alte tabele din baza de date. In general crem noi tabele n urmtoarele cazuri: tabele de lucru. Sunt tabele cu rezultatele unor interogri ce vor fi folosite la generarea unor rapoarte. Dup crearea rapoartelor aceste tabele sunt terse, tabele de export date. Sunt tabele ce conin date ce sunt exportate n alte baze de date sau sunt copii ale unor tabele, tabele cu istoria datelor. Aceasta se face cu instruciunea SELECT cu forma SELECT nume_coloana_1, nume_coloana_2, INTO nume_tabela_noua FROM nume_tabela_veche; Aceste tabele se creaz cu o interogare de tipul Make-Table Query n urmtorii pai: 1. se creaz o nou interogare n vederea Design, 2. se adaug tabela sau tabelele din care se vor extrage datele noii tabele, 3. se selecteaz cmpurile ce vor aprea n noua tabel, 4. se selecteaz meniul Query Make-Table Query, vezi Tabelul 3a i Tabelul 3b, i se afiaz caseta de dialog Make Table din Figura 59 unde se introduce numele noii tabele, DATE_CONTABILE_NOI. Proiectarea interogrii noii tabele este cea din Figura 60,

Figura 59. Caseta Make Table.

30

Figura 60. Interogarea pentru creare tabelei DATE_CONTABILE_NOI.

5. pentru a vedea datele ce vor fi introduse n noua tabel vom trece n vederea Datasheet; un clic pe butonul View, , afiaz lista View din Figura 3, n care alegem opiunea Datasheet View; liniile noii tabele vor fi cele din Figura 61,

Figura 61. Tabela DATE_CONTABILE_NOI.

6. Clic pe butonul Run i se afiaz caseta cu mesajul din Figura 62; clic pe butonul Yes i tabela este creat. Instruciunea SQL de creare a noii tabele este cea din Figura 63.

31

Figura 62. Mesaj la execuia interogrii.

Figura 63. Instruciunea SQL de creare a noii tabele.

1.12 Probleme propuse


In tabelele de mai jos atributele ce constituie cheia primar a tabelei sunt subliniate. 1. Fie tabela PROIECTE_ANGAJATI de mai jos. Coloanele ID_PRJ, ID_ANG, SAL_ORA i ORE sunt de tip numeric, celelalte de tip text. PROIECTE_ANGAJATI ID_PRJ 100 100 100 200 200 300 300 300 400 ID_ANG 1290 1293 1045 1192 1351 1348 1284 1067 1095 NUME_ANG Popescu Ionescu Georgescu Vasilescu Filipescu Popa Nicolae Marinescu Gheorghe DPT_ANG Informatica Support Documentare Informatica Support Informatica Support Documentare Informatica SAL_ORA 60 40 25 60 40 60 40 25 60 ORE 10 8 12 20 15 20 14 12 15

Se va proiecta tabela PROIECTE_ANGAJATI. Se vor defini condiiile de validare ORE >= 0, SAL_ORA>=20, ID_PRJ, 100 <= ID_PRJ <= 999, 1000 <= ID_ANG <= 9999. Se vor defini mti pentru introducerea cmpurilor ID_PRJ i ID_ANG. Se va defini nc un cmp, SALARIUL_TOTAL, ce va conine salariul total. Se va defini o interogare care s calculeze salariul total dup formula SALARIUL_TOTAL = SAL_ORA * ORE Se va scrie instruciunea UPDATE corespunztoare interogrii. 2. Fie tabela ANGAJATI de mai jos. Coloanele ID i SALARIU sunt de tip numeric, celelalte coloane sunt de tip text.

32

ANGAJATI ID 100 200 136 260 420 302 325 400 NUME Popescu Ionescu Vasilescu Georgescu Nicolae Gheorghe Vasile Popa PRENUME Ioan Vasile George Nicolae Dan Dan Nicolae George FACULTATE Matematica Electrotehnica Calculatoare Istorie Calculatoare Mecanica Fizica Chimie SALARIU 1100 1700 1490 820 1600 1420 1360 1650

Se va proiecta tabela ANGAJATI. Se vor defini condiiile de validare ID >= 100, SALARIU >= 600. Se va crea formulare de interogare care s micoreze salariul cu 15%. Se va scrie instruciunea UPDATE corespunztoare interogrii. 3. Fie tabela CHELTUIELI_PERSONALE de mai jos cu cheltuielile lunare ale unei familii. Toate coloanele sunt de tip numeric. CHELTUIELI_PERSONALE AN 2001 2002 2003 2004 2005 2006 VENITURI CHELTUIELI 420 370 430 410 520 500 540 548 625 590 590 620

Fie tabela NOI_CHELTUIELI_PERSONALE de mai jos cu cheltuielile lunare ale aceeai familii pe urmtorii trei ani. DATE_CONTABILE AN 2007 2008 2009 VENITURI CHELTUIELI 612 590 652 660 645 650

Se vor proiecta cele dou tabele. Se vor defini condiiile de validare VENITURI > 0, CHELTUIELI > 0. S se creeze o interogare care s insereze liniile tabelei NOI_CHELTUIELI_PERSONALE n tabela CHELTUIELI_PERSONALE.

33

4. Fie tabela SITUATIE_FINANCIARA_ORAS de mai jos. Toate coloanele sunt de tip numeric. SITUATIE_FINANCIARA_ORAS AN 2001 2002 2003 2004 2005 2006 VENITURI CHELTUIELI IMPRUMUTURI 420 440 470 410 550 500 620 648 705 690 690 720

Se va proiecta tabela SITUATIE_FINANCIARA_ORAS. Se vor defini condiiile de validare pentru cmpuri, VENITURI > 0, CHELTUIELI > 0, IMPRUMUTURI >= 0. Se va proiecta un formular de interogare pentru completarea cmpului IMPRUMUTURI. Formula de calcul a mprumuturilor este if(VENITURI < CHELTUIELI) IMPRUMUTURI = CHELTUIELI VENITURI else IMPRUMUTURI = 0 Se va proiecta un formular pentru inserarea unei linii n tabel cu datele anului 2007, VENITURI = 702, CHELTUIELI = 740.

1.13 Intrebri de control


1. 2. 3. 4. Care este forma instruciunii INSERT INTO? Care este forma instruciunii UPDATE? Care este forma instruciunii DELETE? Care este forma instruciunii CREATE TABLE?

34

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