This shows you the differences between two versions of the page.
bd:laboratoare:03 [2019/03/02 15:13] iulia.radulescu [Crearea unei copii a unui tabel] |
bd:laboratoare:03 [2021/03/16 12:38] (current) ciprian.truica [Exerciții individuale] |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Laborator 03 - Cereri cu variabile substituite în SQL*Plus===== | ===== Laborator 03 - Cereri cu variabile substituite în SQL*Plus===== | ||
- | **Conținut** | + | |
+ | ==== Obiective ==== | ||
* Crearea unei copii a unui tabel | * Crearea unei copii a unui tabel | ||
* Variabile substituite | * Variabile substituite | ||
Line 9: | Line 11: | ||
* Variabile definite cu DEFINE și resetate cu UNDEFINE | * Variabile definite cu DEFINE și resetate cu UNDEFINE | ||
* Exerciții | * Exerciții | ||
+ | ==== Materiale ajutătoare ==== | ||
+ | |||
+ | [[bd:resurse:tables|Resurse BD]] | ||
+ | |||
+ | {{:bd:laboratoare:laborator03.pdf|Laborator 3}} | ||
+ | |||
==== Crearea unei copii a unui tabel ==== | ==== Crearea unei copii a unui tabel ==== | ||
Line 20: | Line 28: | ||
Ex1. Să se creeze o copie a tabelului **emp**. Folosiți ambele metode. | Ex1. Să se creeze o copie a tabelului **emp**. Folosiți ambele metode. | ||
- | {{:bd:laboratoare:t4.png?nolink&400 |}} | + | {{ :bd:laboratoare:create_methods.png?nolink&400 }} |
**Observații:** | **Observații:** | ||
* Niciuna dintre metode nu păstrează constrângerile de Primary Key, Unique, Foreign Key. **Excepție este NOT NULL**; | * Niciuna dintre metode nu păstrează constrângerile de Primary Key, Unique, Foreign Key. **Excepție este NOT NULL**; | ||
* Daca cererea SELECT contine o expresie sau functie trebuie sa i se atribuie un alias valid. | * Daca cererea SELECT contine o expresie sau functie trebuie sa i se atribuie un alias valid. | ||
- | {{colbegin}} | + | |
- | {{**Metoda I** | + | **Metoda I** |
* Permite schimbarea numelor coloanelor. | * Permite schimbarea numelor coloanelor. | ||
- | * Unordered List ItemDaca copia nu are definit acelasi numar de coloane ca tabelul original trebuie sa se specifice in SELECT coloanele din care se vor insera date. | + | * Daca copia nu are definit acelasi numar de coloane ca tabelul original trebuie sa se specifice in SELECT coloanele din care se vor insera date. |
- | * Unordered List ItemDaca copia nu respecta ordinea coloanelor din tabelul original trebuie sa se specifice coloanele - atat in INSERT cat si in SELECT. | + | * Daca copia nu respecta ordinea coloanelor din tabelul original trebuie sa se specifice coloanele - atat in INSERT cat si in SELECT. |
- | }} | + | |
- | {{**Metoda II** | + | **Metoda II** |
- | * Unordered List ItemColoanele din copie vor pastra aveleasi nume ca si coloanele din tabelul original. | + | * Coloanele din copie vor pastra aveleasi nume ca si coloanele din tabelul original. |
- | }} | + | |
- | {{colend}} | + | |
- | * Prima metoda permite schimbarea numelor de coloana, a doua metoda nu permite acest lucru; | + | |
- | * Pentru metoda I, dacă copia nu are același număr de coloane atunci trebuie să se specifice coloanele în care se vor insera date; | + | |
- | * Pentru metoda I, dacă copia nu respectă ordinea coloanelor din tabelul original, atunci trebuie să se specifice coloanele, atât pentru Insert cât și pentru Select. | + | |
- | * Pentru metoda II, coloanele vor avea același nume ca și coloanele din tabela originală. | + | |
==== Variabile substituite ==== | ==== Variabile substituite ==== | ||
Line 52: | Line 55: | ||
<color red>Ex. 1.</color> Să se selecteze id_ang, nume, functie și salariu pentru angajatii care au același sef. Id-ul șefului se va introduce de la tastatură. | <color red>Ex. 1.</color> Să se selecteze id_ang, nume, functie și salariu pentru angajatii care au același sef. Id-ul șefului se va introduce de la tastatură. | ||
- | {{ :bd:laboratoare:lab03.ex1a.png |}} | + | {{ :bd:laboratoare:lab3_1_new.png |}} |
Rezultatul execuției exercițiului 1: | Rezultatul execuției exercițiului 1: | ||
Line 66: | Line 69: | ||
<color red>Ex. 2.</color> Să se selecteze numele, funcția și salariu pentru angajații care au aceași funcție. Funcția va fi introdusa de la tastatură. | <color red>Ex. 2.</color> Să se selecteze numele, funcția și salariu pentru angajații care au aceași funcție. Funcția va fi introdusa de la tastatură. | ||
- | {{ :bd:laboratoare:lab03.ex2a.png |}} | + | {{ :bd:laboratoare:lab3_2_new.png |}} |
Rezultatul execuției exercițiului 2: | Rezultatul execuției exercițiului 2: | ||
Line 80: | Line 83: | ||
<color red>Ex. 3.</color> Să se selecteze numele, funcția și salariul anual pentru toți angajații din același departament. Salariul anual este calculat după formula 12*salariu. Se va introduce de la tastatură funcția pentru salariul anual, numele tabelului, numele coloanei pe care se pune condiția și id-ul departamentului. | <color red>Ex. 3.</color> Să se selecteze numele, funcția și salariul anual pentru toți angajații din același departament. Salariul anual este calculat după formula 12*salariu. Se va introduce de la tastatură funcția pentru salariul anual, numele tabelului, numele coloanei pe care se pune condiția și id-ul departamentului. | ||
- | {{ :bd:laboratoare:lab03.ex3a.png |}} | + | {{ :bd:laboratoare:lab3_3_new.png |}} |
Rezultatul execuției exercițiului 3: | Rezultatul execuției exercițiului 3: | ||
Line 94: | Line 97: | ||
<color red>Ex. 4.</color> Să se selecteze numele, funcția și venitul lunar pentru toți angajații care au venitul lunar mai mare de 2000. Venitul lunar este o funcție care are formula salariu + nvl(comision, 0). | <color red>Ex. 4.</color> Să se selecteze numele, funcția și venitul lunar pentru toți angajații care au venitul lunar mai mare de 2000. Venitul lunar este o funcție care are formula salariu + nvl(comision, 0). | ||
- | {{ :bd:laboratoare:lab03.ex4a.png |}} | + | {{ :bd:laboratoare:lab3_4_new.png |}} |
Rezultatul execuției exercițiului 4: | Rezultatul execuției exercițiului 4: | ||
Line 116: | Line 119: | ||
Se va scrie următorul select înr-un fișier: | Se va scrie următorul select înr-un fișier: | ||
- | {{ :bd:laboratoare:lab03.ex5a.png |}} | + | {{ :bd:laboratoare:lab3_5_new.png |}} |
Execuția fișierului: | Execuția fișierului: | ||
Line 130: | Line 133: | ||
Când definim o variabilă cu ampersand, promptul va fi numele variabilei; | Când definim o variabilă cu ampersand, promptul va fi numele variabilei; | ||
Folosind comanda ACCEPT, se poate redefini promptul și chiar se pot ascunde caracterele introduse de la tastatură. | Folosind comanda ACCEPT, se poate redefini promptul și chiar se pot ascunde caracterele introduse de la tastatură. | ||
+ | |||
+ | <note> | ||
+ | Sintaxa completă pentru comanda ACCEPT [[https://docs.oracle.com/en/database/oracle/oracle-database/19/sqpug/ACCEPT.html#GUID-5D07E526-202B-429B-9E0C-005D1E37BBAB|Link]] | ||
+ | <code> | ||
+ | ACC[EPT] variable [NUM[BER] | CHAR | DATE | BINARY_FLOAT | BINARY_DOUBLE] [FOR[MAT] format] [DEF[AULT] default] [PROMPT text|NOPR[OMPT]] [HIDE] | ||
+ | </code> | ||
+ | </note> | ||
+ | |||
<color red>Ex. 6.</color> Să se selecteze numele, salariul și funcția angajaților care au aceeași funcție. Funcția se va da de la tastatură. | <color red>Ex. 6.</color> Să se selecteze numele, salariul și funcția angajaților care au aceeași funcție. Funcția se va da de la tastatură. | ||
Se vor scrie următoarele comenzi într-un fisier (de exemplu ex6.sql) | Se vor scrie următoarele comenzi într-un fisier (de exemplu ex6.sql) | ||
- | {{ :bd:laboratoare:lab03.ex6a.png |}} | + | {{ :bd:laboratoare:lab3_6_new.png |}} |
Execuția fișierul: | Execuția fișierul: | ||
Line 143: | Line 154: | ||
<color red>Ex. 7.</color> Să se adauge un nou angajat. La introducerea salariului caracterele să fie ascunse. | <color red>Ex. 7.</color> Să se adauge un nou angajat. La introducerea salariului caracterele să fie ascunse. | ||
- | {{ :bd:laboratoare:lab03.ex7a.png |}} | + | {{ :bd:laboratoare:lab3_7_new.png |}} |
Execuția fișierului: | Execuția fișierului: | ||
Line 154: | Line 165: | ||
<color red>Ex. 8.</color> Să se calculeze o primă de 15% pentru toți angajații din departamentul 20. | <color red>Ex. 8.</color> Să se calculeze o primă de 15% pentru toți angajații din departamentul 20. | ||
- | {{ :bd:laboratoare:lab03.ex8a.png |}} | + | {{ :bd:laboratoare:lab3_8_new.png |}} |
Rezultatul execuției exercițiului 8: | Rezultatul execuției exercițiului 8: | ||
Line 165: | Line 176: | ||
====Exerciții individuale==== | ====Exerciții individuale==== | ||
- | 1. Să se scrie o comandă SQL care listează toți angajații dintr-un departament (introdus ca parametru de la tastatură), care au venitul anual peste un venit mediu anual (introdus tot de la tastatură) | + | 1. Să se scrie o comandă SQL care listează toți angajații dintr-un departament (introdus ca parametru de la tastatură), care au venitul anual peste un venit mediu anual (introdus tot de la tastatură). |
+ | Să se afișeze numele angajatului, id-ul de departamentul, venitul anual. | ||
Dați cel puțin 4 metode de rezolvare. | Dați cel puțin 4 metode de rezolvare. | ||
- | ====Bibliografie==== | + | |
- | - **Alexandru Boicea** -// Oracle SQL SQL Plus//, Editura Printech | + |