Oracle-Fisa de laborator 2

Fisa de laborator- Interogari simple

Aplicatia 1:

Se cere sa se construiasca o tabela dupa urmatorul model:

TARA

id_tara NUMBER (3) primary key

nume VARCHAR2 (30)

presedinte VARCHAR2 (30)

continent VARCHAR2 (30)

populatie NUMBER (10)

religie VARCHAR2 (30)

suprafata NUMBER (10)

Se cere:

  • Sa se construiasca structura tabelei Tari

  • Sa se populeze tabela cu minim 10 inregistrari

  • Pentru fiecare cerinta sa se afiseze intr-o coloana cu titlul DETALII :

    • ..(tara)...se gaseste pe continentul ................. are o suprafata de ......... km2.

    • ....(presedinte)...este presedintele ....(tara)....

    • Suprafata ....(tara)......este de ......km patrati, iar populatia este de religie.......

  • Pentru toate tarile europene sa se afiseze numele

  • Care sunt tarile cu populatie cuprinsa in intervalul [20 mil, 40 mil] locuitori. A se rezolva aceasta cerinta in doua moduri (folosind clauza BEETWEN si folosind operatori de comparare)

  • Care sunt tarile cu o suprafata mai mica de 234 km2

  • Care sunt tarile de religie ‘crestin’, ‘evreu’ sau ‘musulman

  • Care sunt tarile care incep cu litera ‘R’

  • Care sunt tarile africane cu populatie mai mica de 50 mil.

  • Modificati structura tabelei si adaugati coloana:

prim_ministru VARCHAR2 (30)

  • Actualizati informatiile in tabele completand noua coloana

Aplicatia 2:

În entitatea ANGAJAT se memorează informaţii despre angajaţii unei firme.

Se cere:

1. Sa se determine care sunt

  • atributele obligatorii

  • atributele optionale

  • UID

2. Sa se contruiască folosind tabela ANGAJATI folosind comanda CREATE TABLE.

3. Sa se populeze baza de date cu 5 inregistrari

4. Sa se afiseze pe ecran structura tabelei formate folosind comanda DESCRIBE

5. Afisati intreg conţinutul tabelei pe ecran

6. Sa se afiseze o lista cu salariul anual al fiecarui angajat în urmatorul format:

7.Sa se afiseze lista angajatilor care au salariul mai mic de 1000 lei.

8. Sa se afiseze numele, prenumele şi salariul angajaţilor care au salariul cuprins intre 1000 lei si 2000 lei (folosind operatorul BETWEEN)

9. Care sunt angajatii care au salariul egal cu 1200,1400,1600,1800 lei. (folosind operatorul IN)

10. *** Se doreşte să se măreasca cu 15% salariile angajatilor care castigă mai putin de 1000 de lei. Afisaţi o situaţie cu noile salarii în formatul:

11. *** Se scade cu 25 % salariile personalului din conducere (cei care au mai mult de 3000 de lei).

12. ***Sa se modifice structura tabelei ANGAJAŢI prin adăugarea :

  • coloanei STUDII (se va completa din modul vizual cu următoarele valori: gimnaziale, liceale şi superioare

  • coloanei SPOR_ACORDAT(se va completa din modul vizual astfel 10 % pentru angajaţii cu studii gimnaziale, 20% pentru angajatii cu studii liceale şi cu 30% pentru angajatii cu studii superioare)

13.***Afisati o situatie a salariilor angajatilor în urmatoarea forma:

Aplicatia 3:

Un magazin on-line realizează desfacerea produselor prin intermediul unei aplicaţii informatice ce funcţionează conform următoarei diagrame ERD:

În cadrul unei comenzi preţul specificat este pentru o unitate de produs. Un client poate face într-o zi mai multe comenzi, însă o comandă se înregistrează pentru un singur client.

Cerinte:

1. Stabiliti tipul de relaţie dintre cele doua entităţi

2. Citiţi relaţia dintre CLIENT si COMANDA

3. Stabiliţi care este tabela „părinte” şi care este tabela „copil”, si precizaţi cum se formează cheia externa(FK).

4. Construiti folosind comanda CREATE TABLE cele doua tabele, marcand care sunt cheile primare (Primary Key) din fiecare.

5. Stabiliţi folosind ”modul vizual” relaţia dintre cele doua tabele, stabilind cheia straina.

6. Completaţi folosind comanda INSERT INTO astfel cele doua tabele:

  • cu 4 înregistrari tabela CLIENTI

  • cu 8 inregistrari tabela COMENZI

7. Afisati pe ecran structura si apoi conţinutul celor doua tabele, folosind comenzile

DESCRIBE şi SELECT

8. Scrieţi o interogare care sa afiseze pe ecran numele si telefonul fiecarui client.

9. ***Care sunt produsele comandate astăzi?

10.***Sa se afiseze numele si adresa clienţilor care nu au adresa de email, afisarea realizându-se intr-o singura coloana cu titlul „Lista clienţilor fara email”

11. ***Afişati pentru fiecare client ce produse a comandat astfel:

OBSERVATIE:subiectele marcate *** de grad ridicat de dificultate

Exemplu de test:

Exerciţiul 1.

a. (2p) Desenaţi două entităţi la alegere între care să existe relaţie de tipul 1 : M (unul la mai mulţi). Se va

desena şi relaţia dintre cele două entităţi. Pentru fiecare dintre aceste două entităţi desenaţi câte cel puţin 5

atribute. (fiecare entitate trebuie sa aibă UID, cel puţin 3 atribute obligatorii şi cel puţin un atribut opţional). Precizati care este rolul atributului UID.

b.(1p) Scrieţi (cum se citesc) relaţiile dintre cele două entităţi desenate mai sus în termenii „fiecare... poate/trebuie ...... unul si numai unul/unul sau mai mulţi”.

Exerciţiul 2.

a. (1p) Scrieţi o comandă SQL care să creeze tabela ELEVI cu următoarele coloane:

Cnp - sir de caractere de lungime 13, cheie primara

Nume - sir de caractere de lungime maxima 30, atribut obligatoriu

Prenume - sir de caractere de lungime maxima 30, atribut obligatoriu

Nota_1 - întreg de lungime 2, atribut obligatoriu

Nota_2 - întreg de lungime 2, atribut obligatoriu

b. (1p) Scrieţi o comandă SQL care să insereze in tabel o inregistrare.

c. (1p) Scrieţi o comandă SQL care să afiseze numele si prenumele elevilor, iar in coloana denumita Media, media aritmetică dintre Nota_1 şi Nota_2. Elevii vor fi afisati in ordine alfabetica.

d. (1p) Scrieţi o comandă SQL care să selecteze numele şi prenumele elevilor ce au Nota_1 intre 6 şi 8, iar Nota_2 are valoarea 5, 7, 9 sau 10.

e. (1p) Scrieţi o comandă SQL care să afiseze intr-o singura coloana denumita ”Informatii” , informatiile despre elevii din judetul Suceava in urmatoarea forma:

Elevul...(prenume nume)... a obtinut notele...(nota1).....si ......(nota2).....

Se stie ca persoanele nascute in judetul Suceava au CNP-ul de forma XXXXXXX33XXXX.

f. (1p) Afisati elevii al caror prenume contin litera 'c'. Aveti grija! Litera c este diferita de litera C !!!!!