Sunteți pe pagina 1din 85
               
 
                     
         
                     
     
                     
           
                     
                   

Limbaje de programare şi baze de date

1

Limbaje de programare ş i baze de date 1 SISTEMUL DE GESTIUNE A BAZELOR DE DATE

SISTEMUL DE GESTIUNE A BAZELOR DE DATE

ş i baze de date 1 SISTEMUL DE GESTIUNE A BAZELOR DE DATE Principalele obiective ale

Principalele obiective ale capitolului sunt:

Concepte principale din teoria relaţională Cheia primară Cheia externă Sisteme de gestiune a bazelor de date

Sistemul de gestiune a bazelor de date (SGBD) este componenta unui sistem de bază de date care are rolul de a permite descrierea şi manipularea conform unui model de date. În momentul actual, cea mai mare parte a SGBD-urilor care se utilizează sunt bazate pe modelul relaţional. VFP este un SGBD relaţional cu limbaj propriu, care suportă un nucleu extins din limbajul relaţional SQL (Structured Query Language).

2

Suport pentru laborator

PRINCIPALELE CONCEPTE DIN TEORIA RELAŢIONALĂ

Domeniul - reprezintă un ansamblu de valori, caracterizat printr-un nume. Domeniul se poate defini explicit, prin enumerarea tuturor valorilor care aparţin acestuia (exemplu D1:{roşu, galben, albastru}), sau implicit prin precizarea proprietăţilor pe care le au valorile domeniului respectiv (exemplu: D2:{e/eN } Relaţia - (tabela) reprezintă un subansamblu al produsului cartezian dintre mai multe domenii (D1xD2x…) caracterizat printr-un nume. Reprezentarea folosită pentru o relaţie (R) este tabloul bidimensional (tabela de date) de forma:

ie (R) este tabloul bidimensional (tabela de date) de forma: Atributul este coloana unei rela ţ

Atributul este coloana unei relaţii caracterizate printr-un nume. Fiecare atribut îşi ia valorile dintr-un domeniu. Mai multe atribute pot lua valori din acelaşi domeniu. Tuplul este linia dintr-o relaţie şi nu are nume. Valorile dintr-un

tuplu aparţin produsului cartezian dintre domeniile relaţiei (exemplu

tuplul v1, v2, ,vn,

cu n m numere

întregi). Schema relaţiei este un ansamblu format din numele relaţiei (R) urmat între parantaze rotunde de lista atributelor (Ai), pentru fiecare atribut precizându-se domeniul asociat (Dj):

unde v1D1, v2D2,

,vnDm,

R(A1:D1, A2:D2, ,An:Dm):

unde n m numere întregi. Cheia este un atribut sau un ansamblu de atribute cu ajutorul căruia se poate identifica un tuplu dintr-o relaţie. Cheia este primară dacă identificarea este unică, adică există un singur tuplu cu o anumită valoare pentru cheie.

Limbaje de programare şi baze de date

3

Cheia 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 relaţie R1, dacă ansamblul de atribute care o defineşte ia valori din aceleaşi domenii ca şi cheia primară a unei relaţii R2 si dacă are rolul de a stabili o legătura (asociere) între cele două relaţii.

Prezentare comparativă a noţiunilor privind organizarea datelor în memoria externă în fişiere, baze de date relaţionale (BDR) şi cele utilizate în VFP.

Mem

FISIER

CÂMP

-

CHEIE

-

-

externă

BDR

RELAŢIE

ATRIBUT

ASOCIERE

CHEIE

CHEIE

DOMENIU

PRIMARĂ

EXTERNĂ

VFP

TABELĂ

CÂMP

ASOCIERE

CHEIE

CHEIE

-

(LEGATURA)

PRIMARĂ

ASOCIERE CHEIE CHEIE - (LEGATURA) PRIMAR Ă Intreb ă ri: 1. Pentru tabelele FURNIZORI ş i

Intrebări:

1. Pentru tabelele FURNIZORI şi FACTURI (ANEXA 1) care sunt cheile? 2. Daţi exemplu de un atribut şi de un tuplu pentru relaţia FACTURI (ANEXA 1)

4

Suport pentru laborator

4 Suport pentru laborator GENERALIT ĂŢ I DESPRE APLICA Ţ IA VISUAL FOX PRO Principalele obiective

GENERALITĂŢI DESPRE APLICAŢIA VISUAL FOX PRO

GENERALIT ĂŢ I DESPRE APLICA Ţ IA VISUAL FOX PRO Principalele obiective ale capitolului sunt: Prezentarea

Principalele obiective ale capitolului sunt:

Prezentarea şi utilizare aplicaţia Visual Fox Pro Baze de date Crearea, consultarea şi actualizarea tabelelor

Visual Fox Pro (VFP) este un limbaj specializat în prelucrarea datelor, grupate în baze de date, permiţând întregistrarea, păstrarea, regăsirea şi analiza cu uşurinţă a acestora. O bază de date reprezintă o colecţie de informaţii - de exemplu nume, adrese, produse, facturi – care pot fi gestionate cu ajutorul unor aplicaţii specifice, printre care şi Visual Fox Pro. Pentru o mai bună organizare a bazelor de date sau a celorlalte obiecte, acestea sunt grupate într-un proiect, care reprezintă de asemenea şi baza realizării formatului distribuibil (executabil).

Limbaje de programare şi baze de date

5

UTILIZAREA APLICAŢIEI VISUAL FOX PRO

1. Clic pe Start

2. Activaţi opţiunea Programs

3. Clic pe pictograma aplicaţiei Visual Fox Pro

Programs 3. Clic pe pictograma aplica ţ iei Visual Fox Pro VFP dispune de o fereastr

VFP dispune de o fereastră principală care cuprinde:

bară de instrumente bară de meniu fereastră de comenzi
bară de
instrumente
bară de meniu
fereastră de comenzi

Elementele ferestrei VFP

Proiectele sunt formate din mai multe obiecte:

Obiect Descriere

Tabelele sunt formate din câmpuri (coloane) – care formeaz ă structura tabelei ş i înregistr ă sunt formate din câmpuri (coloane) – care formează structura tabelei şi înregistrări (rânduri) – reprezentând conţinutul tabelei. În cadrul fiecărui câmp există mai multe valori.

O baz ă de date trebuie s ă con ţ in ă cel pu ţ in bază de date trebuie să conţină cel puţin o tabelă.

Interogă ri ale tabelelor sau bazelor de date, respectiv decuparea ş i prezentarea datelor în ări ale tabelelor sau bazelor de date, respectiv decuparea şi prezentarea datelor în funcţie de anumite condiţii.

Formularele reprezint ă ferestre personalizate care ofer ă un acces ş i o vizualizare facil ă reprezintă ferestre personalizate care oferă un acces şi o vizualizare facilă a datelor dintr-o tabelă sau o interogare.

Rapoartele prezint ă datele dintr-o tabel ă sau o interogare într-un format imprimabil. prezintă datele dintr-o tabelă sau o interogare într-un format imprimabil.

6

Suport pentru laborator

CREAREA UNUI PROIECT

Pentru realizarea unui proiect, se procedează astfel:

1. Clic pe meniul File

2. Se activează opţiunea New

3. Se bifează opţiunea Project

4. Clic pe butonul New File

5. Se atribuie un nume proiectului şi se salvează în locaţia dorită.

proiectului ş i se salveaz ă în loca ţ ia dorit ă . Crearea unui nou

Crearea unui nou proiect

VFP pune la dispoziţia utilizatorilor un coordonator al întregii activităţi denumit “Project Manager”, care dispune de o fereastră cu 6 pagini ce grupează pe categorii elementele componente ale unui proiect şi o bară cu opţiuni dependentă de context.

Limbaje de programare şi baze de date

7

Limbaje de programare ş i baze de date 7 Fereastra Project Manager – f ă r

Fereastra Project Manager – fără tabele sau baze de date

În cazul în care fereastra Project Manager se închide, redeschiderea acesteia se realizează prin alegerea din meniul File a opţiunii Open şi apoi prin căutarea proiectului dorit în locaţia în care a fost salvat.

CREAREA ŞI CONSULTAREA UNEI TABELE

Crearea tabelelor se realizează în două etape:

I. Crearea structurii tabelelor (creare câmpuri); II. Crearea conţinutului tabelei (încărcarea informţiilor).

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 opţiunea Free Tables, apoi pe butonul New şi New Table.

4. Se atribuie o denumire tabelei şi se allege locaţi în care va fi salvată. În urma acestei acţiuni rezultă o fereastră denumită Table Designer.

În fereastra Table Designer există 3 pagini:

8

Suport pentru laborator

8 Suport pentru laborator Fereastra Table Designer • Fields • Indexes (pagina de • Table

Fereastra Table Designer

Fields

Indexes

(pagina

de

Table

(tabele),

(pagina de

indecşi);

cu

informaţii

câmpuri);

despre tabelă.

Pagina Fields cuprinde:

denumire câmp (name);

tip date (valori) aferente câmpului (type);

a

mărimea

maximă

valorilor (width);

opţiunea specifică tipului de date numeric (decimal);

indecşi (index);

indicatorul Null (dacă nu există 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 acţionarea butonului OK utilizatorul este interogaţ dacă doreşte să introducă date în tabelă, iar la alegerea opţiunii YES se pot introduce informaţii.

introduc ă date în tabel ă , iar la alegerea op ţ iunii YES se pot

Fereastra de confirmare

Limbaje de programare şi baze de date

9

La revenirea în Project Manager (PM) se observă la rubrica Free tables semnul + care arată faptul că au fost create tabele libere (neaparţinând unei bază de date).

tabele libere (neapar ţ inând unei baz ă de date). Buton pentru acces la structura tabelei/bazei

Buton pentru

acces la

structura

tabelei/bazei

de date

Buton

pentru

acces la

conţinutul

tabelei

Feareastra Project Manager – cu o tabelă

În partea din dreapta

a

ferestrei PM, în

pagina Data se

observă, există mai multe butoane pentru diverse opţiuni, astfel:

new – creare tabelă nouă;

adăugare

add

creată anterior;

tabelă

modify

structură tabelă;

modificare

– înregistrări tabelă;

browse

vizualizare

– eliminare/ştergere tabelă din proiectul curent;

build.

remove

Consultarea conţinutului 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 actualizarea conţinutului, este marcată de trei operaţii: adăugare, modificare şi ştergere a înregistrărilor, toate implicând vizualizarea iniţială a structurii tabelei cu ajutorul butonului/comenzii Modify/Modify structure.

10

Suport pentru laborator

A. Adăugarea şi modificarea câmpurilor se realizează astfel:

1. Din fereastra Project Manager se execută clic pe pagina Data şi se alege denumirea tabelei care trebuie actualizată.

2.

Se execută clic pe butonul Modify.

3.

Se realizează direct acţiunea dorită.

B.

Ştergerea câmpurilor se realizează astfel:

1. Din fereastra Project Manager se execută clic pe pagina Data şi se alege denumirea tabelei care trebuie actualizată.

2. Se execută clic pe butonul Modify.

3. Se execută clic pe denumirea câmpului care se doreşte a fi şters

şi apoi pe butonul Delete.

ACTUALIZAREA CONŢINUTULUI UNEI TABELE

Actualizarea conţinutului unei tabele este marcată de trei operaţii:

adăugare, modificare şi ştergere a înregistrărilor, toate implicând vizualizarea iniţială a conţinutului tabelei cu ajutorul butonului/comenzii Browse.

A. Adăugarea înregistrărilor se realizează astfel:

Pentru a adăuga o singură înregistrare:

1. Din fereastra Project Manager se execută clic pe pagina Data şi se alege tabele care trebuie actualizată.

2. Se execută clic pe butonul Browse.

3. Din meniul Table se activează opţiunea Append New Record şi se adaugă o înregistrare.

Pentru a adăuga mai multe înregistrări:

1. Din fereastra Project Manager se execută clic pe pagina Data şi

se alege tabele care trebuie actualizată.

2. Se execută clic pe butonul Browse.

3. Din meniul View se activează opţiunea Append Mode şi se

adugă, rând pe rând mai multe înregistrări.

B. Modificarea înregistrărilor se realizează după cum urmează:

Pentru a modifica independent înregistrările:

Limbaje de programare şi baze de date

11

1. Din fereastra Project Manager se execută clic pe pagina Data şi apoi pe butonul Browse efectuându-se apoi modificasrea pentru înregistrarea dorită.

Pentru a modifica înregistrările în funcţie de anumite criterii

1. Din fereastra Project Manager se execută clic pe pagina Data

şi apoi pe butonul Browse.

2. Din meniul Table se activează opţiunea Replace Field.

(se alege

câmpul în care va fi modificată cu informaţia) completând Replacement Criteria (domeniul înregistrărilor = totalitatea înregistrărilor afectate de execuţia unei comenzi).

3. Rezultă o fereastră în care la opţiunea Field

With

ă o fereastr ă în care la op ţ iunea Field With Vizualizarea con ţ inutului

Vizualizarea conţinutului tabelei şi modificarea înregistrărilor

Stabilirea domeniului înregistrărilor se face :

b. static (independent de informaţiile conţinute în înregistrări), utilizând clauzele:

All – se referă la toate înregistrările;

Next – de exemplu următoarele 4 înregistrări începând cu înregistrarea curentă;

Rest – se referă la înregistrarea curenta şi la toate celelalte înregistrări până la sfârşitul tabelei;

Record – înregistrarea a patra, de exemplu.

c. dinamic (în funcţie de informaţiile conţinute în înregistrări) utilizând:

12

Suport pentru laborator

for <condiţie> se referă la toate înregistrările din tabelă pentru care condiţia este adevarată;

while <condiţie> se referă la înregistrările cuprinse între înregistrarea curentă şi prima înregistrare pentru care condiţia este falsă.

C. Ştergerea înregistrărilor se realizează în două moduri

a) Ştergere logică, acest tip de ştergere permiţând recuperarea înregistrărilor. 1. Se vizulizează conţinutul tabelei.

2. Se acţionează cu mouse-ul spaţiul de ştergere aflat în stânga înregistrării care se doreşte a fi ştearsă logic, moment în care

înregistrarea va fi marcată. Înregistrarea poate fi recuperată executând un clic pe celaşi spaţiu.

fi recuperat ă executând un clic pe cela ş i spa ţ iu. Ş tergerea logic

Ştergerea logică a înregistrărilor

Pentru ştergerea unor înregistrări care îndeplinesc o anumită condiţie se utilizează din meniul Table opţiunea Delete Records. În fereastra rezultată se stabileşte domeniul înregistrărilor.

b) Ştergere fizică, acest tip de ştergere nepermiţând recuperarea înregistrărilor.

1. Se vizualizează conţinutul tabelei.

2. Se şterg logic înregistrările dorite.

3. Din meniul Table se alege opţiunea Remove Deleted Records apoi se execută clic pe butonul Yes.

Limbaje de programare şi baze de date

13

Limbaje de programare ş i baze de date 13 Confirmarea ş tergerii fizice a unei înregistr

Confirmarea ştergerii fizice a unei înregistrări

13 Confirmarea ş tergerii fizice a unei înregistr ă ri Intreb ă ri: Care sunt componentele

Intrebări:

Care sunt componentele unei tabele? Cum se construieşte o tabelă în Visual Fox Pro? Ce înseamnă actualizarea conţinutului unei tabele? Cum se actualizează conţinutul unei tabele? Prezentatţi modul de vizualizare a conţinututlui unei tabele. Prezentaţi modul de actualizare a structurii unei tabele.

Studiu individual Aplica ţ ia 1: Creare ş i actualizare tabel ă .
Studiu individual Aplica ţ ia 1: Creare ş i actualizare tabel ă .

Studiu individual

Aplicaţia 1: Creare şi actualizare tabelă.

APLICAŢIA 1

Creaţi o tabelă următoarea structură:

Nume

C

30

Prenume

C

30

Cod

N

3

Oras

C

20

Medie

N

6 ; 2

Admis

L

14

Suport pentru laborator

şi cu următorul conţinut :

 

Nume

Prenume

Cod

Oras

Medie

Admis

Ionescu

Maria

1

Iasi

9.27

 

Vlad

Mirela

8

Deva

9.50

 

Georgecu

Ana

5

Cluj

8.85

 

Popescu

Denisa

4

Arad

9.33

 

Rauta

Andreea

6

Deva

9.50

 

Stanciu

Roxana

2

Deva

9.10

 

Radulescu

Ruxandra

3

Cluj

9.29

 

Matei

Iuliana

7

Ploiesti

9.60

 

a) Să se adauge un nou câmp, denumit Admis.

b) Se presupune că doar candidatele cu medii peste 9.25 au fost admise. Să se completeze valorile corespunzătoare pentru câmpul Admis.

c) Candidatele din Deva sunt de fapt din Bucureşti. Să se modifice valorile corespunzătoare din câmpul oraş, stabilind domeniul înregistrărilor cu for.

d) Să se adauge înregistrarea:

Cretulescu

Alexandra

9

Orastie

8.00

F

e) Să se şteargă logic înregistrările aferente candidatelor care au obţinut medie mai mică decât 9.10, utilizând opţiunea Delete Record şi stabilind domeniul înregistrărilor cu for.

f) Să se şteargă fizic înregistrările şterse logic la punctul anterior.

Limbaje de programare şi baze de date

15

Limbaje de programare ş i baze de date 15 Baze de date. Sortare. Indexare Principalele obiective

Baze de date. Sortare. Indexare

ş i baze de date 15 Baze de date. Sortare. Indexare Principalele obiective ale capitolului sunt:

Principalele obiective ale capitolului sunt:

Crearea unei baze de date Înţelegerea conceptelor de sortare şi indexare Înţelegerea noţiunii de index. Tipuri de indecşi Validare la nivel de câmp şi înregistrare

CREAREA UNEI BAZE DE DATE

O bază de date este formată din una sau mai multe tabele cu legături între ele şi eventual secvenţe de cod. Pentru crearea unei baze de date se parcurge următoarea succesiune de paşi:

1. Se crează un nou proiect, rezultând pagina Project Manager.

2. Din pagina Data se selectează opţiunea Databases, se execută

clic pe butonul New şi se crează o baza de date, rezultând o fereastră denumită Database Designer. 3. În fereastra Project Manager se execută click pe semnul ‘+’ apărut în faţa denumirii bazei de date. Se selectează opţiunea Tables şi se execută clic pe butonul New.

16

Suport pentru laborator

16 Suport pentru laborator Fereastra Database Designer Fereastra Project Manager cu o tabel ă ş i

Fereastra Database Designer

16 Suport pentru laborator Fereastra Database Designer Fereastra Project Manager cu o tabel ă ş i

Fereastra Project Manager cu o tabelă şi o bază de date

SORTAREA ŞI INDEXAREA UNEI TABELE

Sortarea reprezintă ordonarea fizică a înregistrărilor unei tabele. În urma sortării rezultă o noua tabelă în care înregistrările sunt aranjate într-o anumita ordine. Ordonarea fizică a înregistrărilor tabelei se realizează utilizând instrucţiunea:

sort on <denumire câmp> to <denumire fisier nou> Aceasta va fi aşadar scrisă în fereastra de comenzi, urmată de apăsarea butonului Enter de la tastatură. Pentru a vizualiza conţinutul noii tabele, mai întâi aceasta se deschide, utilizând comanda use <denumire fişier nou>. Se execută comanda browse.

Indexarea reprezintă ordonarea logică a înregistrărilor unei tabele. În urma indexării înregistrările tabelei sunt vizualizate într-o anumită ordine, dată de index. Se pot stabili mai mulţi indecşi dar numai unul este activ la un moment dat. Indexul poate fi :

Regular (normal)

Unique (unic), adică într-un câmp pot fi introduse valori egale, dar prin alegerea acestui tip de index doar prima în ordinea apariţiei va fi accesibilă

Limbaje de programare şi baze de date

17

Primary (primar), adică cel care asigură identificarea unică a înregistrărilor unei tabele. Acest tip de index poate fi stabilit doar dacă tabela face parte dintr-o bază de date. Pentru o tabelă se poate stabili un singur index primar. Indexul primar obligă ca toate valorile din câmpul ales să fie distincte.

Candidate (candidat), utilizat în cazul în care într-o tabela este nevoie de mai multe câmpuri cu valori distincte. Deoarece se poate stabili doar un singur index primar, pentru celelalte câmpuri în care sunt necesare valori distincte, se aleg indecşi de tip candidat.

MODUL DE STABILIRE A INDECŞILOR

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 pagina

Fields se execută un clic pe câmpul care va fi stabilit ca index. d) Din opţiunea Index se alege Ascending (crescător) sau Descending (descrescător), adcă valorile din câmpul respectiv vor fi ordonate crescător/descrescător.

respectiv vor fi ordonate cresc ă tor/descresc ă tor. Fereastra Table Designer – op ţ iunile

Fereastra Table Designer – opţiunile Ascending/Descending

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

se alege tipul de index dorit.

18

Suport pentru laborator

18 Suport pentru laborator Fereastra Table Designer – tipuri de indec ş i MODUL DE ACTIVARE

Fereastra Table Designer – tipuri de indecşi

MODUL DE ACTIVARE A INDECŞILOR

a) Se vizualizeaza conţinutul tabelei.

b) Din meniul Table se selectează optiunea Properties. Din pagina

Index order se alege denumirea câmpului care se doreşte a fi activat.

c) Se execută clic pe butonul OK.

câmpului care se dore ş te a fi activat. c) Se execut ă clic pe butonul

Fereastra de activare unui index

Limbaje de programare şi baze de date

19

Alte opţiuni aferente unei tabele dintr-o bază de date

Alte op ţ iuni aferente unei tabele dintr-o baz ă de date 1. Se selecteaza denumirea

1. Se selecteaza denumirea tabelei din fereastra Project Manager,

se executa Modify.

2. În pafina Fields , în josul paginii există anumite opţiuni care vor fi

utlizate după cum urmează:

Format: stabileşte un format de editare pentru valorile unui câmp, de exemplu formatul “a” permite introducerea numai a literelor şi a cifrelor. Cum se procedează ?

Se executa clic pe câmpul dorit şi în opţiunea Format se scrie litera

a.

Input mask : permite stabilirea unei “măşti de intrare”, de exemplu, stabilirea faptului că prima litera va fi majusculă Cum se procedeaza ? Se executa clic pe campul dorit şi în opţiunea Input mask se scrie : !aaaaaaaaaa.

Caption : permite stabilirea unei denumiri mai lungi pentru câmpuri Cum se procedează ? Se execută clic pe câmpul căruia se doreşte a se modifica denumirea şi în opţiunea Caption se scrie denumirea dorită, având un număr mai mare de caractere decât cel permis în mod uzual.

Field Validation : permite validarea la nivel de câmp, adică interzice ieşirea din acel câmp dacă informaţia introdusă nu a corespuns unei cerinţe.

20

Suport pentru laborator

Cum se procedează ? Se executa clic pe câmpul ales şi în opţiunea Rule se scrie condiţia, în opţiune Message existând posibilitatea scrierii unui measaj. Observaţie : mesajul va fi afişat când condiţia de validare la nivelul câmpului nu este respectată.

În pagina Table există următoarele opţiuni :

. În pagina Table exist ă urm ă toarele op ţ iuni : • Record Validation

Record Validation : se poate realiza validarea la nivel de înregistrare Cum se procedează ? În opţiunea Rule se scrie condiţia, în opţiune Message se va scrie un mesaj corespunzător, aferent încălcării condiţiei. Obs : mesajul va fi afişat când condiţia de validare la nivelul înregistrărilor nu este respectată.

Insert trigger : limitează introducerea de noi înregistrări

Cum se procedează ? În opţiunea Insert trigger se scrie condiţia utilizând, de exemplu, RECNO()< sau > o valoare.

Update trigger : restricţionează modificarea denumirii oricărui câmp din tabelă.

Limbaje de programare şi baze de date

21

Cum se procedează ? În opţiunea Update trigger se scrie .F.

Delete trigger : interzice ştergerea oricărei înregistrări din tabelă, de exemplu se interzice ştergerea unei înregistrări. Cum se procedează ? În opţiunea Delete trigger se scrie RECNO()#<număr înregistrare>

Table comment: permite adăugarea unui comentariu referitor la înregistrările, structura sau utilitatea tabelei. Tot în cadrul acestei pagini se regăsesc şi informaţii despre locaţia pe hard disk unde se află tabela, precum şi numărul de înregistrări şi de câmpuri.

Observaţie:

pentru a vizualiza data în ordine azi/luna/an, în fereastra de comenzi se execută comanda set date to dmy

pentru a vizualiza anul de forma ‘1998’ in loc de ‘98’ se execută comanda set century on

in loc de ‘98’ se execut ă comanda set century on Intreb ă ri: Care este

Intrebări:

Care este diferenţa dintre o tabelă şi o bază de date? Ce înseamnă sortarea? Dar indexarea? Care sunt diferenţele dintre cele două concepte? Ce semnifică noţiunile de validare la nivel de câmp şi validare la nivel de înregistrare?

Studiu individual APLICA Ţ IA 2: Creare baz ă de date, creare tabel ă ,
Studiu individual APLICA Ţ IA 2: Creare baz ă de date, creare tabel ă ,

Studiu individual

APLICAŢIA 2: Creare bază de date, creare tabelă, stabilire şi activare indecşi, utilizarea opţiunilor suplimentare privind tabelele (validare la nivel de câmp şi la nivel de înregistrare).

22

Suport pentru laborator

APLICAŢIA 2

Să se creeze baza de date denumită STUDENT în care se află o tabelă cu următoarea structură:

Marca

N

4

Nume

C

30

Prenume

C

30

Oras

C

20

Data_ang

D

8

Salariu

N

10

şi cu următorul conţinut :

Marca

Nume

Prenume

Oras

Data_ang

Salariu

1

Ionescu

Maria

Iasi

11.01.00

500

13

Vlad

Mirela

Deva

04.04.99

600

134

Radu

Andrei

Cluj

12.07.03

350

140

Stan

Denisa

Arad

03.11.01

380

7

Rauta

Andreea

Deva

07.30.00

650

18

Stanciu

Alex

Brasov

08.15.98

400

39

Radulescu

Ruxandra

Cluj

09.16.00

260

57

Matei

Iuliana

Ploiesti

10.10.02

390

241

Cretulescu

Alexandra

Orastie

02.11.03

100

114

Filip

Carmen

Oradea

03.01.02

850

1. Să se sorteze tabela. Să se vizualizeze conţinutul tebelei rezultate.

2. Să se stabilească următorii indecşi: marca – index de tip primar şi oraş – index de tip normal.

3. Să se activeze pe rând indecşii stabiliţi la puncul anterior.

4. Să se stabilească pentru câmpul oraş formatul a.

5. să se stabilească faptul că pentru câmpul oraş prima literă va fi majusculă.

6. Să se stabilească pentru câmpul oraş o denimre mai lungă, respectiv: Locul nasterii angajatului

7. Regula de validare la nivelul câmpului marca nu permite valori mai mici decât 250. Să se stabilească acestă regulă şi, în cazul în care aceasta este încălcată să se afişeze mesajul: Marca trebuie sa fie mai mica decat 250.

Limbaje de programare şi baze de date

23

9. Regula de validare la nivelul înregistrărilor stabileşte ca salariul să nu fie mai mic decât 300. Să se stabilească acestă regulă şi, în cazul în care aceasta este încălcată să se afişeze mesajul:

Salariul trebuie sa fie mai mare decat 300.

10. Introduceţi o nouă înregistrare în care valoarea din câmpul salariu să încalce regula. Ce se întâmplă?

11. Limitaţi introducerea de noi înregistrări la 14 şi apoi introduceţi o nouă înregistrare. Ce se întâmplă?

12. Restricţionaţi modificarea denumirii oricărui câmp din tabelă. Verificaţi.

13. Interziceţi ştergerea primei înregistrări. Verificaţi.

14. Adăugaţi următorul comentariu referitor la tabelă: Aceasta tabela este utilizata pentru evidenta salaratilor firmei ALFA SRL, de la infiintare pana in prezent.

24

Suport pentru laborator

24 Suport pentru laborator BAZE DE DATE. LEG Ă TURI ÎNTRE TABELE Principalele obiective ale capitolului

BAZE DE DATE. LEGĂTURI ÎNTRE TABELE

pentru laborator BAZE DE DATE. LEG Ă TURI ÎNTRE TABELE Principalele obiective ale capitolului sunt: Prezentarea

Principalele obiective ale capitolului sunt:

Prezentarea tipurilor de legături între tabelele aparţinând unei baze de date

Între doua sau mai multe tabele aparţinând unei baze de date se pot stabili două tipuri de legături (relaţii):

1. legături temporare : valabile în cadrul sesiunii de lucru curente

2. legături permanente : valabile ori de câte ori se deschide baza

de date, se construiesc o singură dată şi fac parte integrantă din baza de date La stabilirea unei relaţii între două tabele una dintre tabele are rol conducător, fiind denumită tabela-părinte şi cealaltă tabelă este condusă, fiind denumită tabela-fiu.

Legăturile se stabilesc pe baza unui câmp comun celor două tabele, pentru valori egale aflate în acele câmpuri. Pentru tabela-părinte acest câmp se numeşte cheie primară, iar pentru tabela-fiu câmpul se numeşte cheie externă.

Limbaje de programare şi baze de date

25

De asemenea se impune o precizare: cheia primară reprezintă un câmp ale cărui valori au rol unic de identificare a fiecărei înregistrări. De exemplu, CNP este cheie primară într-o tabelă cu informaţii despre populaţia unui oraş, deoarece fiecare cetăţean are un singur CNP, deci fiecere înregistrare va fi unică, nu pot exista două înregistrări cu aceeaşi valoare CNP.

Stabilirea legăturilor temporare şi a legăturilor permanente presupune realizarea simultană a trei condiţii:

a) existenţa unei baze de date cu cel puţin două tabele ;

b) în tabela-părinte câmpul comun este index primar

c) în tabela-fiu câmpul comun este stabilit ca fiind index – de obicei normal.

LEGĂTURI TEMPORARE

1. Se crează un nou proiect sau se deschide un proiect existent, conţinând o bază de date.

2. Se verifică existenţa indecşilor sau se stabilesc indecşii în cazul în care nu sunt stabiliţi.

3. Din meniul Window se alege opţiunea Data Session. Se execută clic pe butonul Open, pentru a deschide tabelele.

4. Din fereastra obţinută astfel, denumită Open, se execută clic pe tabela care se doreşte a fi deschisă, bifând de semenea opţiunea Exclusive, apoi se execută clic pe butonul OK.

iunea Exclusive , apoi se execut ă clic pe butonul OK . Fereastra Data Session 5.

Fereastra Data Session

26

Suport pentru laborator

6. Se execută clic pe denumirea tabelei-părinte. Se execută clic pe butonul Relations.

7. În fereastra rezultantă, denumită denumită Set Index Order se execută OK, apoi în fereastra Expression Builder, în dreptul opţiunii SET RELATION se scrie denumirea câmpului comun, în cazul în care această denumire nu există deja.

8. Se execută clic pe butonul OK. În acest moment între cele două tabele a fost realizată o legătură temporară de tip one-to-one.

ă o leg ă tur ă temporar ă de tip one-to-one. Fereastra Expression Builder 9. În

Fereastra Expression Builder

9. În cazul în care se doreşte realizarea unei legături de tip one-to- many, se execută clic pe butonul 1 to many. Din fereastra rezultată, denumită Create One-To-Many Relationship se alege denumirea tabelei/tabelelor cu care se doreşte a se realiza legătura, se execută clic pe butonul Move şi apoi pe butonul OK.

Limbaje de programare şi baze de date

27

Limbaje de programare ş i baze de date 27 Fereastra pentru crearea leg ă turilor de

Fereastra pentru crearea legăturilor de tip one-to-many

10. Se vizualizează în paralel conţinutul tabelelor şi se execută un clic pe căte o înregistrare din tabela-părinte, în tabela-fiu fiind afişate doar înregistrările care conţin în index valoarea înregistrării curente din tabela-părinte.

valoarea înregistr ă rii curente din tabela-p ă rinte. Coresponden ţ a în modul Browse a

Corespondenţa în modul Browse a valorilor comune ale unui index

Se constată că principalul avantaj al legăturii temporare este acela că în momentul în care în tabela-părinte cursorul este mutat pe o înregistrare, în tabela-fiu sunt afişate doar înregistrările care conţin valoarea din câmpul comun aferent înregistrării din tabela-părinte.

LEGĂTURI PERMANENTE

1. Se deschide fereastra Database Designer, executând un clic în fereastra Project Manager pe denumirea bazei de date şi apoi pe butonul Modify. În acest moment structura şi indexul fiecărei tabele pot fi vizualizate.

28

Suport pentru laborator

2. Se execută un clic pe denumirea indexului primar corespunzător din tabela-părinte şi, prin metoda drag-and-drop se plasează cursorul pe denumirea corespunzătoare a indexului din tabela- fiu, eliberând cursorul. Se constată realizarea unei legături permamante.

Se constat ă realizarea unei leg ă turi permamante. Realizarea unei leg ă turi permanente Stabilirea

Realizarea unei legături permanente

Stabilirea unei legături permanente permite stabilirea integrităţii referenţiale. O restricţie de integritate referenţială se referă la faptul că în tabela-fiu nu pot exista înregistrări în care în cheia externă să fie înregistrate valori care nu se află în mulţimea valorilor cheii primare din tabela-părinte.

De exemplu, dacă se dau două tabele FACTURI [numar_factura, data_factura, cod_client] şi CLIENŢI [cod_client, nume_client, localitate], nu poate exista o înregistrare (numar_factura: 12, data_factura: 12/06/2005, cod_client: 111) dacă în tabela CLIENŢI nu există un client cu cod 111, altfel spus, nu poate exista o factură emisă de un client care nu există.

Integritatea referenţială se stabileşte astfel.

1. Se execută un clic dreapta pe legătura creată şi se alege opţiunea Edit Referential Integrity.

2. În fereastra rezultată, se pot stabili trei tipuri de reguli referitoare la înregistrările din ambele tabele:

Rules for Updating – reguli pentru actualizare;

Rules for Deleting – reguli pentru ştergere;

Rules for Inserting – reguli pentru inserare.

Limbaje de programare şi baze de date

29

Limbaje de programare ş i baze de date 29 Fereastra Referential Integrity Builder Pentru primele dou

Fereastra Referential Integrity Builder

Pentru primele două opţiuni, există trei posibilităţi: cascade, restrict şi ignore. Cascade se referă la faptul că atunci când o înregistrare conţinând o valoare ale indexului primar din tabela-părinte este modificată/ştearsă, se realizează actualizarea/ştergerea automată a înregistrărilor din tabela-fiu care conţin acea valoare. Restrict se referă la faptul că nu este permisă modificarea/ştergerea unei înregistrări, şi implicit a unei valor a indexului primar, atunci când în tabela-fiu se regăsesc înregistrări care conţin acea valoarea. Ignore se referă la posibilitatea actualizării/ştergerii independente a înregistrărilor din cele două tabele în momentul modificării/ştergerii unei valori a indexului primar. Pentru opţiunea Rulea for Inserting există dor două posibilităţi:

restrict şi ignore, referindu-se la faptul că nu este permisă/este permisă adăugarea unei noi înregistrări în tabela-fiu dacă valoarea înregistrată în index nu există în mulţimea valorilor indexului primar corespunzător tabelei-părinte.

Studiu individual Aplica ţ ia 3: Creare leg ă turi temporare ş i permamante între
Studiu individual Aplica ţ ia 3: Creare leg ă turi temporare ş i permamante între

Studiu individual

Aplicaţia 3: Creare legături temporare şi permamante între tabele aprţinând unei baze de date.

30

Suport pentru laborator

APLICAŢIA 3

Să se realizeze un nou proiect. Să se realizeze o bază de date. Să se creeze următoarele tabele, aparţinând bazei de date:

Structură

Conţinut

 

Cod_client

C

4

 

Cod_client

Nume

Oras

Nume

C

20

AMP

 

Amep

Brasov

Oras

C

10

 

COR

CorrImpex

Galati

   

DAV

Daval

Brasov

Index primar, ascendent :

 

ERG

Energo

Bucuresti

cod_client

 

HTR

Hatrom

Brasov

Structură

Conţinut

Nr_fact

N

10

Nr_fact

 

Cod_client

Data

 

Cod_client

C

4

23

AMP

05/11/05

Data

D

8

116

 

HTR

04/12/05

 

315

 

COR

06/04/05

117

 

DAV

12/03/04

Index primar, ascendent :

 

18

 

ERG

12/05/04

nr_fact Index normal, ascendent:

56

 

ERG

11/07/05

12

AMP

02/10/04

cod_client

 

Structură

Conţinut

Cod_produs

N

10

Cod_

Den_produs

PU

Cant

Nr_fact

Den_produs

C

30

produs

PU

N

10

1

Apa

2

500

56

Cant

N

10

minerala

Nr_fact

N

10

2

Biscuiti

1

55

116

 

3

Cereale

4

15

315

Index primar, ascendent :

4

Portocale

5

10

116

5

Servetele

1

150

117

cod_produs Index normal, ascendent: nr_fact

6

Ciocolata

3

40

116

7

Compot

2

14

18

8

Iaurt

3

12

23

 

9

Paine

1

100

12

Limbaje de programare şi baze de date

31

3. Să se stabilească legături temporare între cele trei tabele.

4. Să se stabilească legături permamante între cele trei tabele.

5. Să se stabilească următoarele restricţii de integritate referenţială: cascade pentru ştergere şi restrict pentru inserarea unei noi înregistrări.

6. Să se verifice integritatea referenţială prin ştergerea unei înregistrări existente şi prin adăugarea unei noi înregistrări.

32

Suport pentru laborator

32 Suport pentru laborator INSERAREA, MODIFICAREA Ş I Ş TERGEREA LINIILOR Principalele obiective ale capitolului

INSERAREA, MODIFICAREA ŞI ŞTERGEREA LINIILOR

laborator INSERAREA, MODIFICAREA Ş I Ş TERGEREA LINIILOR Principalele obiective ale capitolului sunt: Ad ă ugarea

Principalele obiective ale capitolului sunt:

Adăugarea unei linii într-o tabelă

tabelă

Ştergerea unor date dintr-o tabelă

Editarea unor date dintr-o

ADĂUGAREA UNEI LINII

Comanda SQL de adăugare de noi linii este INSERT, care are, în modul de lucru cel mai puţin pretenţios următorul format:

INSERT INTO TABELĂ [(ATRIBUT1, ATRIBUT2,

(VALOARE_ATRIBUT1, VALOARE_ATRIBUT2,

.)

.)] VALUES

În cazul tabelei ANGAJATI se poate introduce o nouă line astfel:

Se dă tabela Angajaţi cu urmatoarele date:

Limbaje de programare şi baze de date

33

Limbaje de programare ş i baze de date 33 INSERT INTO ANGAJATI VALUES (11, 'RADU', 'Info',

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

iar tabela va arăta astfel:

'Info', 250) iar tabela va ar ă ta astfel: STERGEREA LINIILOR Comanda SQL pentru ş tergerea

STERGEREA LINIILOR

Comanda SQL pentru ştergerea uneia sau mai multor linii dintr-o tabelă este DELETE

DELETE FROM TABELA WHERE CONDITIE

Dacă dorim să ştergem ultima înregistrare introdusă vom

avea:

DELETE FROM ANGAJATI WHERE NUME='RADU'

34

Suport pentru laborator

34 Suport pentru laborator În cazul Visual FOXPRO este nevoie de comanda PACK ca ş tergerea

În cazul Visual FOXPRO este nevoie de comanda PACK ca ştergerea să fie efectivă, astfel:

PACK Iar tabela va arăta astfel:

fie efectiv ă , astfel: PACK Iar tabela va ar ă ta astfel: MODIFICAREA VALORILOR UNOR

MODIFICAREA VALORILOR UNOR ATRIBUTE

Pentru a modifica valoarea unuia sau mai multor atribute sau mai multe linii dintr-o tabelă se foloseşte comanda UPDATE cu formatul general:

UPDATE TABELA SET ATRIBUT1=EXPRESIE

ATRIBUT2=EXPRESIE2

.] WHERE PREDICAT

[,

Limbaje de programare şi baze de date

35

Modificarea

se

va

produce

pe

toate

liniile

tabelei

care

îndeplinesc condiţia formulată prin predicat.

În cazul tabelei ANGAJATI dacă dorim schimbarea salariului în 1000 pentru angajata GABRIELA vom avea:

UPDATE

NUME='Gabriela'

ANGAJATI

SET

SAL_BRUT=1000

WHERE

NUME='Gabriela' ANGAJATI SET SAL_BRUT=1000 WHERE Studiu individual Aplica ţ ia 4: Introducere, ş
Studiu individual Aplica ţ ia 4: Introducere, ş tergere ş i modificarea unor date dintr-o
Studiu individual Aplica ţ ia 4: Introducere, ş tergere ş i modificarea unor date dintr-o

Studiu individual

Aplicaţia 4: Introducere, ştergere şi modificarea unor date dintr-o tabelă

APLICAŢIA 4

1. Creaţi tabela FACTURI (ca în ANEXA 1)

2. În tabela FACTURI (ANEXA 1) adăugaţi următoarele date:

36

Suport pentru laborator

36 Suport pentru laborator 3. În tabela FACTURI modifica ţ i VALOAREA la 75000 pentru toate

3. În tabela FACTURI modificaţi VALOAREA la 75000 pentru toate

facturile care au valoare mai mare de 10.000.

4. Ştergeţi toate facturile pentru care cod_furn este c1.

5. Modificati cod_furn în n99 pentru facturile a căror valoare este de

cel puţin 8000.

6. Ştergeti toate înregistrările pentru care nr_factură este mai mic de

4000.

7. Stergeti toate datele din tabela FACTURI.

8. Introduceţi cinci facturi noi utilizând INSERT şi cinci facturi utilizând BROWSE.

Limbaje de programare şi baze de date

37

Limbaje de programare ş i baze de date 37 NUCLEUL SQL ÎN VISUAL FOX PRO Principalele

NUCLEUL SQL ÎN VISUAL FOX PRO

Principalele obiective ale capitolului sunt: Introducere în conceptul de interogare a bazelor de date Sintaxa
Principalele obiective ale capitolului sunt: Introducere în conceptul de interogare a bazelor de date Sintaxa

Principalele obiective ale capitolului sunt:

Introducere în conceptul de interogare a bazelor de date Sintaxa şi utilizarea comenzii SELECT

CONCEPTUL DE INTEROGARE ŞI COMANDA SELECT

Extragerea informaţiilor din una sau mai multe tabele libere sau aparţinând unei baze de date, pe baza unor criterii definite de utilizator poartă denumirea de interogare. Visual Fox Pro include un set de comenzi ale limbajului SQL (Structured Query Language) care permite interogarea tabelelor şi furnizarea rezultatelor sub forma unor interogări, care pot fi depozitate la o destinaţie precizată. Prin intermediul unei interigări se construieşte o instrucţiune SELECT a acestui limbaj, care cuprinde întregul mecanism de interogare al VFP. Rezultatele interogărilor se pot obţine cu ajutorul unui generator denumit Query Designer, cu posibilitate de utilizare pe baza rubricii Queries din fereastra Project Manager, existând posibilitatea de a utiliza de asemenea şi ajutorul oferit de VFP prin intermediul Query Wizard.

38

Suport pentru laborator

O altă posibilitate de obţinere a rezultatelor interogărilor este

utilizarea comenzii Select, reprezentată de o sintaxă specifică, comandă care va fi executată în fereastra de comenzi. Exemplificarea utilizării comenzii Select se va realiza utilizând o bază de date cu informaţii necesare organizării sesiunii studenţeşti.

PRINCIPALELE CLAUZE ALE FRAZEI SELECT

Orice frază de tip SELECT are trei clauze principale:

SELECT FROM WHERE Dintre aceste trei clauze doar SELECT şi FROM sunt obligatorii în orice frază.

SELECŢIA ŞI PROIECŢIA

Clauza SELECT corespunde operatorului proiecţie din algebra relaţională, fiind utilizată pentru desemnarea listei de atribute (coloane) din rezultat. Clauza FROM este cea în care sunt enumerate relaţiile din care vor fi extrase informaţiile aferente consultării. Clauza WHERE desemnează predicatul selectiv al algebrei relaţionale (condiţia), relativ la atribute ale relaţiilor care apar în clauza FROM. La modul general, o consultare SQL poate fi prezentată sub forma:

select c1,c2, ,cn from r1,r2, ,rm where p

unde:

cj - reprezintă coloanele rezultat; rj - reprezintă relaţiile ce trebuie parcurse;

p - reprezintă predicatul, condiţia ce trebuie îndeplinită de tupluri (linii) pentru a fi incluse în rezultat.

Predicatul poate fi simplu sau compus (din mai multe condiţii). Când clauza WHERE este omisă se consideră implicit că predicatul p are valoare logică ''adevărat'', astfel încât în rezultat vor

Limbaje de programare şi baze de date

39

fi incluse toate liniile din tabelă sau produsul cartezian al tabelelor, enumerate în clauza FROM.

apare simbolul *,

rezultatul va fi alcătuit din toate coloanele relaţiilor specificate în clauza FROM. Atributele rezultatului preiau numele din tabela (tabelele) specificate în clauza FROM. Schimbarea numelui se realizează prin caluza AS.

Dacă

în

locul

coloanelor

c1,c2,

,cn

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 utilizarea opţiunii DISTINCT.

exemplu:

select distinct c1,c2 from r1

În concluzie, o frază SELECT, corespunde:

unei selecţii algebrice (clauza WHERE p)

unei proiecţii (SELECT ci)

unui produs cartezian (FROM - r1 r2

rm)

şi conduce la obţinerea unui rezultat cu n coloane, fiecare coloană

fiind: un atribut din r1,r2, atribute din r1,r2,

sau expresie calculată pe baza unor

,rm

Execuţia unei fraze SELECT realizează un rezultat sub formă tabelară. Rezultatul poate fi:

1. o listă (text)

2. o tabelă propriu-zisă

3. o tabelă temporară

4. o tabelă derivată (imagine)

5. o variabilă masiv (tablou)

Exemplu:

Utilizăm tabela ANGAJATI în care introducem următoarele

date:

40

Suport pentru laborator

40 Suport pentru laborator Datele tabelei angajati.dbf 1. Care sunt datele con ţ inute în tabela

Datele tabelei angajati.dbf

1. Care sunt datele conţinute în tabela angajati?

select nr, nume, prenume, data_nasterii, sal_brut, cod_dep from angajati sau:

select * from angajati

sal_brut, cod_dep from angajati sau: select * from angajati Rezultatele exemplului 1.1 2. Care sunt numele

Rezultatele exemplului 1.1

2. Care sunt numele salariaţilor şi salariul brut?

select nume, sal_brut from angajati

Rezultatele exemplului 1.1 2. Care sunt numele salaria ţ ilor ş i salariul brut? select nume,

Limbaje de programare şi baze de date

41

Rezultatele exemplului 1.2

3. Care sunt numele salariaţilor şi salariul brut, dar pentru coloana

sal_brut denumim coloana salariu_brut?

select nume, sal_brut as salariu_brut from angajati

select nume, sal_brut as salariu_brut from angajati Rezultatele exemplului 1.3 4. Afi ş a ţ i

Rezultatele exemplului 1.3

4. Afişaţi numele angajatilor şi salariul brut, pentru salariaţii care au

salariul brut mai mare de 700 lei

select nume from angajati where sal_brut>700

de 700 lei select nume from angajati where sal_brut>700 Rezultatele exemplului 1.4 5. Care sunt datele

Rezultatele exemplului 1.4

5. Care sunt datele salariaţilor care lucrează în departamentul informatic (cod_dep="info")?

select * from angajati WHERE cod_dep="info"

informatic (cod_dep="info")? select * from angajati WHERE cod_dep="info" Rezultatele exemplului 1.5

Rezultatele exemplului 1.5

42

Suport pentru laborator

6. Care sunt datele salariaţilor care lucrează în departamentul

informatic (cod_dep="info") şi care au salariul brut mai mare de 700 de lei?

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

angajati where cod_dep="info" and sal_brut>700 Rezultatele exemplului 1.6 7. Afi ş a ţ i numele salaria

Rezultatele exemplului 1.6

7. Afişaţi numele salariaţilor şi codul departamentului pentru

angajatii care sunt fie în departamentul informatic (cod_dep="info") fie în departamentul contabilitate (cod_dep="cont")

select

cod_dep="cont"

nume,

cod_dep

from

angajati

where

cod_dep="cont" nume, cod_dep from angajati where cod_dep="info" Rezultatele exemplului 1.7 or 8. Afi

cod_dep="info"

Rezultatele exemplului 1.7

or

8. Afişaţi numele angajaţilor şi data naşterii pentru angajaţii născuţi

după 15-03-1980 (formatul pentru data este {^yyyy/mm/dd})

select nume, data_nasterii from angajati where data_nasterii >

{^1980/03/15}