This shows you the differences between two versions of the page.
|
bd:laboratoare:03 [2019/02/19 14:20] maria_luiza.serban [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:carbon_ex3_1.png?nolink&400|}} {{:bd:laboratoare:t.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**; |
| - | * Prima metoda permite schimbarea numelor de coloana, a doua metoda nu permite acest lucru; | + | * Daca cererea SELECT contine o expresie sau functie trebuie sa i se atribuie un alias valid. |
| - | * 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. | + | **Metoda I** |
| - | * Pentru metoda II, coloanele vor avea același nume ca și coloanele din tabela originală. | + | * Permite schimbarea numelor coloanelor. |
| + | * 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. | ||
| + | * Daca copia nu respecta ordinea coloanelor din tabelul original trebuie sa se specifice coloanele - atat in INSERT cat si in SELECT. | ||
| + | |||
| + | **Metoda II** | ||
| + | * Coloanele din copie vor pastra aveleasi nume ca si coloanele din tabelul original. | ||
| ==== Variabile substituite ==== | ==== Variabile substituite ==== | ||
| Line 41: | 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 55: | 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 69: | 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 83: | 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 105: | 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 119: | 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 132: | 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 143: | 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 154: | 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 | + | |